У меня есть сервер под управлением 12.04, настроенный как модем. DHCP, NAT и т. Д.
Мне нужно знать, как уменьшить скорость одного IP-адреса в сети или установить скорость каждого отдельного IP-адреса.
Моя проблема в том, что GF моего брата работает круглосуточно, делая мой интернет ужасно медленным. Попросить ее остановиться не сработало, и теперь мне нужно контролировать ее связь.
Я думаю, что мои варианты либо ограничить ее, скажем, 4 Мбит / с вниз и 300 Кбит / с вверх ... или бросить QoS на нее. Я понятия не имею, как это сделать.
Я рекомендую прочитать Linux Advanced Routing & amp; Traffic Control HOWTO , в частности примеры на ограничения скорости для одного хоста или сетевой маски и полного решения nat с QoS .
По сути, вы должны сделать следующее:
PREROUTING
таблицы mangle
Непроверенный, но что-то вроде этого (не стесняйтесь редактировать, если заметите ошибку):
iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.666 -j MARK --set-mark 1
tc qdisc add dev ppp0 root handle 1: cbq avpkt 1000 bandwidth 10mbit
tc class add dev ppp0 parent 1: classid 1:1 cbq rate 512kbit \
allot 1500 prio 5 bounded isolated
tc filter add dev ppp0 parent 1: protocol ip prio 1 handle 1 fw classid 1:1
Обратите внимание, что вы не можете напрямую использовать tc filter
для фильтрации по IP-адресу этого хоста, поскольку tc-фильтр применяет после NAT, поэтому он будет видеть ваш публичный IP-адрес, который нельзя использовать для дифференциации пакета.
Обычно вы ограничиваете скорость восходящих пакетов, так как там у вас больше всего контроля, и, поскольку на обычной линии ADSL восходящий поток легче насыщается трафиком p2p. Если вы хотите, вы также можете попытаться ограничить скорость нисходящего потока, умышленно отбрасывая пакеты. Это можно сделать, используя другую настройку управления трафиком, на этот раз для пакетов, пересылаемых через локальное сетевое устройство.