LINUX.ORG.RU
ФорумAdmin

вопрос по шейперу

 , ,


0

1
┌─[mybox]─[/etc/htb]
└──╼ cat enp5s0
# eth0 device
DEFAULT=99
R2Q=100

┌─[mybox]─[/etc/htb]
└──╼ cat enp5s0-2.root
# root class containing total bandwidth
RATE=20Mbit
CEIL=20Mbit
BURST=1Mbit

┌─[mybox]─[/etc/htb]
└──╼ cat enp5s0-2:10.www
# class for WWW traffic
RATE=128Kbit
CEIL=20Mbit
PRIO=1
RULE=*:80,
RULE=*:443,
RULE=*:8008,
RULE=*:8080,
RULE=*:80
RULE=*:443
RULE=*:8008
RULE=*:8080
LEAF=sfq

┌─[mybox]─[/etc/htb]
└──╼ cat enp5s0-2:99.dfl
# class for all other traffic
RATE=128Kbit
CEIL=20Mbit
PRIO=7
LEAF=sfq

На выходе получается это:

└──╼ htb.init compile;/etc/init.d/htbinit reload;/etc/init.d/htbinit restart
/sbin/tc qdisc del dev enp5s0 root
/sbin/tc qdisc add dev enp5s0 root handle 1 htb default 99 r2q 100
/sbin/tc class add dev enp5s0 parent 1: classid 1:2 htb rate 20Mbit ceil 20Mbit burst 1Mbit
/sbin/tc class add dev enp5s0 parent 1:2 classid 1:10 htb rate 128Kbit ceil 20Mbit prio 1
/sbin/tc qdisc add dev enp5s0 parent 1:10 handle 10 sfq perturb 10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip sport 80 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip sport 443 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip sport 8008 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip sport 8080 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip dport 80 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip dport 443 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip dport 8008 0xffff classid 1:10
/sbin/tc filter add dev enp5s0 parent 1:0 protocol ip prio 100 u32 match ip dport 8080 0xffff classid 1:10
/sbin/tc class add dev enp5s0 parent 1:2 classid 1:99 htb rate 128Kbit ceil 20Mbit prio 7
/sbin/tc qdisc add dev enp5s0 parent 1:99 handle 99 sfq perturb 10

Теперь мне нужно классифицировать трафик из iptables:

$IPTABLES -t mangle -A POSTROUTING -p TCP --dport 80 -j CLASSIFY --set-class 1:10
$IPTABLES -t mangle -A POSTROUTING -p TCP --dport 443 -j CLASSIFY --set-class 1:10
Но не получается это сделать. В класс class htb 1:10 не попадают пакеты. Вообще не попадают. Что я делаю не так ?
┌─[mybox]─[/home/user]
└──╼ tc -s class show dev enp5s0
class htb 1:99 parent 1:2 leaf 99: prio 7 rate 128000bit ceil 20000Kbit burst 1600b cburst 1600b 
 Sent 190751 bytes 2201 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 1890 borrowed: 311 giants: 0
 tokens: -50980 ctokens: 9325
class htb 1:10 parent 1:2 leaf 10: prio 1 rate 128000bit ceil 20000Kbit burst 1600b cburst 1600b 
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 1562500 ctokens: 10000
class htb 1:2 root rate 20000Kbit ceil 20000Kbit burst 128Kb cburst 1600b 
 Sent 190751 bytes 2201 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 311 borrowed: 0 giants: 0
 tokens: 818512 ctokens: 9325

★★★★

Это все правила в iptables c ″-j CLASSIFY″? Счётчики у них растут? Попробуйте указать в этих правилах ″-o enp5s0″.

mky ★★★★★ ()
Ответ на: комментарий от mky

растут:

Chain POSTROUTING (policy ACCEPT 21214 packets, 1805K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 6728  665K CLASSIFY   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 CLASSIFY set 1:10
  201 28123 CLASSIFY   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 CLASSIFY set 1:10

Если к правилам добавить -o enp5s0, то не растут т.е перманентно равны нулю счетчики.

bryak ★★★★ ()
Ответ на: комментарий от bryak

Если enp5s0 - adsl-интерфейс, то ограничение скорости на нем даст почти не даст результата. Трафик приходящий из инета отдается роутером через LAN интерфейс типа ethX. Вот на нем и нужно шейпить в первую очередь.

Но это пока не объясняет причины непопадания траффика в класс/очередь

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1 )
Ответ на: комментарий от vel

enp5s0 - это интерфейс сетевой карты, а не интерфейс adsl.

bryak ★★★★ ()
Ответ на: комментарий от bryak

Ну, дак если с ″-o enp5s0″ счётчики не растут, значит через этот интерфейс этот трафик не идёт. Если только вы не опечатались в имени интерфейса. Попробуйте добавить:

iptables -t mangle -A POSTROUTING -p TCP --dport 80 -j LOG

и смотрите в логах какие пакеты попадают под это правило, там будет указан исходящий интерфейс.

А вобще, это как-то странно, шейпить трафик, идущий на 80 порт (на www-cервер), обычно шейпят исходящий, чтобы слишком быстро не скачивали с сервера, а что-бы сервер перегружали загрузкой файлов, как-то не совсем типично.

mky ★★★★★ ()
Ответ на: комментарий от mky

1) там интерфейс ppp0 идёт по логам. 2) я хочу шейпить для того, чтобы торренты не забивали канал и я мог нормально браузером пользоваться. Я это делаю на десктопе, а не на сервере.

bryak ★★★★ ()
┌─[mybox]─[/etc/htb]
└──╼ ls /etc/htb/
ppp0  ppp0-2:10.www  ppp0-2:99.dfl  ppp0-2.root

А вот так пакеты ходят так как надо ходить. Вопрос! Почему они не ходят на интерфейсе enp5s0 ?

bryak ★★★★ ()
Ответ на: комментарий от bryak

-=:=-

а почему на интерфейсе сетевой Ты пытаешся отловить Пакеты, которые впилены внутри ppp0???
Ты их не увидишь (ни 80 ни торрент-трафф).
На enp5s0 у тебя будет Локальный траффик до роутера!!, в котором будет и твой исходящий во вне (сиречь инет) трафик (если это не pppoe, то смотри какой порт у xl2tp или pptp), Упакованный внутри транспорт. протокола!! шейпи ппп0. На сетевухе ты разве что можешь в локалку шейпить исходящий или (ifb0) входящий так, чтобы он не перебивал твое (pppoe,xl2tp,pptp).

З.Ы. Тред особо не читал. Имхо - тут одни норкоманы.

KosmiK ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.