Programación de red en lenguaje C: principio de funcionamiento de la puerta de enlace NAT

Tabla de contenido

NAT

NAT (traducción de direcciones de red, traducción de direcciones de red) es una tecnología de traducción de direcciones IP en la capa de red L3. El estándar está definido por el IETF. Se utilizó originalmente para paliar la escasez de direcciones de red pública IPv4. Ahora es ampliamente utilizado en la conversión entre IP de red pública (la única dirección IP direccionable en el mundo) e IP de red privada (10, 172, 192 segmentos de red).

Además de resolver la escasez de direcciones IP de redes públicas, la tecnología NAT también se usa comúnmente para admitir las siguientes funciones de red:

  1. Camuflaje de seguridad de datos : puede convertir uniformemente la información de la dirección IP de la red privada a la dirección IP de la red pública y evitar que los hosts de la red privada queden expuestos directamente a la red pública, proporcionando así seguridad de red.
  2. Equilibrio de carga : reenvíe paquetes de datos al servidor real backend para su procesamiento modificando srcIP, dstIP y dstPort. Para obtener más información, consulte la implementación de la tecnología LVS-NAT.
  3. Proxy transparente : redirige la solicitud HTTP al servidor proxy HTTP especificado.
  4. etc.

inserte la descripción de la imagen aquí

Principio de implementación de NAT GW

Tipos de tecnología NAT

El principio básico de NAT GW es editar y convertir srcIP/dstIP o incluso srcPort/dstPort de paquetes de datos IP al reenviarlos.

A partir de la relación de mapeo de IP, se puede subdividir en:

  • Tecnología NAT estática (Static NAT) : establezca y mantenga manualmente una tabla de mapeo de direcciones estáticas, IP de red pública y mapeo uno a uno de IP de red privada. Dado que no puede resolver de manera efectiva el problema de la escasez de IP de la red pública, básicamente no se utilizará.
  • Tecnología NAT dinámica (NAT agrupada) : establezca y mantenga automáticamente una tabla de mapeo de direcciones dinámicas, la IP de la red pública y la IP de la red privada es una relación de uno a muchos. Tiene un Pool de IP de la red pública, la IP de la red privada obtiene dinámicamente la dirección IP de la red pública de este Pool, y establece una conexión con el exterior. Y cuando se desconecta la conexión, la IP pública que ocupa quedará liberada para que la utilicen otras IP privadas. Este proceso se realiza de forma dinámica.

inserte la descripción de la imagen aquí

En términos de edición de IP y tipos de conversión, se puede subdividir en:

  • Tecnología SNAT : modifique la NAT de srcIP para resolver el problema de la IP de la red privada que accede a la red pública.
  • Tecnología DNAT : modifique la NAT de dstIP para resolver el problema de la red pública IP que accede a la red privada.
  • Tecnología NAPT (Port-Level NAT) : modifique la NAT de dstPort para resolver el problema de que una IP de red pública debe asignarse a varias IP de red privada.

Fundamentos de la tecnología NAT

inserte la descripción de la imagen aquí

Como se muestra en la figura anterior, NAT GW tiene dos tipos de puertos de red externos e internos:

  • IP pública: 202.20.65.5
  • Segmento de red privada: 192.168.1.0/24, y también sirve como NAT GW de la red privada con una dirección IP de 192.168.1.1.

Si NAT GW ha configurado la regla de NAT dinámica entre el segmento de la red privada y la dirección IP de la red pública en este momento, cuando ClientA 192.168.1.2 en la red privada envíe un paquete IP al servidor web 202.20.65.4 en la red pública ( srcIP=192.168.1.2, dstIP=202.20.65.4) realizará el siguiente comportamiento NAT.

  • SNAT al enviar paquetes : NAT GW convertirá la srcIP del Paquete IP a la IP de la red pública y la enviará al Servidor Web.
  • DNAT al recibir paquetes : NAT GW convertirá la dstIP de IP Packet a IP de red privada y la enviará a ClientA.

inserte la descripción de la imagen aquí

Función de seguimiento de conexión de la tecnología NAT

La tecnología NAT dinámica debe basarse en la función Connection Track (seguimiento de la conexión) para mantener una tabla de mapeo de direcciones dinámicas, lo que permite que el "paquete de retorno" sepa a qué dirección IP de red privada debe reenviarse. Como se muestra abajo:

inserte la descripción de la imagen aquí

Fundamentos de la tecnología NAPT

NAPT (Traducción de puerto de dirección de red) se utiliza para asignar una dirección IP pública a varias IP privadas. Como se muestra abajo.

inserte la descripción de la imagen aquí

Función de seguimiento de conexión de la tecnología NAPT

La pista de conexión de NAT GW también se utiliza para admitir la tecnología NAPT,

inserte la descripción de la imagen aquí

Servidor NAT

El servidor NAT, como su nombre lo indica, es una función de servidor que puede aceptar activamente solicitudes de clientes de redes públicas y reenviarlas a la dirección IP de la red privada de back-end. El principio de implementación es el mismo que el anterior, la diferencia es que, debido a los diferentes escenarios de aplicación, el tiempo de creación de las entradas de la tabla NAT es diferente.

  • NAT GW : Crear entrada cuando pasa el tráfico de salida.
  • Servidor NAT : Crear entrada antes de que ingrese el tráfico de entrada.

Penetración NAT

NAT transversal es un escenario de aplicación especial.Como su nombre lo indica, es "pasar por alto NAT GW" para realizar una comunicación directa P2P (punto a punto) entre dos redes. NAT transversal es útil en varios escenarios, como:

  • Juegos en línea : mediante el uso de la tecnología transversal NAT, los jugadores pueden establecer directamente una conexión P2P para lograr una experiencia de juego de baja latencia sin necesidad de servidores intermedios para el reenvío de datos.
  • Uso compartido de archivos : mediante el uso de la tecnología transversal NAT, los usuarios pueden establecer directamente una conexión de transferencia de archivos para compartir archivos de forma cómoda y rápida.
  • Aplicaciones de comunicación en tiempo real : como videoconferencias, llamadas de voz y chats en tiempo real, etc., suelen requerir conexiones rápidas y estables para lograr la transmisión de datos en tiempo real. Mediante el uso de la tecnología transversal NAT, los usuarios involucrados en la comunicación pueden establecer directamente conexiones punto a punto, brindando una mejor calidad de comunicación y experiencia de usuario.
  • Acceso remoto : en un escenario de acceso remoto, los usuarios necesitan acceder a dispositivos o recursos en la red interna desde una red externa. Mediante el uso de la tecnología transversal NAT, los usuarios pueden acceder directamente a los dispositivos en la red interna, como escritorios remotos, cámaras web o dispositivos de automatización del hogar, sin depender de la asignación de puertos complicados o la configuración de VPN.
  • Comunicación de dispositivos IoT : el rápido desarrollo de los dispositivos de Internet de las cosas (IoT) ha dado como resultado una gran cantidad de dispositivos conectados a la red, y estos dispositivos pueden estar ubicados en diferentes redes NAT. Mediante el uso de la tecnología de penetración NAT, puede ayudar a estos dispositivos a comunicarse directamente, realizar el intercambio de datos y la interoperabilidad entre dispositivos, y proporcionar más flexibilidad y escalabilidad para las aplicaciones de IoT.

Linux iptables NAT

La operación de reenvío NAT de iptables de Linux debe estar permitida en la cadena FORWARD en la tabla de filtro, y la función de reenvío Kernel ip_forwarding debe estar habilitada.

Además, debido a que iptables mantendrá activamente la tabla NAT, a menudo solo es necesario configurar SNAT o DNAT para "devolver paquetes" cuando se usa la configuración de iptables, sin crear dos reglas para un flujo de datos al mismo tiempo. Al mismo tiempo, las iptables de Linux combinarán Netfilter y ConnTrack en el kernel para admitir la función de seguimiento de sesiones.

SNAT

SNAT actúa sobre el tráfico de salida, por lo que tiene efecto en la cadena POSTROUTING de iptables. La ruta de salida es: APP => subsistema de enrutamiento de pila TCP/IP => filtro: SALIDA => nat: POSTROUTING => salida.

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

En escenarios NAT dinámicos, también es necesario utilizar el modo de enmascaramiento de direcciones IP (MASQUERADE), que es una tecnología SNAT dinámica, generalmente utilizada en redes domésticas o redes móviles.

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

inserte la descripción de la imagen aquí

ADNT

DNAT actúa sobre el tráfico Ingress, por lo que surte efecto en la cadena PREROUTING.

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

inserte la descripción de la imagen aquí

TNP

NAPT generalmente se usa junto con DNAT, por ejemplo: para mapear el puerto 2222 de la IP de la red pública de la máquina local al puerto 22 de la IP de la red interna de la máquina virtual.

$ 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

Supongo que te gusta

Origin blog.csdn.net/Jmilk/article/details/131905708
Recomendado
Clasificación