Compartir la conexión a Internet (router doméstico) con GNU/Linux
Esta receta explica cómo configurar un ordenador con Debian (también Ubuntu y sucedáneos) para que sirva como router de tu pequeña red doméstica. La idea es que varios equipos puedan salir a Internet por medio de una sola conexión y con una única IP pública. Una vez consigas esto, hay varias cosas más que puedes hacer con él...
Ingredientes
- Un ordenador:
Este equipo hará de router. Sirve cualquier cosa mayor de un Pentium. Un K6 o un PII con 64 MB de RAM es más que suficiente para los servicios básicos. Es una buena oportunidad para reciclar tu viejo sobremesa, una vez instalado le sobre el monitor, teclado, ratón, CD-ROM y tarjeta de sonido; la de vídeo déjala puesta por si acaso.
- iptables:
Herramienta de administración de filtrado de paquetes IP.
- Un Linux "de los nuevos":
Como vas a utilizar iptables necesitas un Linux-2.6 o superior (aunque también serviría un 2.4).
- dnsmasq >= 2.46:
Es un servidor DHCP y caché DNS muy versátil y fácil de configurar.
Configuración de las interfaces de Red
Ese ordenador "de desecho" del que hablaba antes lo llamaremos a partir de ahora con el original nombre de Router. Bien, Router debe tener, al menos, dos interfaces de red:- Una conexión a Internet (eth0).
Debe ser algún tipo de conexión a Internet, que puede ser RTC, ADSL, cable-modem, etc. Supondremos para esta receta que usas un modem ADSL con conexión Ethernet.
Conste que podría ser RDSI, ppp o cualquier otro tipo de interfaz de red sin que ello afecte al resto del procecimiento. Supondremos que esta interfaz ya la tienes configurada conforme a las instrucciones de tu ISP.
- Una conexión a tu red local (eth1):
Será una tarjeta de red Ethernet 10/100. Esto permitirá que puedas enchufarle un conmutador y conectar "cienes y cienes" de ordenadores si quieres.
Esta interfaz debes configurarla de forma estática, con una dirección IP privada, por ejemplo 192.168.0.1.
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
Activa el forwarding (reenvío)
Normalmente un ordenador conectado a una red TCP/IP descarta todos los paquetes IP que le llegan pero no van dirigidos a él, es decir, aquellos cuya direcci IP no corresponde a ninguna de las interfaces de la máquina. Sin embargo, un router debe tratar paquetes IP que no son para él. Para conseguir esto debes activarlo explícitamente con:net.ipv4.ip_forward=1
Activa el NAT
El NAT es una técnica que permite que varios ordenadores puedan acceder a Internet aunque sólo se disponga de una IP pública. El NAT se encarga de "traducir" las direcciones IPs privadas por la única pública al enviar y realiza el proceso inverso al recibir las respuestas. Para activarlo escribe:Servidor DHCP y caché DNS
Una vez instalado dnsmasq, haz las siguientes modificaciones en el fichero /etc/dnsmasq.conf:listen-address=192.168.0.1 bind-interfaces dhcp-range=192.168.0.2,192.168.0.254,12hSi usas una versión de dnsmasq más antigua quizá tengas que poner también
- Si configuras los clientes de tu red local para usar DHCP obtendrán una IP del rango 192.168.0.[2-254]
- Se configuran automáticamente para usar tu Router como pasarela y como DNS.
- Router cachea todas las peticiones DNS que realicen los clientes y las redirije a los servidores DNS configurados en el /etc/resolv.conf de Router.
- Dispone de DNS dinámico local. Si los clientes especifican un nombre al hacer su petición DHCP, el resto de los clientes podrán usar ese nombre para resolver su IP.
Nombre público para el Router (opcional)
Puedes configurarlo siguiendo la receta de DNS dinámico público.Proxy web (opcional)
Por hacer. Una receta sobre squid?Firewall, proteger los equipos de la red local (opcional)
Ver la Receta de iptablesServidores en la red local accesibles desde el exterior (opcional)
Ver la Receta de iptablesGuardar la configuración de iptables
Para guardar las reglas activas (las que has ido poniendo hasta ahora) ejecuta:auto eth0 iface eth0 inet dhcp pre-up iptables-restore < /etc/iptables.up.rules