Zakładam, że używasz Linuksa, a ponadto korzystasz z dystrybucji opartej na RedHat / CentOS. Inne Uniksy i dystrybucje będą wymagały podobnych kroków - ale szczegóły będą inne.
Zacznij od przetestowania (zauważ, że jest to bardzo podobne do odpowiedzi @ Peter. Zakładam, że:
- eno0 to isp0 i ma ogólną domyślną bramę
- eno1 to isp1 i ma adres IP / zakres 192.168.1.2/24 z bramą 192.168.1.1
Polecenia są następujące:
$ 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
Zapora ogniowa nie jest w żaden sposób zaangażowana. Pakiety odpowiedzi zawsze były wysyłane z właściwego adresu IP, ale wcześniej były wysyłane za pomocą niewłaściwego interfejsu. Teraz te pakiety z poprawnego adresu IP będą wysyłane za pośrednictwem odpowiedniego interfejsu.
Zakładając, że powyższe zadziałało, możesz teraz wprowadzić trwałe zmiany reguły i trasy. Zależy to od używanej wersji Uniksa. Tak jak poprzednio, zakładam dystrybucję Linuksa opartą na 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
Sprawdź, czy zmiana sieci jest trwała:
$ ifdown eno1 ; ifup eno1
Jeśli to nie zadziała, w późniejszych wersjach RH / CentOS musisz także skorzystać z jednej z dwóch opcji:
- Nie używaj domyślnego NetworkManager.service ; Zamiast tego użyj network.service . Nie zbadałem dokładnych kroków niezbędnych do tego. Mogę sobie wyobrazić, że obejmuje standardową chkconfig lub systemctl nakazuje, aby włączyć / wyłączyć usługi.
- Zainstaluj pakiet NetworkManager-dispatcher-routing-rules
Osobiście wolę instalować pakiet reguł, ponieważ jest to prostsze i bardziej obsługiwane podejście:
$ yum install NetworkManager-dispatcher-routing-rules
Innym silnym zaleceniem jest włączenie filtrowania arp, ponieważ zapobiega to innym powiązanym problemom z podwójnymi konfiguracjami sieci. Za pomocą RH / CentOS dodaj następującą zawartość do pliku /etc/sysctl.conf:
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1