Red de conocimiento informático - Computadora portátil - . Nombre de dominio de la tabla

. Nombre de dominio de la tabla

Este artículo presenta principalmente cómo usar iptables para implementar la potente función NAT en Linux2.4. Para obtener información detallada sobre la sintaxis de iptables, consulte el artículo "Uso de iptales para implementar un firewall de filtrado de paquetes". Cabe señalar que este artículo definitivamente no es una simple repetición de NAT-HOWTO o la versión china. A lo largo del proceso narrativo, el autor intenta expresar su comprensión y pensamientos en su propio idioma.

1. Descripción general

1.

En el proceso de comunicación TCP/IP estándar tradicional, todos los enrutadores solo actúan como intermediarios, es decir, almacenan y reenvían. Los enrutadores no modifican los paquetes reenviados; más precisamente, no modifican los paquetes reenviados a menos que la dirección MAC de origen se cambie a su propia dirección MAC. NAT (traducción de direcciones de red) es solo para algunas necesidades especiales, la operación de reescribir la dirección IP de origen, la dirección IP de destino, el puerto de origen y el puerto de destino de un paquete.

2. ¿Por qué Nat?

Veamos bajo qué circunstancias necesitamos hacer NAT

Supongamos que un ISP proporciona servicios de acceso a Internet en el campus. Para facilitar la gestión, las direcciones IP asignadas por los ISP a los usuarios del campus son pseudo-IP, pero algunos usuarios requieren el establecimiento de sus propios servidores WWW para publicar información. En este momento, podemos brindar este servicio a través de NAT. Podemos vincular varias direcciones IP legales a la tarjeta de red externa del firewall y luego reenviar el paquete de datos enviado a una de las direcciones IP al servidor WWW del usuario interno a través de la tecnología NAT, y luego reenviar el paquete de datos de respuesta desde la WWW interna. Servidor Paquetes de datos enviados disfrazados de IP legítima.

Otro ejemplo es un cibercafé que utiliza acceso telefónico a Internet. Debido a que sólo existe una dirección IP legítima, se deben tomar algunas medidas para permitir que otras máquinas accedan a Internet, generalmente a través de un servidor proxy. Sin embargo, los servidores proxy, especialmente los servidores proxy a nivel de aplicación, solo pueden admitir una cantidad limitada de protocolos. Si aparece un nuevo servicio después de un tiempo, deberá esperar a que el servidor proxy admita la versión actualizada de la nueva aplicación. Si se utiliza NAT para resolver este problema,

Dado que se procesa debajo de la capa de aplicación, NAT no solo puede alcanzar altas velocidades de acceso, sino que también admite sin problemas cualquier servicio o aplicación nueva.

Otra aplicación es la redirección, es decir, cuando se recibe un paquete, este no se reenvía, sino que se redirige a una aplicación del sistema. La aplicación más común es cooperar con Squid para convertirse en un proxy transparente, como "192.168.1.0/255.255. 255.0"

d. como "192.168.1.0/24", donde 24 representa el número válido de máscaras de subred Número, que es una representación comúnmente utilizada en entornos UNIX

El número predeterminado de máscaras de subred es 32, lo que significa que se especifica. 192.168.1.1 es equivalente a 192.168.1/32

3. Especifique la interfaz de red

Puede usar -in-interface/-i o -out-interface/-o. para especificar la interfaz de red Como se puede ver en el principio de NAT, para la cadena PREROUTING, solo podemos usar -i para especificar la interfaz de red entrante para POSTROUTING y OUTPUT, solo podemos usar -o para especificar la interfaz de red saliente; interfaz de red.

4. Especifique el protocolo y el puerto.

Puede pasar -. La opción protocolo/-p especifica el protocolo. especifique el puerto a través de -source-port/-sport y -destination-port/-dport

4. Preparación

1. .

Para obtener más información, consulte el artículo "Filtrado de paquetes Firewall usando iptales":

NAT completa

Soporte de destino enmascarado

Soporte de destino de redireccionamiento

2. Para usar tablas NAT, primero debe cargar los módulos relevantes:

modprobe ip_table

modprobe ip_nat_ftp

El módulo Iptable_nat se carga automáticamente.

Ejemplos de uso de verbo (abreviatura de verbo)

1. NAT de origen (SNAT)

Por ejemplo, cambie la dirección IP de origen de todos los paquetes de datos de 192.168. .1.0 /24 cambiado a 1.2.3.4:

iptables -t nat -A ruta postal -s 192.168.1.0/24 -o eth 0 -j SNAT -a 1.2.3.4

aquí Cabe señalar que el sistema no realiza SNAT hasta que se va a enviar el paquete de datos.

Un caso especial de SNAT es la suplantación de IP, también conocida como enmascaramiento. Por lo general, se recomienda utilizarlo cuando se utiliza acceso telefónico a Internet o cuando la dirección IP legal no es fija. Por ejemplo

# iptables-t NAT-A post enrutamiento-o PPP 0-j camuflaje

Se puede ver que en este momento no necesitamos especificar explícitamente la IP de origen. dirección y otros datos.

2. Destino SNAT (DNAT)

Por ejemplo, cambie la dirección IP de destino de todos los paquetes de datos de 192.168.1.0/24 a 1.2.3.4:

iptables -t nat -A prerouting -s 192.168.1.0/24-I eth 1-j DNAT——to 1 2 3 4

Cabe señalar aquí que el sistema realiza primero DNAT. y luego realizar operaciones como enrutamiento y filtrado.

Un caso especial de DNAT es la redirección, denominada redirección. En este momento, equivale a cambiar la dirección IP de destino del paquete de datos calificado a la dirección IP de la interfaz de red cuando el paquete de datos ingresa al sistema. Normalmente se utiliza al configurar Squid para formar un proxy transparente. Suponiendo que el puerto de escucha de Squid es 3128, podemos redirigir el paquete de datos de 192.168.1.0/24 con el puerto de destino 80 a Squid para su monitoreo.

Puerto:

iptables -t nat -A prerouting -I eth 1-p TCP-s 192.168.1.0/24——dport 80

- j redirigir - al puerto 3128

Ejemplo completo de verbo intransitivo

1. Utilice el acceso telefónico para impulsar la LAN para acceder a Internet.

Pequeños negocios, cibercafés, etc. La mayoría utiliza redes de acceso telefónico para acceder a Internet y, a menudo, pueden utilizar un proxy. Sin embargo, teniendo en cuenta factores como el costo y la compatibilidad con el protocolo, se recomienda utilizar la suplantación de IP para impulsar las redes regionales en línea.

Después de actualizar exitosamente el kernel, instale iptables y luego ejecute el siguiente script:

#Cargar módulos relacionados

modprobe ip_table

modprobe ip_nat_ftp

# camuflaje ip

iptables-t NAT-A post enrutamiento-o PPP 0-j camuflaje

mapeo 2.ip

Supongamos que un ISP proporciona acceso a Internet en el campus. Para facilitar la gestión, las direcciones IP asignadas por los ISP a los usuarios del campus son pseudo-IP, pero algunos usuarios requieren el establecimiento de sus propios servidores WWW para publicar información en el mundo exterior.

Podemos vincular varias direcciones IP legales a la tarjeta de red externa del firewall y luego reenviar el paquete de datos enviado a una de las direcciones IP al servidor WWW interno de un usuario a través del mapeo de IP, y luego el servidor WWW interno responde con los datos. El paquete se disfraza como un paquete de datos enviado por una IP legítima.

Supongamos el siguiente escenario:

La dirección IP asignada por el ISP al servidor www de la unidad A es:

Pseudo IP: 192.168.1.100 .

IP real: 202.110.123.438 000.

La dirección IP asignada por el ISP al servidor www de la unidad B es:

Pseudo IP: 192.168.1.200.

IP real: 202.110.123.200.

La dirección IP del firewall de Linux es:

Interfaz de red interna eth 1: 192.168.1.1

Interfaz de red externa eth 0: 202.110.123.438 0.

Luego vinculamos la IP real asignada a la unidad A y a la unidad B a la interfaz de red externa del firewall y ejecutamos el siguiente comando con privilegios de root:

ifconfig eth0 add 202.110. 123.100 máscara de red 255.255.255.0

ifconfig eth0 agrega 202.110.123.200 máscara de red 255.255.255.0

Instale iptables después de actualizar exitosamente el kernel y luego ejecute el siguiente script:

#Cargar módulos relacionados

modprobe ip _table

modprobe ip_nat_ftp

Primero, para todas las IP de destino recibidas por el firewall, que son 202.1123.100 y 202.110.123.200 El paquete pasa por NAT de destino (DNAT):

iptables -A prerouting -I eth 0-d 202.110.123.100-j DNAT——a 192.168.1.100

iptables - Un preenrutamiento Routing-I eth 0-d 202.110.123.200-j DNAT——a 192.168.1.200

En segundo lugar, realice NAT de origen en los paquetes de datos con direcciones IP de origen 192.168.1.100 y 192.168.1.200 recibidos por el firewall (SNAT):

iptables -Una ruta postal -o eth 0 -s 192.168.1.100 -j SNAT - a 202.110.123.100

iptables -Una ruta postal -o eth 0- s 192.168.1.200-j SNAT-to 202.110.123.200

De esta manera, todos los paquetes de datos con IP de destino 202.110.123.100 y 202.1123.200 se reenviarán a 192.438 068 respectivamente. Por otro lado, todos los paquetes de 192.168.1.100 y 192.1.200 se disfrazarán de paquetes de 202.56438 010.200. 10006