tc没有看到标记的数据包

服务器有2个接口:

  • eth1,地址为13.0.0.254/24
  • eth0,地址为172.20.203.4/24。

它在这两个networking之间路由stream量。 任务是将这两个networking之间的带宽限制为1Vbit / sec,但不限制服务器和networking主机之间的带宽(即限制所有数据包通过FORWARD)

iptables -t mangle -A POSTROUTING -s 13.0.0.0/24 -d 172.20.203.0/24 -j MARK --set-mark 0x0001 iptables -t mangle -A POSTROUTING -s 172.20.203.0/24 -d 13.0.0.0/24 -j MARK --set-mark 0x0002 # eth1 tc qdisc add dev eth1 root handle 1:0 htb default 2 tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1000mbps ceil 1000mbps tc class add dev eth1 parent 1:1 classid 1:2 htb rate 999mbps ceil 1000mbps tc class add dev eth1 parent 1:1 classid 1:3 htb rate 1mbps tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10 tc qdisc add dev eth1 parent 1:3 handle 3:0 sfq perturb 10 tc filter add dev eth1 parent 1:0 handle 1 fw flowid 1:3 tc filter add dev eth1 parent 1:0 handle 2 fw flowid 1:3 # eth0 tc qdisc add dev eth0 root handle 1:0 htb default 2 tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1000mbps ceil 1000mbps tc class add dev eth0 parent 1:1 classid 1:2 htb rate 999mbps ceil 1000mbps tc class add dev eth0 parent 1:1 classid 1:3 htb rate 1mbps tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10 tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10 tc filter add dev eth0 parent 1:0 handle 2 fw flowid 1:3 tc filter add dev eth0 parent 1:0 handle 1 fw flowid 1:3 

这不起作用。 如果我在开始时使用这个:

 tc qdisc add dev eth1 root handle 1:0 htb default 3 tc qdisc add dev eth0 root handle 1:0 htb default 3 

有用。 所以问题是在filter设置。

 iptables -L -v -n -t mangle 

显示,数据包正在通过MARK规则。 我试图标记包不在POSTROUTING,但在前进或PREROUTING – 这不工作了。 我究竟做错了什么?

这里是一些诊断:

 # tc -s -d -r filter show dev eth0 filter parent 1: protocol [768] pref 49151 fw filter parent 1: protocol [768] pref 49151 fw handle 0x1 classid 1:3 filter parent 1: protocol [768] pref 49152 fw filter parent 1: protocol [768] pref 49152 fw handle 0x2 classid 1:3 # tc -s -d -r filter show dev eth1 filter parent 1: protocol [768] pref 49151 fw filter parent 1: protocol [768] pref 49151 fw handle 0x2 classid 1:3 filter parent 1: protocol [768] pref 49152 fw filter parent 1: protocol [768] pref 49152 fw handle 0x1 classid 1:3 

 modprobe xt_mark 

如果模块没有加载,iptables不会出现错误,但规则“-j MARK”不起作用