Перейти до

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

Опубликовано:

Забыл в теме указать (косяк) 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 користувачів

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