我正在尝试按此处编写的那样在 Linux网关上设置流量整形。由于我具有多个LAN接口,因此需要自定义脚本。因此,为了塑造LAN端,我打算创建一个ifb伪设备,如下所示:
modprobe ifb
ip link set dev ifb0 up
/sbin/tc qdisc add dev $WAN_INTERFACE ingress
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
上述要点回购中的脚本具有以下几行:
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip sport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 1 u32 match ip dport $INTERACTIVE_PORT 0xffff flowid :1
/sbin/tc filter add dev $WAN_INTERFACE parent ffff: protocol ip prio 5 0 u32 match ip src 0.0.0.0/0 police rate $MAX_DOWNRATE_INGRESS burst 20k drop flowid :2
这段代码与ifb接口创建代码结合得不好。自定义脚本被执行,但是ifb0设备不显示任何流量统计信息。如果我注释掉入口要点回购代码(上面引用),则ifb0设备将显示已传输的数据包数量。这些行也不能一起执行:
/sbin/tc qdisc add dev $WAN_INTERFACE ingress
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
我得到文件存在错误。那么,我该如何调整WAN_INTERFACE上的入口,同时又调整通过ifb0设备进入LAN的流量?