для приложения управления трафиком я должен ограничить пропускную способность для IP-адресов клиентов, которые для каждого IP-адреса имеют разные ограничения
как можно использовать tc-tbf для определенного IP-адреса
или есть другое решение?
Чтобы ограничить пропускную способность отдельных IP-адресов, я использовал HTB. Вот несколько полезных ссылок:
В качестве простого примера, чтобы ограничить полосу пропускания отдельных IP-адресов, хранящихся в переменной оболочки CLIENT_IP, с такими ограничениями, как:
Приведенных ниже команд будет достаточно:
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbps ceil 1500kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1kbps ceil 2kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 100kbps ceil 200kbps
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src ${CLIENT_IP} flowid 1:11
Ограничение полосы пропускания клиента, частично связанное с вашим вопросом, вряд ли является лучшим решением, поскольку оно должно осуществляться индивидуально для каждого клиента. Вы можете указать максимальную пропускную способность, которую может использовать любой отдельный клиент, а не указывать по IP-адресу.
Лучшим вариантом будет QoS и указание разных приоритетов для служб в зависимости от типа трафика.
Насколько мне известно, вы не можете использовать tc-tbf для определенного IP-адреса.
Если вы просто пытаетесь повысить производительность, прочтите эту статью.
http://lists.debian.org/debian-firewall/2005/07/msg00088.html
через несколько дней я сделаю это
Я использую его для openvpn через freeradius
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate "LineBandwidth"kbit
tc class add dev br0 parent 1:1 classid 1:10 htb rate "MinUserBand"kbit ceil "MaxUserBand"kbit prio 2 #----- bandwidth and classid
tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10 #----- MarkID1 and classId
iptables -t mangle -A POSTROUTING -d "RealUserIP" -j MARK --set-mark 10 #----- RealIP and markID1
tc qdisc add dev br0 ingress
tc filter add dev br0 parent ffff: protocol ip handle 50 fw police rate "MinUserBand"kbit mtu 12k burst 10k drop #----- BandWidth and MarkID2
iptables -t mangle -A PREROUTING -s "RealUserIP" -j MARK --set-mark 50 #----- RealIP and MarkID2
В этой статье описывается, как можно использовать iptables для ограничения скорости новых подключений: http://www.debian-administration.org/articles/187
Вы можете отказаться от проверки состояния для NEW и вместо этого ограничить ее исходным IP.