NAT et Packet Mangling avec iptables

Dans 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.
Toutefois, en raison de la pénurie d'adresses IP publiques disponibles, il est nécessaire d'utiliser une adresse IP pour les hôtes de nombreuses utilisant NAT.
Network Address Translation est une façon de traduire une adresse IP en une autre. Cela implique un routeur NAT (Linux dans notre cas) qui réécrit l'IP source ou de destination d'un appareil derrière le routeur NAT.
Il ya beaucoup de petites boîtes appelées routeurs SOHO ou les routeurs NAT qui peut être utilisé pour effectuer NAT pour un petit réseau local privé. Ils sont peu coûteux et habituellement il vous suffit de les brancher et tout fonctionne. Si vous avez déjà utilisé un, vous verrez qu'il ya plusieurs choses que vous pouvez faire avec Linux.


SNAT et de la mascarade

SNAT est un alias pour Network Address Translation Source. Elle est appelée ainsi parce que seule l'adresse IP source est traduite. La boîte de NAT va remplacer l'adresse source dans les entêtes IP de tous les paquets envoyés par une boîte derrière le NAT à une ou plusieurs adresses IP.
Un ou plusieurs hôtes peuvent être traduits dans une ou plusieurs adresses IP publiques que lorsque l'accès à Internet, mais quand une demande de l'Internet est faite à l'adresse IP publique (es), la demande ne pourra pas atteindre l'un des hôtes (si le Adresse traduit est le routeur, il atteindra le routeur, sinon les paquets seront supprimés). Il s'agit d'une bonne protection pour les réseaux locaux et enregistre un grand nombre d'adresses IP publiques.
Si un ou plusieurs hôtes derrière NAT sont traduits en une seule adresse IP publique, le processus est appelé SNAT statique. Si elles sont traduites en plusieurs adresses IP publiques (généralement une plage d'adresses IP), le processus est appelé dynamique SNAT. Dans le cas de la dynamique du SNAT, le routeur NAT choisit une adresse IP à partir d'une gamme, de sorte un ordinateur ayant accès à Internet est très susceptible d'être traduites en adresses IP différentes pour chaque connexion qu'il initie. Pour SNAT dynamique, iptables choisit le moins utilisé l'adresse IP de la plage spécifiée. Si plusieurs adresses IP de la gamme ne sont pas utilisés du tout, iptables choisit au hasard l'une d'entre elles.
Mascarade ou MASQ fonctionne exactement comme SNAT statique ne, sauf que vous ne pouvez pas spécifier l'adresse IP publique à être utilisé. Il utilisera automatiquement l'adresse IP de l'interface de sortie du routeur NAT.

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

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 ou NAPT

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. . com est configuré pour répondre à 1.1.1.1. Pour le serveur web d'être accessible à partir de l'Internet, nous avons à réécrire l'adresse de 1.1.1.1 à 192.168.1.100 chaque fois qu'une demande arrive dans notre routeur NAT avec le port de destination 80.
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:

  1. http://www. . com / la requête est transmise à 192.168.1.100 sur le port 80 et la page web de la société est affiché
  2. http://www. . com: 2143 / la requête est transmise à 192.168.1.200 sur le port 80 et la page web de l'intranet de l'entreprise est affiché

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.

un article présenté par Philip A Clare


Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article «NAT et Packet Mangling avec iptables" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.


Online: 399 users browsing the articles directory