ここに書かれているように、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デバイスはトラフィックの統計情報を表示しません。入力gistリポジトリコード(上記の引用)をコメントアウトすると、ifb0デバイスは転送されたパケットの数を表示します。また、これらの行は一緒に実行できません。
/sbin/tc qdisc add dev $WAN_INTERFACE ingress
/sbin/tc qdisc add dev $WAN_INTERFACE handle ffff: ingress
ファイルが存在するというエラーが表示されます。それで、WAN_INTERFACEでイングレスを形成し、同時にifb0デバイス経由でLANに向かうトラフィックを形成するにはどうすればよいですか?