Назад | Перейти на главную страницу

ограничить пропускную способность сети для ip

для приложения управления трафиком я должен ограничить пропускную способность для IP-адресов клиентов, которые для каждого IP-адреса имеют разные ограничения

как можно использовать tc-tbf для определенного IP-адреса

или есть другое решение?

Чтобы ограничить пропускную способность отдельных IP-адресов, я использовал HTB. Вот несколько полезных ссылок:

В качестве простого примера, чтобы ограничить полосу пропускания отдельных IP-адресов, хранящихся в переменной оболочки CLIENT_IP, с такими ограничениями, как:

  • имя устройства = eth0
  • общая доступная / разрешенная для устройства пропускная способность = от 1000 кбит / с до 1500 кбит / с
  • пропускная способность по умолчанию (для клиентов, не попадающих в наши фильтры) = от 1 кбит / с до 2 кбит / с
  • пропускная способность CLIENT_IP = 100 кбит / с
  • Максимальная пропускная способность CLIENT_IP (при наличии большей пропускной способности) = 200 кбит / с

Приведенных ниже команд будет достаточно:

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://man.he.net/man8/tc-tbf

Если вы просто пытаетесь повысить производительность, прочтите эту статью.

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.