私はtcフィルタールールを持っています:
tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.3 flowid 1:14
このフィルタールールを「変更」しようとすると、エラーが発生します。
# tc filter change dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.2 flowid 1:14
# RTNETLINK answers: No such file or directory
# We have an error talking to the kernel
'replace'は新しいルールを追加しますが、古いルールを削除しないでください。
replace/changeコマンドの構文は正しいですか?
CentOS 6.4 iptables-1.4.7-9.el6.x86_64 iproute-2.6.32-23.el6.x86_64
完全なスクリプト:
tc qdisc add dev eth0 root handle 1:htb tc class add dev eth0 parent 1:classid 1:1 htb rate 1000Mbps tc class add dev eth0 parent 1:1 classid 1:11 htb rate 100Mbps tc class add dev eth0 parent 1:1 classid 1:12 htb rate 100Mbps tc class add dev eth0 parent 1: 1 classid 1:13 htb rate 100Mbps tc class add dev eth0 parent 1:1 classid 1:14 htb rate 100Mbps tc qdisc add dev eth0 parent 1:11 handle 10 :netem delay 0ms tc qdisc add dev eth0 parent 1:12 handle 20:netem delay 500ms tc qdisc add dev eth0 parent 1:13 handle 30:netem delay 1000ms tc qdisc add dev eth0 parent 1:14 handle 40:netem delay 1500ms tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.3 flowid 1:11 tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.8 flowid 1:12 tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.9 flowid 1:13 tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.7 flowid 1:14
私はあなたがこのようにそのためにハンドルを使わなければならないと思います:
Sudo tc filter change dev eth0 pref 1 protocol ip handle 800::800 u32 match ip dst 10.0.0.5 flowid 1:15
—このようにして、同じコマンドを異なるip dst
で発行でき、正常に適用されます。
P.S.ハンドルはtc show
で示されています。または、初めてルールを追加するときに指定できると思います。