В офисе использую route2 для маршрутизации подсетей на два разных провайдера. Маркерую сети при помощи MARK в iptables и использую правила маршрутизации ip rule. Всё работает нормально. Решил используя те же метки сделать распределение скорости.
Шлюз Ubuntu Server 11.10. eth0 локальная сеть. ppp0 PPPoE от провайдера.
Локальная сеть офиса 192.168.0.0/24. Сеть для IT отдела 192.168.0.96/29.
В Iptables маркировка выглядит так:
iptables -t mangle -A PREROUTING -s 192.168.0.96/29 ! -d 192.168.0.0/16 -j MARK --set-mark 105
iptables -t mangle -A PREROUTING -s 192.168.0.96/29 ! -d 192.168.0.0/16 -j REURN
(Вот тут сразу вопрос: в описании HTB сказано, что он накладывает ограничения на очереди только ИСХОДЯЩИХ пакетов, т.е. если трафик идёт из интернета и то после обратного преобразования адресов в NAT при передаче пакета локальному компьютеру у пакета будет стоять адрес получателя локальной сети и этот пакет не пометится?
Как быть если помимо NAT я использую SQUID как прозрачный прокси?
iptables -t nat -A PREROUTING -i eth0 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128
)
Натим маркерованные пакеты.
iptables -t nat -A POSTROUTING -m mark --mark 105 -j SNAT --to-source ВНЕШНИЙ_АДРЕС_ШЛЮЗА
Скачал скрипт инициализации шейпера. Положил в /etc/init.d/htb поправил пути к файлам конфигурации и кеша. Создал файлы:
eth0
Код:
DEFAULT=100
R2Q=100
eth0-2.full_100Mbit
Код:
RATE=100Mbit
eth0-2:100.default
Код:
RATE=1Kbit
CEIL=100Kbit
LEAF=sfq
PRIO=30
eth0-2:3.it
Код:
BURST=50Kb
RATE=1Mbit
CEIL=1Mbit
LEAF=sfq
PRIO=1
MARK=105
По идее при таком раскладе у меня должна скрорость на подсеть быть не более 1Mbit/s, но это не получается сделать трафик ограничивается дефолнтым классом. Если в классе it прописать вместо MARK 105 RULE 192.168.0.96/29 скорость ограничивается.
Скорее всего проблема с маркировкой пакетов в iptables. Пробовал добавить следующие правила
iptables -t mangle -A PREROUTING -d 192.168.0.96/29 -j MARK --set-mark 105
iptables -t mangle -A PREROUTING -d 192.168.0.96/29 -j RETURN
Ситуация не изменилась.
