[LINUX] Übersetzen Sie den IP-Adressbereich 1: 1 in ein anderes Subnetz

Was du machen willst

Ich habe zwei Netzwerke verbunden, kann jedoch aufgrund doppelter IP-Adressen kein direktes Routing einrichten. Daher möchte ich die IP des Verbindungsziels in einen nicht verwendeten IP-Bereich konvertieren.

Angenommenes Netzwerk

Zwei Linux-Server GW1 und GW2 wurden verbunden, um Host H1 (192.168.30.10) und H2 (192.168.1.10) zu kommunizieren. Da jedoch das 192.168.0.1 / 24-Subnetz, zu dem H2 gehört, in Netzwerk 2 verwendet wird, ist es nicht möglich, das direkte Routing für die Kommunikation auf GW1 einzustellen.

(Network 1)
    .10 192.168.30.0/24  .1     .1 192.168.1.0/24
[H1]======================[ GW1 ]================
               192.168.99.1 ||
                            ||
               192.168.99.2 ||
                       eth1 ||  .1 192.168.1.0/24  .10   
                          [ GW2 ]====================[H2] 
(Network 2)

Lösung

Durch die Verwendung von NETMAP von iptables wird die IP-Adresse von H2 aus Netzwerk 1 in ein anderes Subnetz konvertiert, das von Netzwerk 1 nicht verwendet wird.

Frühere Geschichte https://serverfault.com/questions/109569/iptables-massive-11-nat

Hier wird eine Adresskonvertierung durchgeführt, damit auf den Host in dem Subnetz, zu dem H2 gehört, mit 192.0.2.x / 24 zugegriffen werden kann.

Adresskonvertierung (192.168.1.0/24 <-> 192.0.2.0/24)

Fügen Sie GW2 die folgenden Einstellungen hinzu.

iptables -t nat -A PREROUTING -d 192.0.2.0/24 -i eth1 -j NETMAP --to 192.168.1.0/24
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j NETMAP --to 192.0.2.0/24

Um den Bereich der Ziele für die Adresskonvertierung in Netzwerk 1 zu begrenzen, wird das Ziel durch die verbundene Schnittstelle begrenzt. Ohne dies wird die Adresse in ein anderes Subnetz in Network2 konvertiert.

Routing

Fügen Sie statisches Routing hinzu. Stellen Sie das Routing in GW1 auf 192.0.2.0/24 ein

ip route add 192.0.2.0/24 via 192.168.99.2

Stellen Sie das in H1 adressierte Routing auch auf 192.0.2.0/24 ein. (Nicht erforderlich, wenn GW1 das Standard-Gateway ist.)

Stellen Sie das adressierte Routing in GW2 auf 192.168.30.0/24 ein.

ip route add 192.168.30.0/24 via 192.168.99.1

Stellen Sie das Routing auch in H2 auf 192.168.30.0/24 ein. (Nicht erforderlich, wenn GW1 das Standard-Gateway ist.)

Mit den Einstellungen bis zu diesem Punkt können H1 und H2 kommunizieren.

Kommunikation von H1 nach H2: Geben Sie die konvertierte Adresse an

h1$ ping 192.0.2.10 
h1$ ssh 192.0.2.10

Kommunikation von H2 nach H1: Geben Sie die Adresse von H1 unverändert an

h2$ ping 192.168.30.10 
h2$ ssh 1192.168.30.10

In H1 wird die Kommunikation von H2 als die Kommunikation angezeigt, die nach der Konvertierung von 192.0.2.10 verbunden wurde.

Hinweis: Wenn die Kommunikation H1-> H2 in eine Richtung ist

Wenn die Kommunikation nur in Richtung von H1 nach H2 gestartet wird, müssen Sie durch Einstellen von SNAT in GW2 keine Routing-Einstellungen auf der H2-Seite vornehmen. In diesem Fall sieht in H2 die Kommunikation von H1 wie eine Verbindung von GW2 aus.

Folgendes wurde zu GW2 hinzugefügt

iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j SNAT --to-source 192.168.1.1

192.168.1.1 ist die IP-Adresse von GW2

Schließlich

Artikel zu SNAT / DNAT, die IPs für einen einzelnen Host neu schreiben, finden Sie an verschiedenen Stellen. Ich konnte jedoch keinen Artikel zum Ersetzen der IP-Adresse des gesamten Subnetzbereichs finden. Deshalb habe ich ihn hier zusammengefasst.

Recommended Posts

Übersetzen Sie den IP-Adressbereich 1: 1 in ein anderes Subnetz
Konvertieren Sie die IP-Adresse in eine Dezimalzahl
Programmgesteuert eine lokale IP-Adresse abrufen
Hinweis zum Zeichnen der IP-Adresse mit Kibana + Elastic Search
Firewalld zu Amazon Linux 2 hinzugefügt (IP-Adressbeschränkungen)
Holen Sie sich die lokale IP-Adresse