howtos/Linux/creando un router en Debian...

126 lines
6.6 KiB
Plaintext

Es necesario que el servidor Debian tenga dos tarjetas de red. Vamos a llamarlas eth0 y eth1, siguiendo la denominación convencional. La interfaz eth0 se conecta a Internet mientras que eth1 se conecta al router inalámbrico (Access Point).
Antes de continuar, debemos ingresar a la interfaz de administración del router inalámbrico y anotar la sub-red que utiliza. Vamos a suponer que es 192.168.1.0/24.
La conexión a Internet es generalmente de tipo Banda Ancha, mediante un cable modem. En este caso, el cable módem se encarga de adquirir un número IP del proveedor a través de DHCP y el servidor Debian simplemente lo agarra como suyo. Edita /etc/network/interfaces y define eth0 como DHCP,
# The primary network interface
auto eth0
iface eth0 inet dhcp
Conecta eth0 al módem con un cable de red ("twisted pair"), luego reinicia el módem y el computador Debian. Prueba conexiones Internet. El comando,
# ifconfig eth0
debería retornar los parámetros de red asignados.
Alternativa, la conexión a Internet es de tipo ADSL, en cuyo caso se requiere PPPoE. Sigue las instrucciones de la guía http://man-es.debianchile.org/adsl.html
Edita /etc/network/interfaces y define eth1 como una sub-red estática privada,
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
Es muy importante que esta definición no contenga una pasarela (gateway). Es igualmente importante que esta sub-red sea diferente a la sub-red del router inalámbrico, esta siendo 192.168.0.0/24 mientras que la del router inalámbrico 192.168.1.0/24.
Levanta la interfaz eth1 con,
# ifup eth1
'ifconfig eth1' debería retornar los parámetros de red recién asignados.
Conecta eth1 al router inalámbrico con un cable de red ("twisted pair") al mismo puerto que antes estaba conectado a Internet.
Vamos a suponer que el router inalámbrico estaba configurado para adquirir valores de red WAN vía DHCP. Como ahora está conectado al servidor Debian, necesitamos reconfigurarlo en una red estática, con valores,
IP Address : 192.168.0.2
Subnet Mask : 255.255.255.0
Default Gateway : 192.168.0.1
Primary DNS Server : 192.168.0.1
La pasarela (gateway) debe ser el número IP del servidor Debian.
Si no es posible definir una red estática, debido a que el router inalámbrico no permite la opción de red más que con DHCP, es necesario instalar y configurar el servidor DHCP en el servidor Debian. Instala isc-dhcp-server,
# apt-get install isc-dhcp-server
Edita /etc/default/isc-dhcp-server y modifica la variable INTERFACES con,
INTERFACES="eth1"
Edita /etc/dhcp/dhcpd.conf. Descomenta el instructivo "authoritative",
authoritative;
y define una sub-red,
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.2;
option routers 192.168.0.1;
option ip-forwarding off;
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1;
default-lease-time 86400;
max-lease-time 86400;
}
Esta definición va a servir un solo IP; 192.168.0.2. Observa /var/log/syslog en un terminal con,
$ tail -f /var/log/syslog
luego reinicia en otro terminal el servidor DHCP,
# /etc/init.d/isc-dhcp-server restart
Observa en /var/log/syslog como el router inalámbrico automáticamente adquiere un IP,
May 30 20:27:01 debian dhcpd: DHCPDISCOVER from 00:24:b2:28:8e:f7 via eth1
May 30 20:27:01 debian dhcpd: icmp_echorequest 192.168.0.2: Operation not permitted
May 30 20:27:02 debian dhcpd: DHCPOFFER on 192.168.0.2 to 00:24:b2:28:8e:f7 via eth1
May 30 20:27:05 debian dhcpd: DHCPREQUEST for 192.168.0.2 (192.168.0.1) from 00:24:b2:28:8e:f7 via eth1
May 30 20:27:05 debian dhcpd: DHCPACK on 192.168.0.2 to 00:24:b2:28:8e:f7 via eth1
El router inalámbrico tiene dirección Internet 192.168.0.2, pasarela y servidor DNS 192.168.0.1.
Necesitamos instalar y configurar el servidor DNS. Instala bind9,
# apt-get install bind9
Edita el archivo /etc/bind/named.conf.options y modifica el instructivo forwarders con las direcciones IP de los DNS del proveedor de Internet,
forwarders {
100.10.0.3;
100.10.0.7;
};
Para obtener las direcciones IP del DNS inspecciona el archivo /etc/resolv.conf. Este fue escrito automáticamente con los valores retornados por el servidor DHCP del proveedor.
Ahora edita /etc/resolv.conf para que lea,
nameserver 127.0.0.1
Remueve los instructivos "domain" y "search" si existen y los antiguos forwarders.
Reinicia el servidor DNS,
# /etc/init.d/bind9 restart
para que los cambios tomen efecto.
Esto transforma a localhost en servidor DNS, que vía BIND9 resuelve nombres haciendo requerimientos a los DNS del proveedor. En particular, 192.168.0.1 también es un servidor DNS.
Falta un pequeño detalle. Cada vez que el "lease" del servidor DHCP del proveedor se renueva, este reenvía los valores con que /etc/resolv.conf se reescribe automáticamente. Para evitar esto y de hecho borrar la nueva configuración, remueve la atribución de escritura sobre el archivo,
chattr +i /etc/resolv.conf
Falta redirigir eth1 a eth0 para que la red interna 192.168.1.0/24 del router inalámbrico pueda salir a Internet. Aquí debemos hacer dos cosas: 1) redirigir eth1 a eth0 y 2) reescribir los números IP 192.168.1.x con el número IP público del servidor Debian. Esto se llama enmascarar. Si no se enmascara, los paquetes de red salientes de la red interna tendrian IP 192.168.1.x y serían bloqueados ("IP spoofing").
En Debian, redirigir no es una opción por omisión. Para activarlo hay que modificar el valor de /proc/sys/net/ipv4/ip_forward de 0 a 1.
# echo 1 > /proc/sys/net/ipv4/ip_forward
Un,
$ cat /proc/sys/net/ipv4/ip_forward
debería retornar 1.
Falta otro pequeño detalle. Al reiniciar el computador, se reescribe /proc/sys/net/ipv4/ip_forward con el valor por omisión, que es 0, deshabilitando la redirección. Para evitar esto, edita /etc/sysctl.conf y descomenta,
net.ipv4.ip_forward=1
Ahora el valor de /proc/sys/net/ipv4/ip_forward se reescribe a 1.
En este punto puede ser ventajoso entrar a la administración del router inalámbrico, quizás con otro computador de la sub-red 192.168.1.0/24, y activar la administración remota desde la IP 192.168.0.1.
Ahora hay que activar el enrutamiento enmascarando las IP con iptables:
// Haciendo NAT en el servidor
sudo iptables -A FORWARD -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.0.0.0/8 -o eth0 -j MASQUERADE
// Esto viene a decir que cojo toda la red privada y permito que salga por el interfaz publico