我想在tc中使用fwfilter强制任意延迟出站UDP数据包; 但是,我不能让filter正常工作:
tc qdisc add dev eth0 root handle 1: prio tc qdisc add dev eth0 parent 1:3 handle 30: netem delay 200ms tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 1 fw flowid 1:3 iptables -A PREROUTING -i eth0 -t mangle -p udp -j MARK --set-mark 1
如果我使用下面的u32filter,我会得到所需的效果:
tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dport 53 0xffff flowid 1:3
我不想使用u32filter,更麻烦的是我不能使用Ubuntu 10.04中的--ttl-set或者--set-tos manglers来工作。
这两者可能完全不相关,但是我担心这些数据包没有被iptables标记。 我一直无法findtesting标记的方法。
我结束了解决我的问题与iptables另一个function,而不是--set-mark :
iptables -t mangle -A POSTROUTING -o eth0 -p udp -j CLASSIFY --set-class 1:3
我希望这能帮助一个人,因为在完成这个看起来很简单的任务之前,我已经辛苦了一段时间了。
编辑:
安迪·史密斯是正确的,我应该已经标记了POSTROUTING链! 以下规则应与--set-mark :
iptables -A POSTROUTING -t mangle -p udp -j MARK --set-mark 1