У меня две сетевые карты. eth0 подключен к Интернету, а eth1 подключен к локальной сети.
Я хочу ограничить лимит загрузки с помощью iptables и linux tc.
Поэтому я написал тестовый сценарий, чтобы проверить, работает ли он.
Моя конфигурация iptables приведена ниже.
iptables -t mangle -N INBOUND
iptables -t mangle -I PREROUTING -i eth0 -j INBOUND
iptables -t mangle -A INBOUND -j MARK --set-mark 60
Моя конфигурация входа приведена ниже.
tc qdisc add dev eth0 handle 1: ingress
tc filter add dev eth0 parent 1: protocol ip prio 1 handle 60 fw police rate 100kbit burst 20kbit drop flowid :1
Подскажите, пожалуйста, чего мне здесь не хватает?
NIC -> INGRESS -> NETFILTER -> EGRESS -> NIC
(MARK)
Трафик в netfilter падает после прохождения входной дисциплины на интерфейсе, так что вашей отметке все равно.
Используйте tc filter ... u32.
Взгляните на Wonder Shaper:
http://lartc.org/wondershaper/
Это фантастическое использование tc для управления скоростью загрузки / выгрузки.