Я пытаюсь создать два маршрута -
Send all packets with IP protocol version 100 to 1.1.1.1 (via device eth1)
Send all other IP packets to 2.2.2.2 (via device eth2)
Просматривая страницы руководства ip-route и ip-rules, кажется, что я должен иметь возможность это сделать, но я не Не удалось определить правильный синтаксис.
В этой статье есть пример того, как настроить маршрутизацию на основе политик, но он основан на исходном IP-адресе , а не на номере протокола ]: http://blog.scottlowe.org/2013/05/29/a-quick-introduction-to-linux-policy-routing/
Можно ли создать на основе протокола правила маршрутизации?
Это совершенно непроверено, но может быть что-то вроде этого? Этот метод использует маркировку брандмауэра.
# part ip packets with a value of 100 as a protocol
iptables -A PREROUTING -i eth0 -t mangle --proto 100 -j MARK --set-mark 1
# packets with that mark use tabpe 'p100'
ip rule add fwmark 1 table p100
# a route on table 'p100' to a gateway for that network
/sbin/ip route add default via 192.0.2.1 dev eth2 table p100
Смотрите: http://lartc.org/howto/lartc.netfilter.html
PS не забудьте отключить фильтрацию по обратному пути .
.