domingo, 18 de octubre de 2015

Enrutar paquetes desde un interface de red privada hacia Internet

Queremos habilitar el acceso a internet desde un equipo conectado a un interface de otro equipo que tiene dos interfaces. Es decir, el equipo conectado a Internet, tiene dos interfaces de red, uno conectado a Internet y otro conectado a una red interna formada por un solo equipo. El equipo conectado a Internet hará de router para otro equipo conectado a su otro interfaz.

El equipo que hará de router tiene Fedora 22 y debe enrutar los paquetes que le llegan desde un interface conectado a una red interna hacia Internet.

En el equipo Fedora 22, el interface conectado a Internet es em1 y el interface conectado a la red interna es p2p1.

Lo primero es configurar el interfaz de red (egiga0) del equipo al que queremos proporcionar acceso a Internet:



Y su tabla de rutas:


Para añadir la ruta por defecto:

route add -net 0.0.0.0 gw 192.168.249.5 dev egiga0

El gateway de la ruta por defecto (0.0.0.0) se corresponde con la IP del interfaz del equipo Fedora: 192.168.249.5. Con el comando

ifconfig -a

vemos la configuración de los interfaces en el equipo Fedora que nos va a hacer de router:


El router estándar doméstico conectado a Internet ha asignado la IP dinámica 192.168.20.5 al interface em1 que tiene acceso a Internet.

La tabla de rutas del equipo Fedora que hará de router se muestra con el comando:

route -n

o también con:

ip route show


Vemos que la red privada 192.168.249.0 está asignada al interfaz p2p1. La configuración de este interface está en el archivo:

cat /etc/sysconfig/network-scripts/ifcfg-p2p1


Ahora que los interfaces están configurados en los dos equipos, creamos la reglas para el enrutamiento en el equipo Fedora 22 que hará de router:

iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE
iptables -A FORWARD -i em1 -o p2p1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i p2p1 -o em1 -j ACCEPT

Falta habilitar el enrutamiento en el equipo Fedora con:

echo 1 > /proc/sys/net/ipv4/ip_forward

Esto configura el enrutamiento de forma temporal, es decir, al reiniciar el equipo que hace de router, habrá que habilitarlo nuevamente.

Para habilitarlo de forma permanente es necesario editar /etc/sysctl.conf