Abr 15

Esto es algo que había hecho una vez en windows, y resultó tan sencillo como seleccionar los dos interfaces de red del equipo que iba a usar como pasarela y seleccionar la opción “establecer pasarela”, o algo similar (hace mucho que lo hice y hace mucho que no uso windows). En cualquier caso, me vi en la necesidad de hacer algo similar en linux, pero fue bastante más complicado de lo que pensé que sería. Aquí os pongo el proceso que tuve que seguir de forma muy detallada, para que no os perdáis. Difícil y nada sencillo, pero sí para toda la familia.

Bueno, pues eso, la configuración de la red es la siguiente:

Para poner correctamente la parte cableada, que es de lo que se trata aquí, configuramos las interfaces de los 3 equipos de la siguiente forma:

EQUIPO 1

auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

allow-hotplug eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2
up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.7
auto eth0

Aquí lo que hacemos es indicarle al equipo que la red wifi (subred 1) se encuentra a través de la puerta de enlace 0.2, y que la subred 2 se encuentra a través de la puerta de enlace 0.7

SERVIDOR

auto lo
iface lo inet loopback

iface eth0 inet static
address 192.168.0.7
netmask 255.255.255.0
gateway 192.168.0.1
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2
auto eth0

iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
auto eth1

Aquí le indicamos al servidor que la red wifi se encuentra a través de la puerta de enlace 0.2, al igual que con el anterior equipo. A la conexión punto a punto no es necesario ponerle una puerta de enlace.

EQUIPO 2

auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

allow-hotplug eth0
iface eth0 inet static
address 192.168.2.5
netmask 255.255.255.0
gateway 192.168.2.1
up route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.2.1
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
auto eth0

Aquí le indicamos al equipo que para acceder a las otras 2 subredes tiene que pasar por la puerta de enlace 2.1.

Una vez hecho ésto, tendremos acceso desde cada subred únicamente hasta el servidor, ya que éste no retransmitirá los paquetes de una de sus interfaces a la otra. Para solucionar ésto, es necesario introducir un script de iptables que fuerce esta retransmisión. El script sugerido es el siguiente:

#!/bin/sh

echo Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

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

iptables -A FORWARD -i eth1 -d 192.168.0.0 -j ACCEPT
iptables -A FORWARD -i eth1 -d 192.168.1.0 -j ACCEPT
iptables -A FORWARD -i eth0 -d 192.168.2.0 -j ACCEPT

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

Aquí hacemos lo siguiente: lo primero es eliminar las anteriores configuraciones de iptables si las hubiese (si tenéis alguna otra cosa, evidentemente tendréis que cambiar ésto).
Posteriormente se establece la política por defecto como aceptación de todos los paquetes (es inseguro. Si os preocupa la seguridad tendréis que cambiar el script para denegarlos por defecto).
A continuación, introducimos una línea para enmascarar la conexión procedente de la subred 2 hacia el exterior. Esta línea es importante, ya que de no ponerla, no podremos conectarnos al router, y por tanto, no habrá acceso hacia internet ni hacia la subred 1.
Después viene el grueso del script. En estas 3 líneas se redireccionan los paquetes, a saber: lo que llega por el interfaz 1 y se dirige a la red 0 se reenvía. Lo mismo para lo que llega por el interfaz 1 y se dirige a la red 1 y para lo que llega por el interfaz 0 y se dirige a la red 2.
Por último ponemos a 1 el bit que activa el ip-forwarding (muy importante. De lo contrario, el script no hará nada).

Una vez hecho ésto, basta con añadir el script a /etc/init.d/ e introducirlo en el arranque del sistema para que se active siempre.