NAT et Packet Mangling avec iptablesDans la première partie de cet article, nous allons apprendre à effectuer Network Address Translation (NAT) et Port Address Translation (PAT), également dénommé Réseau Adresse et Port Translation (NAPT), avec iptables. Après cela, nous allons apprendre ce que modifier des paquets et comment mangle paquets. Brève introduction à NAT et PAT (NAPT)
Selon la façon dont le protocole TCP / IP fonctionne, pour que les hôtes pour communiquer sur Internet, chacun doit avoir une adresse IP unique.
|
| SNAT a été introduit avec iptables, et n'existait pas dans netfilter pour les noyaux inférieurs à 2.4. Toutefois, Masquerade a été maintenu dans iptables simplement parce que avec des interfaces comme adaptateurs PPP qui reçoivent une adresse IP dynamique, il est plus simple de faire un MASQ plutôt que de trouver l'adresse IP attribuée de manière dynamique et ne SNAT. |
Si l'ordinateur est SNATed ou masqué, le routeur Linux va changer l'adresse IP source dans l'entête de paquet à partir de 192.168.1.3 à 1.1.1.1 et passera le paquet vers 2.2.2.2 selon le procédé de routage. Informations sur cette connexion sont stockés dans / proc / net / ip_conntrack.
2.2.2.2 Lorsque les réponses, le paquet IP qui arrive dans le routeur Linux, il faudra l'adresse IP source 2.2.2.2 et adresse IP de destination 1.1.1.1. Linux recherche d'informations sur ce paquet dans / proc / net / ip_conntrack, et trouve un match contre les informations stockées à l'étape précédente. À ce stade, le noyau va changer l'adresse IP de destination dans l'entête de paquet à 192.168.1.3 et lui communiquera les paquets IP vers l'ordinateur NAT selon le procédé de routage.
DNAT ou Destination Network Address cartes Traductions une adresse IP publique à une adresse IP privée. DNAT est l'inverse de la SNAT, de même, si vous SNAT pour traduire des adresses IP privées en une adresse IP publique et DNAT à traduire l'adresse IP publique même en l'adresse IP privée même, le résultat sera Full NAT.
DNAT est généralement utilisé lorsque vous avez des serveurs derrière le NAT, donc la même adresse IP publique est associée à différentes adresses IP privées en fonction des ports ou des protocoles. Ce processus est aussi appelé port forwarding.
Normalement, 2.2.2.2 ne peut pas initier une communication à 192.168.1.3, car c'est une adresse IP privée et n'est pas routé sur l'Internet.
2.2.2.2 essaie d'initier une connexion avec 1.1.1.1. Si une règle DNAT n'a d'égal pour ce paquet, le routeur Linux va changer l'adresse IP de destination dans l'entête de paquet IP de 1.1.1.1 à 192.168.1.3, passer le paquet vers 192.168.1.3, et garder une trace de cette connexion.
Lorsque 192.168.1.3 réponses, le paquet est trouvé dans la table conntrack du routeur Linux pour qu'il "sait" que le paquet appartient à la connexion initiée par 2.2.2.2 à 1.1.1.1. Le routeur Linux va changer l'adresse IP source dans l'entête de paquet IP de 192.168.1.3 à 1.1.1.1.
| Si DNAT est configuré, mais SNAT n'est pas, 2.2.2.2 sera en mesure d'établir des connexions à 192.168.1.3 utilisant 1.1.1.1 comme adresse IP de destination, mais 192.168.1.3 ne sera pas en mesure d'ouvrir des connexions à 2.2.2.2. |
En d'autres termes, NAT complète est SNAT et DNAT tel que présenté plus tôt.
C'est la fonction que SOHO routeurs appellent "zone démilitarisée", comme expliqué précédemment. La raison pour laquelle on appelle cette fonction "DMZ", c'est que les paquets IP qui n'appartiennent pas à une connexion initiée par n'importe quel hôte du réseau privé 192.168.1.0/24 sera transmis à 192.168.1.3, et si cet hôte n'a pas la protection prévue par le fait qu'il a une adresse IP privée.
| Dans le cas vient d'être présenté, 1.1.1.1 peut être le routeur NAT adresse IP ou ce peut simplement être mis en déroute à elle. Si c'est le routeur adresse IP publique (comme dans les diagrammes), le routeur NAT ne sont pas accessibles depuis Internet (par exemple, vous ne pouvez pas connecter par SSH à celle-ci), car elle acheminera les paquets vers 192.168.1.3. |
PAT est synonyme de Port Address Translation et il est aussi appelé NAPT, acronyme de Network Address Translation et Port. L'idée derrière PAT est de traduire non seulement l'adresse IP, mais aussi le numéro de port pour des hôtes spécifiques et les ports.
Serveur Web de l'entreprise est derrière NAT et qu'il a l'adresse IP 192.168.1.100. Ayant une seule adresse IP publique, http://www.
Plus que cela, nous avons un serveur intranet de l'entreprise avec l'adresse IP 192.168.1.200, un serveur web sur le port 80. Lorsqu'ils sont au bureau, les employés ont http://192.168.1.200 à taper dans leur navigateur Web et ils peuvent se connecter sur le serveur web intranet.
Si nous voulons permettre aux utilisateurs de se connecter au serveur intranet lorsqu'ils sont en dehors du bureau, le TAP est la réponse. Avec PAT, on peut choisir un port qui n'est pas ouvert sur le routeur NAT (par exemple 2143), et lorsque la demande vient de l'Internet à l'adresse IP de destination 217.156.123.3 et le port destination 2143, le routeur NAT réécrit l'adresse IP de destination à 192.168.1.200 et le port destination de 2143 à 80.
De cette façon, à partir d'Internet lorsqu'un utilisateur tape:
Nous n'avons pas à réécrire le port quand un paquet a l'adresse source IP 192.168.1.200, nous venons de mettre en place SNAT ou MASQUERADE de sorte que le serveur accède à l'intranet de l'Internet en utilisant 1.1.1.1.
|
|