Linux-Networking
通過 iptables 處理 tc 警察速率數據包?
我想將任何 IP 的下載速度限制為 800kbit,(這可行)並且我想將標記數據包的下載速度限制為 400kbit。
我沒有收到任何錯誤,但它不會限制標有數字 30 的數據包的下載速度。我已使用 iptables-save -c 確認數據包已正確標記。所以我認為我的過濾句柄 30 的過濾器語法是錯誤的,即使沒有錯誤。
/sbin/tc qdisc add dev $DEV handle ffff: ingress /sbin/tc filter add dev $DEV parent ffff: prio 40 protocol ip handle 30 fw police rate 400kbit burst 10k drop flowid :1 #slightly different order of parameters, also doesn't work /sbin/tc filter add dev $DEV parent ffff: protocol ip prio 40 handle 30 fw police rate 400kbit burst 10k drop flowid :1 #if I set the priority to 50 then I get an error saying "We have an error talking to the kernel" #kernel is 4.4.50 /sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 800kbit burst 10k drop flowid :1
類似的 tc 命令(標記數據包的監管率)作為以下範例給出
$TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 1 fw police rate 1kbit burst 40 mtu 9k drop flowid :1
http://linuxdocs.org/HOWTOs/Adv-Routing-HOWTO-14.html 同樣的範例也出現在這裡 https://www.iplocation。淨/lartc-ddos如果我手動為特定 IP 添加另一個規則,其優先級高於總括或更低優先級,那麼我可以將速度限制為 400kbit/s。但我想限制 iptables 標記/損壞的數據包的速度。
這是一組有效的命令,但問題是標記是在處理入口 qdisc 之後發生的。