Roman Pogosyan Опубликовано: January 13, 2012 at 15:15 Опубликовано: January 13, 2012 at 15:15 Забыл в теме указать (косяк) 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 ACCEPTCOMMIT# Completed on Fri Jan 13 17:44:49 2012[code] зы (можете пинать)
Roman Pogosyan Опубліковано: January 14, 2012 at 08:47 Автор Опубліковано: January 14, 2012 at 08:47 пну сам себя , при таком раскладе можно отожрать весь свой канал 1-ой закачкой на максимальной скорости а том жаловатся что пинг за 3000 заходит .. надо привинтить tc qdisc add dev eth1 parent 1:10 handle 10 sfq perturb 10 только вот никак не допру это для каждого надо делать или для 1 интерфейса целиком хватит ? до меня никак четко не дойдет принцип иерархии тц
dummy Опубліковано: March 13, 2012 at 13:54 Опубліковано: March 13, 2012 at 13:54 а локальный трафик ?
dummy Опубліковано: March 13, 2012 at 13:56 Опубліковано: March 13, 2012 at 13:56 расскажи, плиз, как настраивать accell-ppp поподробней, если возможно
Roman Pogosyan Опубліковано: March 13, 2012 at 15:11 Автор Опубліковано: March 13, 2012 at 15:11 accel-ppp tak ze kak vpn ... lokal'nyj trafik ne poshejpish ... razve chto s trafik na router
dummy Опубліковано: March 15, 2012 at 18:23 Опубліковано: March 15, 2012 at 18:23 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 - такой номер не проходит, вот и спрашиваю потому
Roman Pogosyan Опубліковано: March 16, 2012 at 08:39 Автор Опубліковано: March 16, 2012 at 08:39 V accel-ppp если именоо "ППП" там есть раздел [radius] там надо и настраивать ... у него свой радиус клиент без плугина radius.so
Br0vaMan Опубліковано: March 16, 2012 at 10:11 Опубліковано: March 16, 2012 at 10:11 accel-ppp tak ze kak vpn ... lokal'nyj trafik ne poshejpish ... razve chto s trafik na router ЯЗЫК ONLY тайвань?? poshejpish ели понял что это пошейпиш )
dummy Опубліковано: March 16, 2012 at 19:43 Опубліковано: March 16, 2012 at 19:43 V accel-ppp если именоо "ППП" там есть раздел [radius] там надо и настраивать ... у него свой радиус клиент без плугина radius.so я понимаю, что нарываюсь на взрыв негодований, но прошу поподробней рассказать о настройке: с rlm_stg - все понятно, как подружить stg+rlm_stg c accel-ppp ?
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас