PDA

Показать полную графическую версию : Шейпинг трафика с помощью tc в ubuntu


Spooner
03-02-2009, 22:09
Народ, прошу помощи. Маны читал, возможно не слишком усердно, но не выходит каменный цветок.

Есть домовая локалка на eth0 10.0.0.0 и eth1 192.168.1.2, который уходит в DSL-модем 192.168.1.1. Из домовой локалки подключаются клиенты по pptp и получают адреса 192.168.1.10-20 ppp0, ppp1 и т.д.
Есть очень большое желание ограничивать им пропускную способность на уровне протокола с помощью lartc.

Далее привожу конфигурацию системы и не работающий скрипт tc. Подскажите, где "шляпа".

Linux aserv 2.6.28-6-server #16-Ubuntu SMP Mon Jan 26 21:05:48 UTC 2009 i686 GNU/Linux

eth0 Link encap:Ethernet HWaddr 00:a0:c5:b3:72:9f
inet addr:10.103.12.236 Bcast:10.103.12.255 Mask:255.255.255.0
inet6 addr: fe80::2a0:c5ff:feb3:729f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2696506 errors:0 dropped:0 overruns:0 frame:0
TX packets:3927143 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:366835077 (366.8 MB) TX bytes:315406768 (315.4 MB)
Interrupt:19 Base address:0xd400

eth1 Link encap:Ethernet HWaddr 00:20:ed:28:9e:a4
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::220:edff:fe28:9ea4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11377942 errors:0 dropped:0 overruns:0 frame:0
TX packets:9228073 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:889200661 (889.2 MB) TX bytes:1807112407 (1.8 GB)
Interrupt:17 Base address:0xd000


Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.7 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1
192.168.1.11 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.1.10 0.0.0.0 255.255.255.255 UH 0 0 0 ppp2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.103.12.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 10.103.12.2 255.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth1

И, собственно, сам скрипт tc (для начала пробую просто ограничить ширину канала между eth1 192.168.1.2 и DSL-модемом 192.168.1.1 до 256 кбит:
tc qdisc del dev eth1 root
tc qdisc add dev eth1 root handle 1: htb default 255
tc class add dev eth1 parent 1: classid 1:1 htb rate 256kbit ceil 256kbit
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.4 flowid 1:1

Spooner
04-02-2009, 12:01
Более того, беру рабочий скрипт с рабочей машины приятеля, меняю наименование интерфейсов, меняю адрес, который надо шейпить - для теста и 192.168.1.1 и 192.168.1.4 (ppp*) и 192.168.1.15 (мой pptp) - нифига не работает. Скрипт такой:

tc qdisc del dev eth1 root
tc qdisc add dev eth1 root handle 1: htb
tc class add dev eth1 parent 1: classid 1:1 htb rate 950Mbit
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 50000kbit
tc class add dev eth1 parent 1:2 classid 1:21 htb rate 8kbit ceil 8kbit
tc qdisc add dev eth1 parent 1:21 handle 21 sfq perturb 10
tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.1.15 flowid 1:21

Напрашивается вывод, может что-то в системе не так?
/dev/hands правил, не помогло :)

leonty
04-02-2009, 16:37
может модуль для /dev/head подгрущить? :) извните

Spooner
04-02-2009, 16:40
Странно. Вопрос задал адекватный, а вот ответ - глупый. Нормальный ответ есть?

Пока что решил на убунте через егойный wondershaper, который умееет шейпить только интерфейс, крон раз в минуту проверяет наличие ppp0, ppp1 и т.д., и при наличии шейпит его. Но это совсем не красиво :(

KT315
21-02-2010, 20:41
Spooner, конечно не красиво. Более того -- это костыль, который целую минуту НЕ шейпит трафик.
Таки нужно смотреть в сторону /etc/ppp/ip-up.
Я про wondershaper.




© OSzone.net 2001-2012