Breve introducción sobre como armar un Gateway en Debian

2 03 2008

Una pc con dos tarjetas de red (o mas) puede ser un gateway, es decir, un intermediario entre dos redes. Esto permite crear, por ejemplo, una red local dentro de otra red, lo cual puede ser útil si se está en una red con una cantidad limitada de direcciones IP, ya que en la red local se pueden tener más direcciones IP y por lo tanto más computadores.

Nube de Internet
|
|
Red externa
(red institucional o casera)
|
| eth0
[gateway]
| eth1
|
Red local

Configurar las interfaces de red

Supongamos que la pc que funcionará como gateway tiene dos interfaces de red:

* eth0: conectada a la red externa o a Internet
* eth1: conectada a la red local

Si el computador ya está conectado en la red externa por eth0, no es necesario cambiar la configuración de eth0.

eth1 la podríamos configurar con IP estática, por ejemplo:

* dirección IP: 192.168.1.1
* máscara de subred: 255.255.255.0

Para hace esto, se debe editar el archivo /etc/network/interfaces, y agregar o modificar las siguientes líneas:

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

Configurar enrutamiento de paquetes

Para que el computador funcione como gateway o puerta de enlace y pueda enrutar los paquetes desde la red local hacia la red externa y viceversa, se deben realizar dos operaciones:

* Activar el IP forwarding o reenvío de paquetes IP
* Crear un conjunto de reglas de iptables sobre cómo enrutar los paquetes.

Necesitamos tres conjuntos de reglas:

* No permitir conexiones entrantes desde la red externa (eth0) hacia la red local (eth1)
* Permitir la salida de paquetes desde la red local (eth1)
* Permitir que retornen paquetes de las conexiones establecidas, desde la red externa hacia la red local

Al traducir estas reglas al lenguaje de iptables, obtenemos el siguiente script:

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state –state NEW -i ! eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state –state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Don’t forward from the outside to the inside.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

Para que este script se ejecute cada vez que se inicia el computador, se debe guardar en el directorio /etc/network/if-up.d/ y darle permiso de ejecución. Por ejemplo:

chmod +x /etc/network/if-up.d/00-firewall

Donde 00-firewall es el nombre que le colocamos al script.

Para aplicar los cambios, se debe reiniciar la interfaz eth1:

ifdown eth1
ifup eth1

La próxima vez que inicie el computador, los cambios se aplicarán automáticamente.

Con esto tenemos un gateway básico. Cualquier computador de la red local puede acceder a la red externa y/o a Internet.

Luego se pueden agregar servicios adicionales:

* DHCP, para que los computadores de la red local se configuren automáticamente, en vez de tener que configurar manualmente la dirección IP de cada uno
* DNS, para acceder a otros computadores de la red local a través de un nombre, en vez de su número IP

Configurar DHCP

Instalar el paquete de DHCP:

apt-get install dhcp3-server

Para activar el servicio de DHCP en la red local, es decir, en la interfaz eth1, se debe editar el archivo /etc/default/dhcp3-server y agregar o modificar la siguiente línea:

INTERFACES="eth1"

Luego en el archivo /etc/dhcp3/dhcpd.conf se debe agregar lo siguiente:

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 200.83.1.4, 200.83.1.5;
}

Para aplicar los cambios, se debe reinicar el servicio de DHCP:

/etc/init.d/dhcp3-server restart

Mas info aquí, aquí y aquí.


Acciones

Informacion

Deje un comentario

usted puede usar estos tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>