У меня есть правило фильтра 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' добавляет новое, но не удаляет старое правило.
правильный ли синтаксис команды замены / изменения?
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
Я думаю, для этого вам нужно использовать handle, например:
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
, или, я думаю, вы можете указать их при добавлении правил в первый раз.