Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Шейпинг трафика с помощью tc в ubuntu (http://forum.oszone.net/showthread.php?t=130858)

Spooner 03-02-2009 22:09 1028779

Шейпинг трафика с помощью tc в ubuntu
 
Народ, прошу помощи. Маны читал, возможно не слишком усердно, но не выходит каменный цветок.

Есть домовая локалка на 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 1029048

Более того, беру рабочий скрипт с рабочей машины приятеля, меняю наименование интерфейсов, меняю адрес, который надо шейпить - для теста и 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 1029274

может модуль для /dev/head подгрущить? :) извните

Spooner 04-02-2009 16:40 1029279

Странно. Вопрос задал адекватный, а вот ответ - глупый. Нормальный ответ есть?

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

KT315 21-02-2010 20:41 1352801

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


Время: 00:50.

Время: 00:50.
© OSzone.net 2001-