Я припускаю, що ви використовуєте Linux і, крім того, використовуєте дистрибутив на основі RedHat / CentOS. Інші Unix та дистрибуції потребують подібних кроків - але деталі будуть різними.
Почніть з тестування (зауважте, що це дуже схоже на відповідь @ Петра. Я припускаю наступне:
- 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-диспетчер-маршрутизація
Особисто я вважаю за краще встановлювати пакет правил, оскільки це простіший і більш підтримуваний підхід:
$ yum install NetworkManager-dispatcher-routing-rules
Ще однією наполегливою рекомендацією є включення фільтрування арп, оскільки це запобігає іншим пов'язаним проблемам з подвійною мережевою конфігурацією. За допомогою RH / CentOS додайте у файл /etc/sysctl.conf такий вміст:
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1