Ich habe einen Linux-Webserver mit 192.168.0.2/24, der eth0 zugewiesen ist, und 172.16.0.2/24, der eth1 zugewiesen ist. Ich darf das nicht ändern. Hier ist das bisherige Routing:
172.16.0.0/24 dev eth1 proto kernel scope link src 172.16.0.2
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
172.16.0.0/16 via 172.16.0.1 dev eth1
default via 192.168.0.1 dev eth0
Die Standardroute führt zum Internet, auf das der Computer zum Herunterladen zugreifen muss. Jetzt kommen auch Pakete (Anfragen) aus dem Internet über 172.16.0.254. Wie muss ich Routing-Tabellen und -Regeln einrichten, um diese Anfragen zu beantworten? iptables
ist hier nicht möglich.
Update: Scheint so, aber es sieht für mich nicht elegant aus:
ip r a 172.16.0.0/24 dev eth1 table 10
ip r a 172.16.0.0/16 via 10.16.0.1 t 10
ip r a default via 172.16.0.254 t 10
ip rule add from 172.16.0.2 t 10
ip rule add oif eth1 t 10
. B. ).Antworten:
Dies wird als einfaches quellenbasiertes Routing bezeichnet und im LARTC-HOWTO behandelt:
http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html
Wenn Sie das Kopieren und Einfügen des Inhalts der ursprünglichen Routing-Tabelle (ohne Standard-Gateway) als unelegant empfinden, müssen Sie dies nicht tun. Sie können ein einfaches Skript verwenden:
quelle
Ich denke du kannst nicht.
Wenn Anwendungen (Webserver) antworten, sind dies neue Pakete für den Kernel, die nur einer Routing-Tabelle folgen. Sie können nicht mehrere Standardgateways haben und eines auswählen, je nachdem, an welcher Schnittstelle ein Paket eingetroffen ist, das die Anwendung zum Senden dieser Antwort veranlasst hat.
Bitte verwenden Sie nur ein Standard-Gateway. Führen Sie NAT nicht in mehreren Subnetzen wie diesem aus. Ihr Netzwerkdesign ist hier fehlerhaft. Ja wirklich.
Und wenn Sie dies tun, dann erwarten Sie nicht, dass die Portweiterleitung hier Magie bewirken kann.
quelle