У нас имеется две сетевых интерфейса (или более), которые смотрят в разные подсети.
Нам нужно настроить для каждой сетевого интерфейса свой шлюз.
Для Ubuntu или Debian правим файл /etc/network/interfaces:
auto lo
iface lo inet loopback
## Первый интерфейс
auto eth0
iface eth0 inet static
address 192.168.10.10
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1
## Второй интерфейс
auto eth1
iface eth1 inet static
address 192.168.20.10
netmask 255.255.255.0
network 192.168.20.0
broadcast 192.168.20.255
post-up ip route add default via 192.168.20.1 table 101 proto static
post-up ip rule add from 192.168.20.10/32 table 101
Нужно выполнить команды добавления шлюза для второго и последующих интерфейсов (работает в Ubuntu, CentOS, RHEL и т. п.).
## Добавляем таблицу маршрутизации 101 с шлюзом 192.168.20.1
ip route add default via 192.168.20.1 table 101 proto static
## Добавляем правило маршрутизации, где все пакеты с IP 192.168.20.10 будут ходить по таблице 101
ip rule add from 192.168.20.10/32 table 101