Programmation réseau en langage C - Principe de fonctionnement de la passerelle NAT

Table des matières

NAT

NAT (Network Address Translation, Network Address Translation) est une technologie de traduction d'adresses IP au niveau de la couche réseau L3. Il s'agit d'une norme définie par l'IETF et utilisée à l'origine pour pallier la pénurie d'adresses de réseau public IPv4. Aujourd'hui, il est largement utilisé dans la conversion entre l'IP du réseau public (la seule adresse IP adressable au monde) et l'IP du réseau privé (10, 172, 192 segments de réseau).

En plus de résoudre la pénurie d'adresses IP de réseau public, la technologie NAT est également couramment utilisée pour prendre en charge les fonctions réseau suivantes :

  1. Camouflage de la sécurité des données : il peut convertir uniformément les informations d'adresse IP du réseau privé en adresse IP du réseau public et empêcher les hôtes du réseau privé d'être directement exposés au réseau public, assurant ainsi la sécurité du réseau.
  2. Équilibrage de charge : en modifiant srcIP, dstIP et dstPort, les paquets de données sont transmis au serveur réel backend pour traitement. Pour plus de détails, reportez-vous à Implémentation de la technologie LVS-NAT.
  3. Proxy transparent : redirige la requête HTTP vers le serveur proxy HTTP spécifié.
  4. etc.

insérez la description de l'image ici

Principe de mise en œuvre de NAT GW

Types de technologie NAT

Le principe de base de NAT GW est d'éditer et de convertir srcIP/dstIP ou même srcPort/dstPort des paquets de données IP lors de leur transmission.

À partir de la relation de mappage IP, elle peut être subdivisée en :

  • Technologie NAT statique (Static NAT) : établissez et maintenez manuellement une table de mappage d'adresses statiques, un mappage IP de réseau public et un IP de réseau privé un à un. Puisqu'il ne peut pas résoudre efficacement le problème de la pénurie d'IP du réseau public, il ne sera fondamentalement pas utilisé.
  • Technologie NAT dynamique (Pooled NAT) : établir et maintenir automatiquement une table de mappage d'adresses dynamiques, l'IP du réseau public et l'IP du réseau privé est une relation un-à-plusieurs. Il dispose d'un pool d'IP de réseau public, l'IP du réseau privé obtient dynamiquement l'adresse IP du réseau public à partir de ce pool et établit une connexion avec l'extérieur. Et lorsque la connexion est déconnectée, l'adresse IP publique qu'elle occupe sera libérée pour être utilisée par d'autres adresses IP privées. Ce processus se fait dynamiquement.

insérez la description de l'image ici

En termes de types d'édition et de conversion IP, il peut être subdivisé en :

  • Technologie SNAT : Modifier le NAT de srcIP pour résoudre le problème des IP du réseau privé accédant au réseau public.
  • Technologie DNAT : Modifier le NAT de dstIP pour résoudre le problème d'accès IP du réseau public au réseau privé.
  • Technologie NAPT (Port-Level NAT) : Modifiez le NAT de dstPort pour résoudre le problème selon lequel une IP de réseau public doit être mappée à plusieurs IP de réseau privé.

Fondamentaux de la technologie NAT

insérez la description de l'image ici

Comme le montre la figure ci-dessus, NAT GW dispose de deux types de ports réseau externes et internes :

  • IP publique : 202.20.65.5
  • Segment de réseau privé : 192.168.1.0/24, et il sert également de NAT GW du réseau privé avec une adresse IP de 192.168.1.1.

Si le NAT GW a configuré la règle NAT dynamique entre le segment de réseau privé et l'adresse IP du réseau public à ce moment, alors lorsque ClientA 192.168.1.2 dans le réseau privé envoie un paquet IP au serveur Web 202.20.65.4 dans le réseau public ( srcIP=192.168.1.2, dstIP=202.20.65.4) effectuera le comportement NAT suivant.

  • SNAT lors de l'envoi de paquets : NAT GW convertira le srcIP du paquet IP en IP du réseau public et l'enverra au serveur Web.
  • DNAT lors de la réception de paquets : NAT GW convertira le dstIP du paquet IP en IP de réseau privé et l'enverra au ClientA.

insérez la description de l'image ici

Fonction de suivi de connexion de la technologie NAT

La technologie NAT dynamique doit s'appuyer sur la fonction Connection Track (suivi de connexion) pour maintenir une table de mappage d'adresses dynamiques, qui permet au "paquet de retour" de savoir à quelle adresse IP de réseau privé il doit être transféré. Comme indiqué ci-dessous:

insérez la description de l'image ici

Fondamentaux de la technologie NAPT

NAPT (Network Address Port Translation) est utilisé pour mapper une adresse IP publique à plusieurs adresses IP privées. Comme indiqué ci-dessous.

insérez la description de l'image ici

Fonction de suivi de connexion de la technologie NAPT

La piste de connexion de NAT GW est également utilisée pour prendre en charge la technologie NAPT,

insérez la description de l'image ici

Serveur NAT

Le serveur NAT, comme son nom l'indique, est un rôle de serveur qui peut activement accepter les demandes des clients du réseau public et les transmettre à l'adresse IP du réseau privé principal. Le principe de mise en œuvre est le même que ci-dessus, la différence est qu'en raison de différents scénarios d'application, le moment de la création des entrées de table NAT est différent.

  • NAT GW : Créer une entrée lorsque le trafic de sortie passe.
  • Serveur NAT : créer une entrée avant l'entrée du trafic entrant.

Pénétration NAT

La traversée NAT est un scénario d'application spécial. Comme son nom l'indique, il s'agit de "contourner NAT GW" pour réaliser une communication directe P2P (point à point) entre deux réseaux. La traversée NAT est utile dans divers scénarios, tels que :

  • Jeux en ligne : en utilisant la technologie de traversée NAT, les joueurs peuvent établir directement une connexion P2P pour obtenir une expérience de jeu à faible latence sans avoir besoin de serveurs intermédiaires pour le transfert de données.
  • Partage de fichiers : en utilisant la technologie de traversée NAT, les utilisateurs peuvent établir directement une connexion de transfert de fichiers pour partager des fichiers facilement et rapidement.
  • Les applications de communication en temps réel : telles que les vidéoconférences, les appels vocaux et les chats en temps réel, etc., nécessitent généralement des connexions rapides et stables pour obtenir une transmission de données en temps réel. En utilisant la technologie de traversée NAT, les utilisateurs impliqués dans la communication peuvent établir directement des connexions point à point, offrant une meilleure qualité de communication et une meilleure expérience utilisateur.
  • Accès à distance : dans un scénario d'accès à distance, les utilisateurs doivent accéder aux périphériques ou aux ressources du réseau interne à partir d'un réseau externe. En utilisant la technologie de traversée NAT, les utilisateurs peuvent accéder directement aux appareils sur le réseau interne, tels que les postes de travail distants, les webcams ou les appareils domotiques, sans avoir recours à un mappage de port compliqué ou à des paramètres VPN.
  • Communication des appareils IoT : Le développement rapide des appareils de l'Internet des objets (IoT) a entraîné un grand nombre d'appareils connectés au réseau, et ces appareils peuvent être situés dans différents réseaux NAT. En utilisant la technologie de pénétration NAT, il peut aider ces appareils à communiquer directement, réaliser l'échange de données et l'interopérabilité entre les appareils, et fournir plus de flexibilité et d'évolutivité pour les applications IoT.

NAT iptables Linux

L'opération de transfert NAT Linux iptables doit être autorisée dans la chaîne FORWARD de la table de filtrage, et la fonction de transfert Kernel ip_forwarding doit être activée.

De plus, comme iptables maintiendra activement la table NAT, il suffit souvent de configurer SNAT ou DNAT pour « renvoyer des paquets » lors de l'utilisation de la configuration iptables, sans créer deux règles pour un flux de données en même temps. Dans le même temps, Linux iptables combinera Netfilter et ConnTrack dans le noyau pour prendre en charge la fonction de suivi de session.

SNAT

SNAT agit sur le trafic de sortie, il prend donc effet dans la chaîne POSTROUTING d'iptables. Le chemin sortant est : APP => sous-système de routage de la pile TCP/IP => filter:OUTPUT => nat:POSTROUTING => outbound.

$ iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 198.51.100.3 

Dans les scénarios NAT dynamiques, il est également nécessaire d'utiliser le mode de masquage d'adresse IP (MASQUERADE), qui est une technologie SNAT dynamique, généralement utilisée dans les réseaux domestiques ou les réseaux mobiles.

$ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

insérez la description de l'image ici

DNAT

DNAT agit sur le trafic Ingress, il prend donc effet dans la chaîne PREROUTING.

$ iptables -t nat -I PREROUTING -p tcp -d 198.51.100.3 --dport 80 -j DNAT --to 192.168.0.2

insérez la description de l'image ici

TNP

NAPT est généralement utilisé avec DNAT, par exemple : pour mapper le port 2222 de l'IP du réseau public de la machine locale au port 22 de l'IP du réseau interne de la machine virtuelle.

$ iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222  -j DNAT --to-dest 192.168.188.115:22

# 测试。
$ ssh [email protected] -p 2222

Je suppose que tu aimes

Origine blog.csdn.net/Jmilk/article/details/131905708
conseillé
Classement