Ответ Дэвида Шварца превосходен, но вы можете немного упростить правила маршрутизации, имея только одну дополнительную таблицу и используя маршрут по умолчанию для другой. У меня есть сервер, который находится за двумя шлюзами NAT, и я недавно прошел процесс воссоздания этого сценария между кучей виртуальных машин. Моя /etc/network/interfaces
выглядит так:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.13.13
netmask 255.255.255.0
up ip route add table optus default via 192.168.13.10
up ip rule add from 192.168.13.213 table optus
up ip route add default via 192.168.13.11
auto eth0:0
iface eth0:0 inet static
address 192.168.13.213
netmask 255.255.255.0
(это для настройки, где два интернет-провайдера - Optus и iiNet, отсюда и название таблицы «optus»)
Это, плюс строка при /etc/iproute2/rt_tables
создании таблицы, должно быть всем, что вам нужно. У вас будет два IP-адреса; трафик с 192.168.13.13 будет выходить через 192.168.13.11, а трафик с 192.168.13.213 будет выходить через 192.168.13.10. Сконфигурируйте эти два шлюза для соответствующей переадресации портов (192.168.13.11 пересылает вещи в 192.168.13.13, а 192.168.13.10 пересылает вещи в 192.168.13.213), а остальные должны позаботиться о себе.
Возможно, вам придется немного подправить ситуацию для вашей ситуации, так как вы используете публичные IP-адреса напрямую, но что-то подобное должно работать. Кроме того, гораздо проще сделать эти вещи /etc/network/interfaces
и затем управлять git-файлом, а не пытаться вспомнить, как он был настроен, два года спустя, когда необходимо перезагрузить систему!