Почему не работают следующие команды для ограничения трафика на порт 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, если это имеет значение.

One Solution collect form web for “Почему не работают следующие команды для ограничения трафика на порт 21 с помощью tc?”

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

  • Нет класса трафика tc в интерфейсе моста
  • Альтернатива Iptables для фильтрации пакетов в интерфейсах OVS
  • Совместное использование нагрузки через несколько интерфейсов с использованием tc
  • Включен ли TCP PACING по умолчанию в linux?
  • Как проверить параметры, заданные с помощью команды tc?
  • Как я могу ограничить ширину полосы пропускания существующего процесса? (iptables, tc,?)
  • удалить tc-фильтр (Traffic Shaping)
  • Отложить некоторый трафик localhost
  • Разрешение пользователя управления трафиком
  • Справедливая классификация трафика с использованием TC
  • TCP-потоки, сосуществующие с UDP при использовании SFQ (стохастическая честная очередь)
  • Как ограничить количество соединений на хост, проходящих через маршрутизатор / мост?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.