[LINUX] Traduire la plage d'adresses IP en un autre sous-réseau 1: 1

Chose que tu veux faire

J'ai connecté deux réseaux, mais je ne peux pas configurer le routage direct en raison d'adresses IP en double. Par conséquent, je souhaite convertir l'adresse IP connectée en une plage d'adresses IP inutilisée.

Réseau supposé

Deux serveurs Linux GW1 et GW2 ont été connectés pour communiquer l'hôte H1 (192.168.30.10) et H2 (192.168.1.10). Cependant, puisque le sous-réseau 192.168.0.1/24 auquel appartient H2 est utilisé par le réseau 2, il n'est pas possible de définir le routage direct vers GW1 pour la communication.

(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)

Solution

En utilisant NETMAP d'iptables, l'adresse IP de H2 vue depuis le réseau 1 est convertie en un autre sous-réseau non utilisé par le réseau 1.

Ancienne histoire https://serverfault.com/questions/109569/iptables-massive-11-nat

Ici, la conversion d'adresse est effectuée afin que l'hôte sur le sous-réseau auquel appartient H2 soit accessible avec 192.0.2.x / 24.

Conversion d'adresse (192.168.1.0/24 <-> 192.0.2.0/24)

Ajoutez les paramètres suivants à GW2.

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

Afin de limiter la plage de destinations pour la conversion d'adresse vers le réseau 1, la cible est limitée par l'interface connectée. Sans cela, l'adresse sera convertie en un autre sous-réseau dans Network2.

routage

Ajoutez un routage statique. Définissez le routage sur 192.0.2.0/24 dans GW1

ip route add 192.0.2.0/24 via 192.168.99.2

Définissez également le routage adressé à 192.0.2.0/24 dans H1. (Non requis si GW1 est la passerelle par défaut)

Définissez le routage adressé à 192.168.30.0/24 dans GW2.

ip route add 192.168.30.0/24 via 192.168.99.1

Définissez également le routage adressé à 192.168.30.0/24 dans H2. (Non requis si GW1 est la passerelle par défaut)

Avec les réglages jusqu'à ce point, H1 et H2 peuvent communiquer.

Communication de H1 à H2: spécifiez l'adresse convertie

h1$ ping 192.0.2.10 
h1$ ssh 192.0.2.10

Communication de H2 à H1: spécifiez l'adresse de H1 telle quelle

h2$ ping 192.168.30.10 
h2$ ssh 1192.168.30.10

En H1, la communication depuis H2 apparaît comme la communication connectée depuis 192.0.2.10 après conversion.

Remarque: lorsque la communication est H1-> H2 unidirectionnelle

Si la communication est démarrée uniquement dans la direction de H1 à H2, le réglage de SNAT dans GW2 élimine le besoin de réglages de routage du côté H2. Dans ce cas, dans H2, la communication de H1 ressemble à une connexion de GW2.

Ajout de ce qui suit à GW2

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

192.168.1.1 est l'adresse IP de GW2

finalement

Des articles sur SNAT / DNAT qui réécrivent les adresses IP destinées à un seul hôte peuvent être trouvés à divers endroits, mais je n'ai pas trouvé d'article sur la façon de remplacer l'adresse IP de toute la plage de sous-réseau, je l'ai donc résumé ici.

Recommended Posts

Traduire la plage d'adresses IP en un autre sous-réseau 1: 1
Convertir l'adresse IP en décimal
Pour obtenir une adresse IP locale par programme
Remarque pour tracer l'adresse IP avec Kibana + Elastic Search
Firewalld ajouté à Amazon Linux 2 (restrictions d'adresse IP)
Obtenir l'adresse IP locale