平时不知道怎么生成 udp 流量,很多文档说 tc 只控制 tcp ,但是确实能命中 udp ,这么多年真不知道怎么验证 udp 流量控制是否有效。
tc 根据 htb 的 prio 优先级对不同的 dstport 进行优先级分级效果还是非常明显的,
udp_6060_0x10/0xff
tcp_992,1992,26241_0x10/0xff
udp_53,123_0x20/0xff
tcp_22,23,3389,8123_0x20/0xff
tcp_80,443,1080,1863,8080:8081,12000,14000,16285_0x30/0xff
udp_500,1701,4000:4030,4500,5989,8000:8001,16285_0x30/0xff
tcp_20,21,25,143,465,993,1024:65535_0x40/0xff
udp_1:65535_0x40/0xff
而且确实可以用 tc 来控制 30+40 分组上行流量到 95%,而且因为 prio 的存在,可以很好的让 p2p 流量避让常用的端口。
其它的针对单机不同端口像迅雷可以用这种 ddwrt 提供的方法
https://wiki.dd-wrt.com/wiki/index.php/Preventing_Brute_Force_Attacksiptables -N rate_limit
iptables -F rate_limit
iptables -A rate_limit -p tcp --dport 22 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A rate_limit -p udp --dport 1194 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A rate_limit -p ICMP --icmp-type echo-request -m limit --limit 3/sec -j ACCEPT
iptables -A rate_limit -p <protocol> --dport <port> -m limit --limit <x/sec/min/hr> --limit-burst X -j ACCEPT
iptables -A rate_limit -p ! ICMP -j LOG --log-prefix " Connection dropped!! "
iptables -A rate_limit -p tcp -j REJECT --reject-with tcp-reset
iptables -A rate_limit -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A rate_limit -j DROP