Netzwerkübersetzung, eins zu eins, nicht eins zu vielen

Netzwerkübersetzung, eins zu eins, nicht eins zu vielen

Gewünschtes Szenario: ein kleines Subnetz von Linux-Rechnern, die alle über einen anderen Linux-Rechner (der als IP-Router fungiert) erreichbar sind. Diese Rechner wären mit Adressen in einem privaten Netzwerk (192.168.xx oder 10.xxx) vorkonfiguriert. Jeder wäre jedoch über den Routing-Rechner erreichbar, wobei für jeden Rechner eine öffentliche IP-Adresse konfiguriert ist.

Dies wäre ähnlich wie NAT oder IP-Masquerading, allerdings mit separaten öffentlichen IP-Adressen. (Man kann davon ausgehen, dass das öffentliche Netzwerk eine Gateway-Adresse hat: externer Router.)

Es scheint, als ob dies mit der Adressübersetzung machbar sein sollte, aber ich kann nicht herausfinden, wie ich das konfigurieren soll. Ich kann bei der Suche nichts finden.

Kann dies konfiguriert werden und wenn ja, wie?

Antwort1

Angenommen, IP_EXT1und IP_EXT2sind die externen IP-Adressen für die Maschinen Nr. 1 und Nr. 2 sowie IP_INT1und IP_INT2ihre jeweiligen internen IP-Adressen.

IP_EXT1 und IP_EXT2 sind tatsächlich Adressen der Routing-Maschine, entweder Aliase für dieselbe Netzwerkschnittstelle oder zwei unterschiedliche Schnittstellen.

Dann sollte die iptables-Konfiguration auf der Routing-Maschine so einfach sein wie (ungetestet):

iptables -t nat -A POSTROUTING --destination $IP_EXT1 -j DNAT --to-destination $IP_INT1
iptables -t nat -A POSTROUTING --source $IP_INT1 -j SNAT --to-source $IP_EXT1
iptables -t nat -A POSTROUTING --destination $IP_EXT2 -j DNAT --to-destination $IP_INT2
iptables -t nat -A POSTROUTING --source $IP_INT2 -j SNAT --to-source $IP_EXT2

verwandte Informationen