Diferencia entre revisiones de «Linux como router»

De Ardemans Wiki
Saltar a: navegación, buscar
(Página creada con «Aveces hace falta configurar un equipo con router, para que el tráfico pase a través de esa máquina, con dos tarjetas de red, y máquinas de un lado puedan ver las que h...»)
 
(Configurar IP Masquerade)
 
(3 revisiones intermedias por el mismo usuario no mostrado)
Línea 3: Línea 3:
 
Esto son los pasos que he hecho con un Ubuntu 14.04:
 
Esto son los pasos que he hecho con un Ubuntu 14.04:
  
== Habilitar IP Forwardind ==
+
== Habilitar IP Forwarding ==
  
 
En primer lugar tenemos que habilitar el IP Forwarding con el siguiente comando:
 
En primer lugar tenemos que habilitar el IP Forwarding con el siguiente comando:
Línea 16: Línea 16:
 
# Uncomment the next line to enable packet forwarding for IPv4
 
# Uncomment the next line to enable packet forwarding for IPv4
 
net.ipv4.ip_forward=1
 
net.ipv4.ip_forward=1
 +
</pre>
 +
 +
== Configurar IP Masquerade ==
 +
[http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/ipmasq-background2.1.html IP Masquerade]  es una técnica en linux para configurar reglas de NAT, y lo vamos a usar para que el tráfico de vuelta que se genere desde el punto de destino (servidor) pueda volver al punto de origen (cliente).
 +
 +
Lo que hace es que transforma el paquete de origen y le pone la IP del router (nuestro linux), y cuando vuelve el tráfico de vuelta lo vuelve a transformar para que vuelva a la máqiuna de origen.
 +
 +
Esto se ve muy bien haciendo un '''tcpdump -i any icmp''' en la máqiuna del destino, y desde origen lazando un ping. Sin la regla de masquerade vemos que la IP de orgien del paquete es la IP verdadera del servidor desde donde lanzamos el ping, pero si añadimos la regla de masquerade al iptables y volvemos a lanzar el ping vemos que ahora la IP de origen es la del linux que hace de router.
 +
 +
Para ponernos en situación, en mi ejemplo voy a hacer que máquinas de mi red puedan conectarse a las vm's de virtualBox que se levanten en mi máquina.
 +
 +
El tráfico de otras maqiunas entrará por la iface '''wlan0''' (una wifi) y el iface de red virtual de virtualBox es '''vboxnet1'''
 +
 +
En primer lugar configuramos la regla de NAT:
 +
 +
<pre>
 +
iptables -t nat -A POSTROUTING -o vboxnet1 -j MASQUERADE
 +
</pre>
 +
 +
Y configuramos el forward del trafico en los dos sentidos:
 +
 +
<pre>
 +
iptables -A FORWARD -i vboxnet1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
 +
iptables -A FORWARD -i wlan0 -o vboxnet1 -j ACCEPT
 
</pre>
 
</pre>

Última revisión de 07:51 10 abr 2015

Aveces hace falta configurar un equipo con router, para que el tráfico pase a través de esa máquina, con dos tarjetas de red, y máquinas de un lado puedan ver las que hay en la otra red.

Esto son los pasos que he hecho con un Ubuntu 14.04:

Habilitar IP Forwarding

En primer lugar tenemos que habilitar el IP Forwarding con el siguiente comando:

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

Pero si queremos que esto sea persistente para la próxima vez que reiniciemos la máquina lo podemos añadir al fichero de configuración /etc/sysctl.conf:

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Configurar IP Masquerade

IP Masquerade es una técnica en linux para configurar reglas de NAT, y lo vamos a usar para que el tráfico de vuelta que se genere desde el punto de destino (servidor) pueda volver al punto de origen (cliente).

Lo que hace es que transforma el paquete de origen y le pone la IP del router (nuestro linux), y cuando vuelve el tráfico de vuelta lo vuelve a transformar para que vuelva a la máqiuna de origen.

Esto se ve muy bien haciendo un tcpdump -i any icmp en la máqiuna del destino, y desde origen lazando un ping. Sin la regla de masquerade vemos que la IP de orgien del paquete es la IP verdadera del servidor desde donde lanzamos el ping, pero si añadimos la regla de masquerade al iptables y volvemos a lanzar el ping vemos que ahora la IP de origen es la del linux que hace de router.

Para ponernos en situación, en mi ejemplo voy a hacer que máquinas de mi red puedan conectarse a las vm's de virtualBox que se levanten en mi máquina.

El tráfico de otras maqiunas entrará por la iface wlan0 (una wifi) y el iface de red virtual de virtualBox es vboxnet1

En primer lugar configuramos la regla de NAT:

iptables -t nat -A POSTROUTING -o vboxnet1 -j MASQUERADE

Y configuramos el forward del trafico en los dos sentidos:

iptables -A FORWARD -i vboxnet1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o vboxnet1 -j ACCEPT