Почему не работают следующие команды для ограничения трафика на порт 21 с помощью tc?

В своем стремлении найти способ ограничить исходящую пропускную способность для работающего экземпляра bitcoind, я столкнулся с этим руководством, в котором объясняется, как оценивать ограничение трафика для определенного IP-адреса назначения:

tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 5 bounded isolated tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst 195.96.96.97 flowid 1:1 

Однако я не пытаюсь ограничить трафик определенным IP-адресом назначения, но и из определенного порта, поэтому я нашел это руководство, в котором рассказывается, как сопоставлять трафик с помощью источника и порта назначения:

 tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip dport 22 0xffff flowid 10:1 tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip sport 80 0xffff flowid 10:1 

Комбинация первого скрипта с сопоставлением портов второго сценария приводит меня к следующему набору команд, которые должны ограничивать исходящий трафик на порт от 21 до 160 кбит / с. Я сначала тестирую установку с использованием FTP, потому что ограничение биткойна, использующего порт 8333, не является оптимальным для тестирования, поскольку я не могу решить, когда будет отправлен трафик.

 tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 800kbit tc class add dev eth0 parent 1: classid 1:1 cbq rate 160kbit allot 1500 prio 5 bounded isolated tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dport 21 0xffff flowid 1:1 

Насколько я могу судить, это должно ограничивать исходящий трафик на порт 21 на интерфейсе eth0 с исходящей полосой пропускания от 800 кбит / с до 160 кбит / с, но он не работает:

 NetHogs version 0.8.0 PID USER PROGRAM DEV SENT RECEIVED 23653 rune filezilla eth0 102.609 2.978 KB/sec 

Соединение FTP состоит из двух соединений с портом 21:

 $ netstat -n|grep "21 " tcp 0 0 192.168.1.33:59967 194.192.207.26:21 ESTABLISHED tcp 0 0 192.168.1.33:59974 194.192.207.26:21 ESTABLISHED 

Что я делаю не так?

Я использую Ubuntu Raring, если это имеет значение.

  • Как проверить параметры, заданные с помощью команды tc?
  • TCP-потоки, сосуществующие с UDP при использовании SFQ (стохастическая честная очередь)
  • точка захвата пакетов для передачи данных
  • Совместное использование нагрузки через несколько интерфейсов с использованием tc
  • Есть несколько qdisc для каждого устройства, которое первым обрабатывает?
  • контролировать пропускную способность интерфейса с помощью tc или iptables
  • Как устройство IFB позиционируется в потоке пакетов ядра Linux
  • tc command linux
  • One Solution collect form web for “Почему не работают следующие команды для ограничения трафика на порт 21 с помощью tc?”

    Вам нужно как минимум два класса: один ограниченный и один «неограниченный». Чтобы вы могли отфильтровать один вид трафика в ограниченном классе и оставить все остальное. Если у вас есть только один класс, весь трафик ограничен.

    Linux и Unix - лучшая ОС в мире.