Haciendo NAT’s con ARP y ROUTE

0
1150

Hoy en dia, es muy común hablar de sistemas de seguridad y aun mas de Firewalls con Open Source usando IPTABLES en Red Hat Linux y sus derivados (CentOS, White Box, Fedora Core, Debian, Ubuntu, etc).

Pero cuando se trata de hacer NAT , DNAT  y SNAT existen diferentes manera de hacerlo, una de ellas esta implicita en los paquetes de FW Open Source tales como:

  • Firestarter
  • Guard Dog
  • Shorewall
  • Iptables en un Shell script
  • etc

Pero que pasa cuando se tiene  un segmento de red de ip’s homologadas del tipo 111.222.333.444/27 y 10 de esas IP’s se usaran para difrentes tipos de servicios en nuestra LAN y cada ip de nuestra LAN de cada servidor tenga que salir con su ip homologada al mundo del cyber-espacio. 

¿Cual seria el metodo o mecanismo de hacer que esto funcione de tal manera que esto sea totalmente transparente? …

Una de las formas de hacerlo es:

  • Con Alias en la tarjeta de red
  • ARP + ROUTE

Aqui, no usaremos el metodo de ALIAS en las tarjetas de red que va conectada al Exterior, lo que usaremos el conjunto de comandos antes mencionados (arp y route).

Antes de usarlos hay que saber cual es el significado de cada uno de los comandos y que acontinuacion mostraremos.


ARP son las siglas en inglés de Address Resolution Protocol (Protocolo de resolución de direcciones).

Es un protocolo de nivel de red responsable de encontrar la dirección hardware (Ethernet MAC) que corresponde a una determinada dirección IP. Para ello se envía un paquete (ARP request) a la dirección de multidifusión de la red (broadcast (MAC = ff ff ff ff ff ff)) que contiene la dirección IP por la que se pregunta, y se espera a que esa máquina (u otra) responda (ARP reply) con la dirección Ethernet que le corresponde. Cada máquina mantiene una caché con las direcciones traducidas para reducir el retardo y la carga. ARP permite a la dirección de Internet ser independiente de la dirección Ethernet, pero esto sólo funciona si todas las máquinas lo soportan.

, la capa de enlace trabaja con direcciones físicas. El protocolo ARP se encarga de traducir las direcciones IP a direcciones MAC (direcciones físicas).Para realizar ésta conversión, el nivel de enlace utiliza las tablas ARP, cada interfaz tiene tanto una dirección IP como una dirección física MAC.

ARP se utiliza en 4 casos referentes a la comunicación entre 2 hosts:

  1. Cuando 2 hosts están en la misma red y uno quiere enviar un paquete a otro.
  2. Cuando 2 host están sobre redes diferentes y deben usar un gateway/router para alcanzar otro host.
  3. Cuando un router necesita enviar un paquete a un host a través de otro router.
  4. Cuando un router necesita enviar un paquete a un host de la misma red.

 


NAT (Network Address TranslationTraducción de Dirección de Red) es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que se asignan mutuamente direcciones incompatibles. Consiste en convertir en tiempo real las direcciones utilizadas en los paquetes transportados. También es necesario editar los paquetes para permitir la operación de protocolos que incluyen información de direcciones dentro de la conversación del protocolo.

Su uso más común es permitir utilizar direcciones privadas (definidas en el RFC 1918) y aún así proveer conectividad con el resto de Internet. Existen rangos de direcciones privadas que pueden usarse libremente y en la cantidad que se quiera dentro de una red privada. Si el número de direcciones privadas es muy grande puede usarse solo una parte de direcciones públicas para salir a Internet desde la red privada. De esta manera simultáneamente solo pueden salir a Internet con una dirección IP tantos equipos como direcciones públicas se hayan contratado. Esto es necesario debido a la progresiva escasez de direcciones provocada por el agotamiento de éstas. Se espera que con el advenimiento de IPv6 no sea necesario continuar con esta práctica.


Route es un herramienta de linea de comandos disponible tanto en Windows como en Linux.

El comando route nos permite manipular las tablas de enrutamiento de nuestro sistema. El manual lo pueden consultar aquí.

 


Teniendo en cuenta todo lo anterior, vamos a crear NAT, DNAT y SNAT.

Haremos uso de los comandos arp y route

#arp -Ds NN.NN.NN.NN eth0 pub
#route add NN.NN.NN.NN dev eth1

Donde:

eth0 es la interfaz externa (Publica / internet)
eth1 es la interfaz  interna (Lan)
NN es la ip homologada del segmento 111.222.333.444/27

Ejemplo:
#Servidor de Correo/Http
arp -Ds 111.222.333.444 eth0 pub
route add 111.222.333.444 dev eth1

DNAT
#HTTP
$IPTABLES -A PREROUTING -t nat -i $EXTERNAL -p tcp -d $CORREO –dport 80 \
        -j DNAT –to-destination $CORREO1:80
$IPTABLES -A PREROUTING -t nat -i $EXTERNAL -p udp -d $CORREO –dport 80 \
        -j DNAT –to-destination $CORREO1:80
$IPTABLES -A FORWARD -i $EXTERNAL -p tcp -d $CORREO1 –dport 80 -j ACCEPT
$IPTABLES -A FORWARD -i $EXTERNAL -p udp -d $CORREO1 –dport 80 -j ACCEPT

SNAT
$IPTABLES -t nat -A POSTROUTING -s $CORREO1 -o eth0 -j SNAT –to-source $CORREO

ICMP/PING
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL -p icmp -d $CORREO –icmp-type 8/0 \
       -j DNAT –to-destination $CORREO1
$IPTABLES -A FORWARD -i $EXTERNAL -p icmp -d $CORREO1 –icmp-type 8/0 -j ACCEPT

NAT
$IPT -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE

Donde:

IPTABLES=`which iptables`

EXTIF=eth0
IP=`/sbin/ifconfig $EXTIF| grep inet | cut -d : -f 2 | cut -d \  -f 1`
MASK=`/sbin/ifconfig $EXTIF | grep Mas | cut -d : -f 4`
NET=$IP/$MASK

INTIF=eth1
INIP=`/sbin/ifconfig $INTIF| grep inet | cut -d : -f 2 | cut -d \  -f 1`
INMASK=`/sbin/ifconfig $INTIF| grep Mas | cut -d : -f 4`
INNET=$INIP/$INMASK

CORREO=IP_Publica (del segmento 111.222.333.444/27)
CORREO1=Ip Privada de nuestra LAN  (Servidor)

LEAVE A REPLY

Please enter your comment!
Please enter your name here