OVH Cloud OVH Cloud

Nat Interne + Externe

4 réponses
Avatar
Joshua
Bonjour,

j'ai une question toute bete (je suis sure quelle a déjà été posée 100
fois mais j'arrive pas à trouver le bon mot clé pour retrouver les réponses)

J'ai un serveur Web que j'aimerai pouvoir questionner depuis mon réseau
interne ainsi qu'externe. Pour l'externe pas de souci, le DNat
fonctionne bien mais pas en interne (il me faut utiliser impérativement
un nom DNS du genre : je veux que webserver.mondomaine.com me reponde de
l'interne comme de l'externe).

J'ai un serveur DNS qui me repond : Webserver.mondomaine.com donne
62.160.XXX.XXX or, bien entendu, de l'interne, les packets se perdent
dans la nature et je ne peux pas y accéder.

Dois je modifier mon serveur Bind pour qu'il me reponde l'ip interne du
serveur quand il detecte une requete de ce même réseau et une Ip
publique quand la requete provient de l'internet ou y a t'il une
solution au niveau de ma passerelle géré par Iptables.

Merci de vos réponses.


Cordialement.
Julien Reveillet.

4 réponses

Avatar
Pascal Hambourg
Salut,


J'ai un serveur Web que j'aimerai pouvoir questionner depuis mon réseau
interne ainsi qu'externe. Pour l'externe pas de souci, le DNat
fonctionne bien mais pas en interne (il me faut utiliser impérativement
un nom DNS du genre : je veux que webserver.mondomaine.com me reponde de
l'interne comme de l'externe).

J'ai un serveur DNS qui me repond : Webserver.mondomaine.com donne
62.160.XXX.XXX or, bien entendu, de l'interne, les packets se perdent
dans la nature et je ne peux pas y accéder.


Non, les paquets ne se "perdent pas dans la nature" comme ça. Ils vont
là où les règles de routage, de NAT et de filtrage les envoient.

Dois je modifier mon serveur Bind pour qu'il me reponde l'ip interne du
serveur quand il detecte une requete de ce même réseau et une Ip
publique quand la requete provient de l'internet ou y a t'il une
solution au niveau de ma passerelle géré par Iptables.


Les deux approches sont possibles.
Dans Bind (version 9), il est possible de définir des "vues" (views)
différentes d'une zone pour l'extérieur et l'intérieur, en fonction de
l'adresse source de la requête.

Dans iptables, il faut trois choses. D'abord il faut évidemment que le
DNAT s'applique aussi aux connexions provenant de l'intérieur. Ensuite
il faut autoriser dans la chaîne FORWARD le trafic qui entre et qui sort
par l'interface intérieure. Enfin, il faut masquer avec SNAT ou
MASQUERADE l'adresse source des connexions venant de l'intérieur ayant
subi le DNAT et ressortant par l'interface intérieure, afin que le
chemin retour passe par le routeur.

Détails sur demande.

Avatar
Joshua
Merci beaucoup pour ta réponse.

J'ai opté pour la solution du Bind mais savoir ce qu'il faut faire avec
un NAT m'interesse enormement.

Donc voilà, je te fais ma demande (pas de mariage...)!

Dans mon cas, j'ai créé un DNAT avec comme source : réseau interne,
destination : Ip publique (le nom d'hote de mon server Web se resout par
mon Ip publique) et service Http; modifie ma destination pour pointer
sur mon serveur Web (ip interne).

Donc le packet, lorsque je l'emets, doit bien arriver au serveur sauf
que je ne reçois pas ses retours.
J'estime pourtant que ça devrait fonctionner puisque l'ip source n'a pas
été changé et mon ip (perso) se trouve dans le même réseau donc la
réponse doit être local mais apparement je me trompe (à moins que les
packets que j'emet n'arrivent pas à destination)

Tu parles de SNAT mais j'avoue que je ne vois pas l'interet. (voir plus bas)

J'attends avec impatience tes réponses.

Cordialement.
Joshua.

Salut,


J'ai un serveur Web que j'aimerai pouvoir questionner depuis mon réseau
interne ainsi qu'externe. Pour l'externe pas de souci, le DNat
fonctionne bien mais pas en interne (il me faut utiliser impérativement
un nom DNS du genre : je veux que webserver.mondomaine.com me reponde de
l'interne comme de l'externe).

J'ai un serveur DNS qui me repond : Webserver.mondomaine.com donne
62.160.XXX.XXX or, bien entendu, de l'interne, les packets se perdent
dans la nature et je ne peux pas y accéder.


Non, les paquets ne se "perdent pas dans la nature" comme ça. Ils vont
là où les règles de routage, de NAT et de filtrage les envoient.

Dois je modifier mon serveur Bind pour qu'il me reponde l'ip interne du
serveur quand il detecte une requete de ce même réseau et une Ip
publique quand la requete provient de l'internet ou y a t'il une
solution au niveau de ma passerelle géré par Iptables.


Les deux approches sont possibles.
Dans Bind (version 9), il est possible de définir des "vues" (views)
différentes d'une zone pour l'extérieur et l'intérieur, en fonction de
l'adresse source de la requête.

Dans iptables, il faut trois choses. D'abord il faut évidemment que le
DNAT s'applique aussi aux connexions provenant de l'intérieur. Ensuite
il faut autoriser dans la chaîne FORWARD le trafic qui entre et qui sort
par l'interface intérieure.

Enfin, il faut masquer avec SNAT ou
MASQUERADE l'adresse source des connexions venant de l'intérieur ayant
subi le DNAT et ressortant par l'interface intérieure, afin que le
chemin retour passe par le routeur.


Là c'est pas claire, peux tu expliquer s'il te plait?


Détails sur demande.



Avatar
Pascal Hambourg

Dans mon cas, j'ai créé un DNAT avec comme source : réseau interne,
destination : Ip publique (le nom d'hote de mon server Web se resout par
mon Ip publique) et service Http; modifie ma destination pour pointer
sur mon serveur Web (ip interne).

Donc le packet, lorsque je l'emets, doit bien arriver au serveur sauf
que je ne reçois pas ses retours.


Tu les reçois mais la machine cliente ne les reconnaît pas si la
dernière condition que j'ai énoncée n'est pas remplie.

J'estime pourtant que ça devrait fonctionner puisque l'ip source n'a pas
été changé et mon ip (perso) se trouve dans le même réseau donc la
réponse doit être local


Justement, c'est souvent là que ça coince.

Tu parles de SNAT mais j'avoue que je ne vois pas l'interet. (voir plus bas)


C'est tout bête. Exemple :
client : 192.168.0.5/24
serveur : 192.168.0.4/24
routeur : interne 192.168.0.1/24, externe 62.160.1.2

Le paquet envoyé par le client au routeur a le couple (adresse source,
adresse destination) suivant : (192.168.0.5, 62.168.1.2). Il attend un
paquet de réponse (62.168.1.2, 192.168.0.5).
Le paquet DNATé retransmis par le routeur : (192.168.0.5, 192.168.0.4).
Le paquet de réponse émis par le serveur : (192.168.0.4, 192.168.0.5).
Ce paquet est routé directement vers le client puisque la route est
directe. Mais son adresse source ne correspond pas à la réponse attendue
par le client, donc il est ignoré par ce dernier.

Pour remédier à cela, le routeur doit remplacer l'adresse source du
paquet envoyé par le client par sa propre adresse, interne ou externe,
peu importe. On recommence :

Le paquet envoyé par le client au routeur : (192.168.0.5, 62.168.1.2).
Il attend un paquet de réponse (62.168.1.2, 192.168.0.5).
Le paquet DNATé retransmis par le routeur : (192.168.0.1, 192.168.0.4).
Le paquet de réponse émis par le serveur : (192.168.0.4, 192.168.0.1).
Ce paquet est envoyé au routeur qui peut remettre les adresses sources
et destination originales (62.168.1.2, 192.168.0.5) et le renvoyer à sa
destination finale, le client.

Avatar
Joshua

Dans mon cas, j'ai créé un DNAT avec comme source : réseau interne,
destination : Ip publique (le nom d'hote de mon server Web se resout par
mon Ip publique) et service Http; modifie ma destination pour pointer
sur mon serveur Web (ip interne).

Donc le packet, lorsque je l'emets, doit bien arriver au serveur sauf
que je ne reçois pas ses retours.


Tu les reçois mais la machine cliente ne les reconnaît pas si la
dernière condition que j'ai énoncée n'est pas remplie.

J'estime pourtant que ça devrait fonctionner puisque l'ip source n'a pas
été changé et mon ip (perso) se trouve dans le même réseau donc la
réponse doit être local


Justement, c'est souvent là que ça coince.

Tu parles de SNAT mais j'avoue que je ne vois pas l'interet. (voir
plus bas)


C'est tout bête. Exemple :
client : 192.168.0.5/24
serveur : 192.168.0.4/24
routeur : interne 192.168.0.1/24, externe 62.160.1.2

Le paquet envoyé par le client au routeur a le couple (adresse source,
adresse destination) suivant : (192.168.0.5, 62.168.1.2). Il attend un
paquet de réponse (62.168.1.2, 192.168.0.5).
Le paquet DNATé retransmis par le routeur : (192.168.0.5, 192.168.0.4).
Le paquet de réponse émis par le serveur : (192.168.0.4, 192.168.0.5).
Ce paquet est routé directement vers le client puisque la route est
directe. Mais son adresse source ne correspond pas à la réponse attendue
par le client, donc il est ignoré par ce dernier.

Pour remédier à cela, le routeur doit remplacer l'adresse source du
paquet envoyé par le client par sa propre adresse, interne ou externe,
peu importe. On recommence :

Le paquet envoyé par le client au routeur : (192.168.0.5, 62.168.1.2).
Il attend un paquet de réponse (62.168.1.2, 192.168.0.5).
Le paquet DNATé retransmis par le routeur : (192.168.0.1, 192.168.0.4).
Le paquet de réponse émis par le serveur : (192.168.0.4, 192.168.0.1).
Ce paquet est envoyé au routeur qui peut remettre les adresses sources
et destination originales (62.168.1.2, 192.168.0.5) et le renvoyer à sa
destination finale, le client.


Merci beaucoup.

J'ai pas le temps de regarder de suite ta solution mais je te confirme
demain que tout fonctionne pour moi.
Merci encore d'avoir passé du temps à m'expliquer.

Bonne soirée.

Joshua.