Перейти до

Скрипты OnConnect/OnDisconnect (С лимитами)


Рекомендованные сообщения

Забыл в теме указать (косяк) OS Linux

 

OnConnect

#! /bin/sh
sleep 1 #использую accel-ppp (не accel-pptp) там маленькая задержка между авторизацией и поднятием интерфейса. в других случаях можно удалить
# Login
LOGIN=$1
#user IP
IP=$2
#cash
CASH=$3
#user ID
ID=$4
#[b]ВНИМАНИЕ!!![/b] Наименование тарифа я не использую направления трафика по этому заменил этот параметр в коде (как сделать .. есть на форуме) или просто получить название тарифа другими способами (их туча)

TARIF=$5
#значение лимита скорость по умолчанию
speed="20mbit"
#определение скорости из названия тарифа (я просто добавил цену тарифа в название, а потом назначил ценам скорость удобнее чем перекидывать клиентов из тарифа в тариф ели скорость надо поменять)
TR=$(echo $TARIF|sed s/[^0-9]//g | head -c5)
if [ -z $TR ]
 then
	echo "User $LOGIN use free internet"  >> /var/log/freeusers.log # (на всякий случай чтоб знать если вдруг кого то не туда прописал)
 else
if [ "$TR" = "12000" ]
	then
	speed="4096kbit"
fi
if [ "$TR" = "5000" ]
	then
	speed="2097152bit"
fi
if [ "$TR" = "8000" ]
	then
	speed="3145728bit"
fi
fi
	TC=/sbin/tc
	DNLD=$speed  # скорость загрузки для клиента
	UPLD=$speed  #скорость передачи для клиента (отдельно на случай если решу сделать асинхронные каналы)

	mark=$ID
	mark=$(($ID+800)) #маркировки фильтров для того чтоб потом их можно было удалять
	USERFACE="eth1" # интерфейс по умолчанию

	MUSER_IFACE=`cat /var/stargazer/$IP` # в /etc/ppp/ip-up отдельным скриптом вписываем интерфейс для адреса (в случае ппп соединения)

   IFACETYPE=`echo $MUSER_IFACE | sed s/[^a-z]//g`
   if [ "$IFACETYPE" = "ppp" ]   #проверяем тип интерфейса
	then
	USERFACE=`cat /var/stargazer/$IP`
	U32="$TC filter add dev $USERFACE protocol ip parent 1:0 prio 1 u32"
	U32I="$TC filter add dev ifb0 protocol ip parent 1:0 prio 1 handle 800::$mark u32"
	 #добавляем на интерфейс шейпер для лимита загрузки клиента
	$TC qdisc add dev $USERFACE root handle 1: htb default 30 r2q 25
	#добавляем класс скорости для загрузки пользователя
	$TC class add dev $USERFACE parent 1: classid 1:1 htb rate $DNLD
	#заворачивает трафик от клиента на специально выделенный для этих целей интерфейс
	$TC qdisc add dev $USERFACE ingress handle ffff:
	$TC filter add dev $USERFACE parent ffff: protocol ip prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
	 #добавляем класс скорости для передачи пользователя
	$TC class add dev ifb0 parent 1:1 classid 1:1$ID htb rate $UPLD
		 #добавляем фильтры айпи пользователя

	$U32 match ip dst $IP/32 flowid 1:1
	$U32I match ip src $IP/32 flowid 1:1$ID
	else

		 #если клиент не ППП в принципе делаем то же самое только нет части с инициализацией архитектуры для eth1 и заворота приходящего на него трафика на ifb0 это делается при старте системы так как оно общее для всех клинтов

	$TC class add dev $USERFACE parent 1: classid 1:1$ID htb rate $DNLD
	U32E="$TC filter add dev $USERFACE protocol ip parent 1:0 prio 1 handle 800::$mark u32"
	U32I="$TC filter add dev ifb0 protocol ip parent 1:0 prio 1 handle 800::$mark u32"
	$TC class add dev ifb0 parent 1:1 classid 1:1$ID htb rate $UPLD
	$U32E match ip dst $IP/32 flowid 1:1$ID
	$U32I match ip src $IP/32 flowid 1:1$ID

	fi
#добавляем пользователя в сет для файрвола
   ipset -A NatUsers $IP

 

OnDisconnect

в приципе тут все на много легче (ломать не сторить)


#! /bin/sh


# Login
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

#[b]ВНИМАНИЕ!!![/b] Наименование тарифа я не использую направления трафика по этому заменил этот параметр в коде (как сделать .. есть на форуме) или просто получить название тарифа другими способами (их туча)
TARIF=$5

mark=$ID
mark=$(($ID+800))
#удаляем фильтры за ним классы.[b] ВАЖНО [/b]handle очень важен для удления фильров , если его не указывать, будут удалятся все фильтры для данного интерфейса (чтоб после дисконекта одного у всех лимиты не полетели)
tc filter del dev eth1  parent 1:0 protocol ip prio 1 handle 800::$mark u32
tc class  del dev eth1  parent 1: classid 1:1$ID
tc filter del dev ifb0  parent 1:0 protocol ip prio 1 handle 800::$mark u32
tc class  del dev ifb0  parent 1:1 classid 1:1$ID
ipset -D NatUsers $IP
rm -f /var/stargazer/$IP

 

 

ну и соответственно скрипты для создания ifb0 и файвола

при пуске системы


tc qdisc del dev ifb0 root 2>/dev/null >/dev/null
tc qdisc del dev ifb0 ingress  2>/dev/null >/dev/null
tc qdisc del dev eth1 root  2>/dev/null >/dev/null
tc qdisc del dev eth1 ingress  2>/dev/null >/dev/null
ip link set ifb0 up
tc qdisc add dev ifb0 root handle 1: htb  r2q 25
tc class add dev ifb0 parent 1: classid 1:1 htb rate 70Mbit cburst 3000
tc qdisc add dev eth1 root handle 1: htb  r2q 25
tc class add dev eth1 parent 1: classid 1:1 htb rate 70Mbit cburst 3000
tc qdisc add dev eth1 ingress handle ffff:
tc filter add dev eth1 parent ffff: protocol ip prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
ipset -N NatUsers iphash
iptables-restore </etc/iptables.up.rules

 

 

iptables.up.rules

# Generated by iptables-save v1.4.10 on Fri Jan 13 17:44:49 2012

*mangle

:PREROUTING ACCEPT [11010:6433764]

:INPUT ACCEPT [1182:107634]

:FORWARD ACCEPT [8662:6229748]

:OUTPUT ACCEPT [796:223489]

:POSTROUTING ACCEPT [8382:6328335]

COMMIT

# Completed on Fri Jan 13 17:44:49 2012

# Generated by iptables-save v1.4.10 on Fri Jan 13 17:44:49 2012

*nat

:PREROUTING ACCEPT [1904:146512]

:INPUT ACCEPT [74:7544]

:OUTPUT ACCEPT [68:4965]

:POSTROUTING ACCEPT [68:4965]

-A POSTROUTING -m set --match-set NatUsers src -j SNAT --to-source Мой_реальный_айпи

COMMIT

# Completed on Fri Jan 13 17:44:49 2012

# Generated by iptables-save v1.4.10 on Fri Jan 13 17:44:49 2012

*filter

:INPUT ACCEPT [860:81155]

#по умолчанию не транзитить трафик

:FORWARD DROP [593:100111]

:OUTPUT ACCEPT [563:187485]

#по правим MSS для ппп

-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#Разрешаем трафик только тем кто в таблице

-A FORWARD -m set --match-set NatUsers src -j ACCEPT

-A FORWARD -m set --match-set NatUsers dst -j ACCEPT

COMMIT

# Completed on Fri Jan 13 17:44:49 2012

[code]

 

 

зы (можете пинать)

Ссылка на сообщение
Поделиться на других сайтах

пну сам себя , при таком раскладе можно отожрать весь свой канал 1-ой закачкой на максимальной скорости а том жаловатся что пинг за 3000 заходит .. надо привинтить tc qdisc add dev eth1 parent 1:10 handle 10 sfq perturb 10 только вот никак не допру это для каждого надо делать или для 1 интерфейса целиком хватит ? до меня никак четко не дойдет принцип иерархии тц

Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...

accel-ppp tak ze kak vpn ... lokal'nyj trafik ne poshejpish ... razve chto s trafik na router

не так

я настраивал stg+radius+pppd+l2tpd - все получилось

там в настройках pppd указывалось:

plugin radius.so

 

а в accel-ppp - такой номер не проходит, вот и спрашиваю потому

Ссылка на сообщение
Поделиться на других сайтах

V accel-ppp если именоо "ППП" там есть раздел [radius] там надо и настраивать ... у него свой радиус клиент без плугина radius.so

я понимаю, что нарываюсь на взрыв негодований, но прошу поподробней рассказать о настройке:

с rlm_stg - все понятно, как подружить stg+rlm_stg c accel-ppp ?

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від Melanxolik
      Как многие уже знаю, символ: "З" является запрещенным на территории нашей страны, в связи с этим, возникло много проблем, особенно в довольно популярной файловой системе, которая звучит так: Зфс, она содержит у себя утилиты названия которых начинаются также с Зпул, Зфс и т.д.
      Как у нас сейчас с этим и кто-то уже пробовал пушить разрабов по этому поводу?
       
    • Від Rubert
      WorldVPS Solutions небольшой проект который предоставляет хостинг с бесплатным администрированием более 10-ти лет, у нас огромный опыт в подборе оборудования в лучших центрах обработки данных в мире с идеальным соотношением цена/качество.
       
      Мы предоставляем хостинг в таких странах как Нидерланды, Германия, США, Франция и Люксембург.
       
       
      VPS (Нидерланды, Германия, США и Франция):
       
      Virtualization KVM
      CPU Intel Xeon E5 1x2.6 GHz
      RAM 1 GB DDR4
      Disk 20 GB SSD RAID10
      Traffic unlimited
      Port 1000 Mbit
      IP 1 IPv4 + IPv6 on request
      From $13.00/mo
       
       
      VPS с большим дисков (США и Франция):
       
      2 vCores
      RAM 4 GB
      200 GB HDD or 100 GB SSD
      Port 100 Mbit/s
      1 IPv4 (up to 4 IP)
      From $19.00/mo
       
       
      Выделенный сервер в Нидерландах:
       
      Intel Core i3 2100 2 x 3.10 GHz
      4GB DDR3 RAM (up to 32 GB)
      1 TB or 120 GB (up to 16 TB)
      max 4 drives
      link 100 Mbit/s (up to 1 Gbit/s)
      50TB traffic per month
      1 IP (up to 4 IP)
      10Gbit/s protection DDoS Shield (FREE!)
      From $48.00/mo
       
      Выделенный сервер в Франции:
       
      AMD Opteron 3280, 8x 2.4 GHz Turbo
      16GB DDR3 RAM (up to 32 GB)
      2x2 TB HDD (up to SSD)
      max 2 drives
      link 100 Mbit/s
      1 IP (up to 4 IP)
      From $58.00/mo
       
      ---
       
      На сайте вы можете ознакомится со всеми возможными конфигурациями серверов.
       
      worldvps.ru
       
      *А так же для первых 10-ти заказов из форума local.com.ua мы предоставим бесплатно лицензию управления ISPmanager 6 Lite (кроме VPS с большим диском).
    • Від freedomwarrior
      Всем привет.
      Предоставляю услуги сетевика/админа.
      Что то починить, настроить bgp/ospf и т.д
      Если рухтеры то только Juniper.
      Серверное администрировани Linux/Unix, поднять веб сервер, починить и т.д.
      Настройка мониторинга с Grafana/Prometheus/Alertmanager и разного рода экспортеры.
      Кому интересно - пишите в личку.
      Только удаленка.
      Всем добра!
    • Від FTTH2
      Linux Foundation project homepage for DANOS:
      https://www.danosproject.org/
       
      Download link:
      https://danosproject.atlassian.net/wiki/spaces/DAN/pages/819201/Releases
       
      CGNAT Bulk Port Allocation HOWTO
      https://wiki.brasilpeeringforum.org/w/CGNAT_Bulk_Port_Allocation_com_DPDK
       
      Atom C3858 benchmark (4.5 Mpps, 10G at all packet sizes larger than 256B)
      https://old.reddit.com/r/networking/comments/ec8red/anyone_benchmarkuse_danos_the_att_and_brocade/fbhjy1s/
       
      AMD GX-412TC 1 GHz benchmark (2.3 Mpps, 2G using imix)
      https://ipng.ch/s/articles/2021/07/19/pcengines-apu6.html
       
      Any Xeon should be able to do 10G linerate at all packet sizes.
    • Від freehost
      В крупную хостинг-компанию требуется сотрудник службы технической поддержки.
       
      Обязанности:
      Отвечать на вопросы клиентов (работа с панелью управления, настройка POP3, SMTP, FTP, другие технические вопросы) по телефону, эл. почте, решать мелкие проблемы (неверно заполненные данные и настройки в контрольной панели, проблемы с доступом и т. п.), не сложные вопросы касающиеся администрирования, подключение IPKVM, перезагрузка серверов.
       
      Требования:
      Умение работать в Интернет с основными клиентами (браузеры: IE и Mozilla, почтовые клиенты: The bat, outlook, FTP-клиенты: IE, Far, Cute FTP; Базовые знания PHP, MySQL; Уметь читать и понимать логи Apache, Nginx, Exim Приветствуется опыт работы в Web-Дизайне, работа с Joomla, Wordpress Навыки работы в командной строке UNIX; Желателен опыт работы с VestaCP, ISPmanager Коммуникабельность, терпение, эмоциональная уравновешенность, способность к обучению.  
      Условия:
      Официальное трудоустройство 24 дня отпуска Обеды за счет компании Сменный график. Смена сутки, потом три дня выходных. Оплачиваемый больничный Возможность повышения до дежурного администратора. Работа в дата-центре (в случае локдаунов предусмотрена развозка сотрудников)
        Работа в дата-центре это возможность получить опыт работы с различными технологиями (apache, nginx, mysql, zabbix, wordpress, joomla, dns…), а так же опыт работы с железной частью серверов.
      Если нету опыта работы с Unix, резюме просьба не присылать.

      Резюме присылайте на hr@freehost.com.ua
×
×
  • Створити нове...