IP über virtuelle Schnittstelle weiterleiten

IP über virtuelle Schnittstelle weiterleiten

Ist es unter Linux möglich, alle Anfragen an eine bestimmte IP-Adresse über eine virtuelle Schnittstelle zu leiten, sodass sie am anderen Ende unter einer anderen IP-Adresse als der Haupt-IP-Adresse des Hosts erscheinen? Angenommen, der Host eth0hat die IP-Adresse 1.1.1.1, während eth0:1der Host die Adresse 1.1.1.2 hat. Wie kann ich dafür sorgen, dass alle Anfragen an 1.2.3.4 so aussehen, als kämen sie von eth0:1? Ich versuche Folgendes, aber es scheint nicht zu funktionieren:

route add 1.2.3.4 dev eth0:1

Antwort1

Ja.

Eine Möglichkeit hierfür wäre, mit IPTABLES die Pakete, die den Rechner mit mehreren IP-Adressen verlassen, so umzuschreiben, dass sie von der virtuellen Schnittstelle kommen. Versuchen Sie

/sbin/iptables -t nat -I POSTROUTING -d DEST.IP -j SNAT --to VIRTUAL.IP

(Sie müssen natürlich die virtuelle IP wie vorgesehen einrichten, d. h. eth0:1 oder eine gleichwertige Adresse muss vorhanden sein, damit der Datenverkehr den Weg zurück zur Maschine findet.)

Antwort2

Es kann notwendig sein, den Befehl zu verwenden

ip route add 1.2.3.4 dev eth0:1 src 1.1.1.2

oder routen Sie mit einer ähnlichen Option. Wenn das nicht wie erwartet funktioniert, benötigen Sie möglicherweise erweitertes Routing: Erstellen Sie eine zusätzliche Routing-Tabelle für dieses Ziel in /etc/iproute2/rt_tables, fügen Sie den obigen Eintrag als einzigen in diese Tabelle ein und aktivieren Sie diese Tabelle:

ip rule add to 1.2.3.4 priority 100 table to__1_2_3_4
ip route flush cache

Die verzweifelte letzte Lösung wäre Netfilter: Sie könnten SNAT mit iptables in der POSTROUTING-Kette verwenden, um die Quelladresse für Pakete an dieses Ziel neu zu schreiben.

verwandte Informationen