Как направить только конкретную подсеть (исходный IP) на конкретный интерфейс?

31

Как направить только конкретную подсеть (исходный IP) на конкретный интерфейс?
ОС: Linux

Я знаю, что могу легко сделать по IP-адресу назначения, используя что-то вроде

route add 1.2.3.4/24 dev eth4

но я не вижу, как можно маршрутизировать на основе исходного IP.

Alex
источник

Ответы:

30

Вам нужно использовать политику на основе маршрутизации. Что-то вроде

ip rule add from <source>/<mask> table <name>
ip route add 1.2.3.4/24 via <router> dev eth4 table <name>

<name>либо указано имя таблицы, /etc/iproute2/rt_tablesлибо вы можете использовать числовой идентификатор ...

Это в значительной степени говорит о том, что весь трафик 1.2.3.4/24будет направляться с использованием таблицы маршрутизации <name>. IIRC после этого не использует таблицу по умолчанию, поэтому, если вам нужны другие маршруты (т. Е. Шлюз по умолчанию), вам также необходимо добавить их в таблицу.

Лиса
источник
1
одно исправление (но не уверен, что ваш также будет работать. для второй команды: ip route add default dev eth4 table <name>( tableдиректива должна идти в конце, я думаю, точно так же, как в первой команде ... также defaultможет быть заменена подсетью, как в вашем примере )
Alex