Есть маршрутизатор на основе линус с несколькими интерфейсами (пусть 6, от eth0 до eth5) Нужно по критерию протокол-порт (пусть tcp, destination port 12345) маркировать трафик, входящий с нескольких из них. Пусть c eth1,eth2,eth4,eth5, с eth0 и eth3 - не надо.
Вроде все просто. Пишем соотвествующее количество правил в таблицу mangle:
-A PREROUTING -i eth1 -p tcp -m tcp --dport 12345 -j MARK --set-xmark 0x10/0xffffffff
-A PREROUTING -i eth2 -p tcp -m tcp --dport 12345 -j MARK --set-xmark 0x10/0xffffffff
-A PREROUTING -i eth4 -p tcp -m tcp --dport 12345 -j MARK --set-xmark 0x10/0xffffffff
-A PREROUTING -i eth5 -p tcp -m tcp --dport 12345 -j MARK --set-xmark 0x10/0xffffffff
Вопрос - как заменить эти 4 записи на одну? Т.е. не 4 раза «маркировать с порта ethХ» а один раз «маркировать со всех портов кроме eth0, eth3»
Если бы было нужно со всех портов, кроме eth0, то опять все просто
-A PREROUTING ! -i eth0 -p tcp -m tcp --dport 12345 -j MARK --set-xmark 0x10/0xffffffff
а вот как сформулировать для iptables «не с порта eth0 и не с порта eth3» ? Вроде как-то можно использовать and в правилах, но синтаксис не очевиден. Примеры пытался погуглить - не нашел.