Решено: iptables+iproute2 (Ограничение скорости)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

Venegance
Сообщения: 119
ОС: Debian

Решено: iptables+iproute2

Сообщение Venegance »

Есть машина под управлением Debian Lenny. На ней - 2 интерфейса: eth0(локальная сеть) и eth1(в сторону провайдера). Интернт соединение - pptp. Соответственно, есть еще и интерфейс ppp0. Суть проблемы - не удаётся ограничить скорость соединения. Суммарная скорость - 512килобит. Необходимо для айпишников 192.168.2.162 и 192.168.2.163 дать каждому по 256килобит. что было сделано:

Код: Выделить всё

tc qdisc add dev eth0 root handle 1:0 cbq avpkt 10000 bandwidth 100mbit
tc qdisc add dev ppp0 root handle 2:0 cbq avpkt 10000 bandwidth 512kbit
tc class add dev eth0 parent 1:0 classid 1:101 cbq rate 256kbit allot 1500 bounded isolated
tc class add dev ppp0 parent 2:0 classid 2:201 cbq rate 256kbit allot 1500 bounded isolated
tc filter add dev eth0 parent 1:0 protocol ip handle 101 fw flowid 1:101
tc filter add dev ppp0 parent 2:0 protocol ip handle 201 fw flowid 2:201
На внешнем и внутреннем интерфейсе создал очереди(2 первых правила), определил классы с фиксированным ограничением(2 вторых правила), определил параметры фильтрации(каким пакетам в какую очередь попадать) - 2 последних правила.
В таблице mangle определил параметры маркировки:

Код: Выделить всё

iptables -t mangle -A POSTROUTING -d 192.168.2.162 -s ! 192.168.0.0/21 -j MARK --set-mark 201
iptables -t mangle -A POSTROUTING -d 192.168.2.163 -s ! 192.168.0.0/21 -j MARK --set-mark 201
iptables -t mangle -A PREROUTING  -s 192.168.2.162 -d ! 192.168.0.0/21 -j MARK --set-mark 101
iptables -t mangle -A PREROUTING  -s 192.168.2.163 -d ! 192.168.0.0/21 -j MARK --set-mark 101
Пакеты маркируются, о чем свидетельствуют счетчики в iptables. Где я ошибся?
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Решено: iptables+iproute2

Сообщение danger08 »

Venegance писал(а):
25.09.2009 20:28

Код: Выделить всё

tc qdisc add dev eth0 root handle 1:0 cbq avpkt 10000 bandwidth 100mbit
tc qdisc add dev ppp0 root handle 2:0 cbq avpkt 10000 bandwidth 512kbit
tc class add dev eth0 parent 1:0 classid 1:101 cbq rate 256kbit allot 1500 bounded isolated
tc class add dev ppp0 parent 2:0 classid 2:201 cbq rate 256kbit allot 1500 bounded isolated
tc filter add dev eth0 parent 1:0 protocol ip handle 101 fw flowid 1:101
tc filter add dev ppp0 parent 2:0 protocol ip handle 201 fw flowid 2:201

...

Код: Выделить всё

iptables -t mangle -A POSTROUTING -d 192.168.2.162 -s ! 192.168.0.0/21 -j MARK --set-mark 201
iptables -t mangle -A POSTROUTING -d 192.168.2.163 -s ! 192.168.0.0/21 -j MARK --set-mark 202
iptables -t mangle -A PREROUTING  -s 192.168.2.162 -d ! 192.168.0.0/21 -j MARK --set-mark 101
iptables -t mangle -A PREROUTING  -s 192.168.2.163 -d ! 192.168.0.0/21 -j MARK --set-mark 102

Приведите список класов шейпера полностью.
А то у вас в mangle маркируется по меткам, которые не описаны правилами шейпера (102, 202..)
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Venegance
Сообщения: 119
ОС: Debian

Re: Решено: iptables+iproute2

Сообщение Venegance »

Код: Выделить всё

tc qdisc add dev eth0 root handle 1:0 cbq avpkt 10000 bandwidth 100mbit
tc qdisc add dev ppp0 root handle 2:0 cbq avpkt 10000 bandwidth 512kbit
tc class add dev eth0 parent 1:0 classid 1:101 cbq rate 256kbit allot 1500 bounded isolated
tc class add dev ppp0 parent 2:0 classid 2:201 cbq rate 256kbit allot 1500 bounded isolated
tc filter add dev eth0 parent 1:0 protocol ip handle 101 fw flowid 1:101
tc filter add dev ppp0 parent 2:0 protocol ip handle 201 fw flowid 2:201
iptables -t mangle -A POSTROUTING -d 192.168.2.162 -s ! 192.168.0.0/21 -j MARK --set-mark 201
iptables -t mangle -A POSTROUTING -d 192.168.2.163 -s ! 192.168.0.0/21 -j MARK --set-mark 201
iptables -t mangle -A POSTROUTING -d 192.168.7.10 -s ! 192.168.0.0/21 -j MARK --set-mark 201
iptables -t mangle -A PREROUTING  -s 192.168.2.162 -d ! 192.168.0.0/21 -j MARK --set-mark 101
iptables -t mangle -A PREROUTING  -s 192.168.2.163 -d ! 192.168.0.0/21 -j MARK --set-mark 101
iptables -t mangle -A PREROUTING  -s 192.168.7.10 -d ! 192.168.0.0/21 -j MARK --set-mark 101
Прошу прощения, немного не туда глянул.
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Решено: iptables+iproute2

Сообщение danger08 »

Создайте классы для каждого клиента отдельно, и разведите обоих клиентов по разным классам. Потом, в каждом классе, ограничивайте поток для конкретного клиента.
Имена интерфейсов, на которые установлены правила шейпера, сейчас соответствуют реальности с точностью до наоборот ;) Пакеты у вас, конечно будут маркироваться - но правила шейпера не работают. Смотрите, что требуется сделать:

1) маркировать пакет в PREROUTING, идущий от клиента (-s 192.168.x.x) - и привязать его к классу шейпера на ppp0. Таким образом, мы ограничим входящий от клиента трафик, исходящий к провайдеру ("upload speed" в терминах клиента);

2) маркировать пакет в POSTROUTING, предназначенный клиенту (-d 192.168.x.x) - и привязать его к классу шейпера на eth0. Так мы ограничим канал, исходящий к клиенту ("download speed" для него).

И еще совет: попробуйте HTB, настройки нисколько не сложней - но канал будет использоваться более рационально.
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Venegance
Сообщения: 119
ОС: Debian

Re: Решено: iptables+iproute2

Сообщение Venegance »

Большое спасибо! Закрывайте тему.
Спасибо сказали: