Я знаю, как формировать задержку и пропускную способность отдельно. Для пропускной способности я могу сделать
wondershaper etho0 100 100
для задержки я могу бежать
tc qdisc add dev eth0 root netem delay 200ms
Однако мне нужно ограничить формирование определенными IP-соединениями, и мне нужно одновременно формировать задержку и полосу пропускания.
Как я могу это сделать?
Вы можете использовать tc для формирования пропускной способности вот так
Этот класс будет формировать определенные адреса с определенной скоростью. Нам также необходимо настроить фильтр, чтобы любые пакеты, помеченные как таковые, проходили через это правило.
tc class add dev eth0 parent 1:1 classid 1:5 htb rate 256kbps ceil 256kbps prio 1
tc filter add dev eth0 parent 1:0 prio 1 handle 5 fw flowid 1:5
После того, как этот класс настроен, вам необходимо настроить iptables, чтобы пометить конкретные пакеты, которые вы хотите сформировать.
Затем создайте необходимую таблицу mangle.
iptables -t mangle -N shaper-out
iptables -t mangle -N shaper-in
iptables -t mangle -I PREROUTING -i eth0 -j shaper-in
iptables -t mangle -I POSTROUTING -o eth0 -j shaper-out
Затем установите метки, которые нам нужны для формирования определенных IP-адресов. метка 5 имеет форму 256.
iptables -t mangle -A shaper-out -s 10.0.0.5 -j MARK --set-mark 5
iptables -t mangle -A shaper-in -d 10.0.0.5 -j MARK --set-mark 5
Это должно формировать от 10.0.0.5 до 256 Кбит / с.
Ссылка (мой блог) - http://sirlagz.net/2013/01/27/how-to-turn-the-raspberry-pi-into-a-shaping-wifi-router/