Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

miércoles, 2 de marzo de 2011

IP Forwarding con Linux

El mecanismo de “IP forwarding” se encarga de la retransmisión de los paquetes que se reciben por una interfaz física y de retransmitirlos por otra interfaz hacia otro nodo.
Cuando un paquete IP se recibe por una interfaz física, el modulo IP de entrada (IPinput ) procesa el paquete. Si la dirección IP destino del paquete se corresponde con la del dispositivo se procesa el paquete y se pasa al modulo TCPinput.
En caso de que la dirección IP destino no se corresponda con la del dispositivo y el módulo IP forwarding está desactivado, el paquete IP se descarta.
En el caso de que la dirección IP destino no se corresponda con la del dispositivo y el módulo IP forwarding esté activado, se pasa el paquete al módulo IP de salida (IPoutput ), se consulta la tabla de encaminamiento y el paquete se retransmite por la interfaz correspondiente.


(Fuente Universitat Politècnica Catalunya)

Imaginemos el escenario de la imagen. Tenemos uno o varios ordenadores en nuestra red (da igual que sistema operativo sean) y queremos que compartan una IP de salida a internet (o a otra red cualquiera). Lo que haremos es decirles a los equipos locales que su router es la ip del equipo con Linux:

Equipo Linux:
tarjeta de red 1: 10.10.0.1
tarjeta de red 2: DHCP con nuestro proveedor de Internet

IP Local 1:
tarjeta de red 1: 10.10.0.2  (Con router apuntando a 10.10.0.1)

IP Local 2:
tarjeta de red 1: 10.10.0.3  (Con router apuntando a 10.10.0.1)

Al equipo Linux le vamos a decir que todos los paquetes que provengan de la red 10.10.0.x (que recibiremos por su tarjeta de red 1) nos los encamine a otra red, internet o la que sea, sacando los paquetes por su tarjeta de red 2. Para ello lo haremos de la siguiente manera:


Modificamos el valor booleano de /proc/sys/net/ipv4/ip_forward

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward


Descomentamos, modificamos o añadimos la siguiente linea en /etc/sysctl.conf

net.ipv4.ip_forward=1


Aplicamos los cambios con

sysctl -p


Y ahora enrutamos los paquetes segun nuestras redes:

iptables -F
iptables -F -t nat
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Para listar las normas introducidas (y comprobar que estan bien aplicadas);

iptables -L
iptables -L -t nat


Con esto ya tendremos funcionando nuestro Linux como un router.

NOTA: En un artículo anterior explicaba como hacer IP Forwarding con OpenWRT.


That u don't know what you've got 'til it's gone