Я предполагаю, что вы используете Linux и, кроме того, что вы используете дистрибутив RedHat / CentOS. Другие Unix и дистрибутивы потребуют аналогичных шагов - но детали будут другими.
Начните с тестирования (обратите внимание, что это очень похоже на ответ @ Peter. Я предполагаю следующее:
- eno0 isp0 и имеет общий шлюз по умолчанию
- eno1 isp1 и имеет IP / диапазон 192.168.1.2/24 со шлюзом 192.168.1.1
Команды следующие:
$ echo 200 isp1 >> /etc/iproute2/rt_tables
$ ip rule add from eno1 table isp1
$ ip route add default via 192.168.1.1 dev eno1 table isp1
Брандмауэр никак не задействован. Ответные пакеты всегда отправлялись с правильного IP-адреса, но ранее отправлялись через неправильный интерфейс. Теперь эти пакеты с правильного IP будут отправлены через правильный интерфейс.
Предполагая, что вышесказанное сработало, теперь вы можете сделать правило и изменения маршрута постоянными. Это зависит от того, какую версию Unix вы используете. Как и прежде, я предполагаю, что дистрибутив Linux основан на RH / CentOS.
$ echo "from eno1 table isp1" > /etc/sysconfig/network-scripts/rule-eno1
$ echo "default via 192.168.1.1 dev eno1 table isp1" > /etc/sysconfig/network-scripts/route-eno1
Проверьте, что изменение сети является постоянным:
$ ifdown eno1 ; ifup eno1
Если это не сработало, в более поздних версиях RH / CentOS вам также нужно выбрать один из двух вариантов:
- Не используйте по умолчанию NetworkManager.service ; Вместо этого используйте network.service . Я не исследовал точные шаги, необходимые для этого. Я полагаю, что для включения / выключения служб используются стандартные команды chkconfig или systemctl .
- Установите пакет NetworkManager-dispatcher-routing-rules
Лично я предпочитаю устанавливать пакет правил, так как это более простой и поддерживаемый подход:
$ yum install NetworkManager-dispatcher-routing-rules
Еще одна сильная рекомендация - включить фильтрацию arp, поскольку это предотвращает другие связанные с двойной сетью проблемы. С помощью RH / CentOS добавьте следующее содержимое в файл /etc/sysctl.conf:
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1