
Esta receta explica cómo configurar un ordenador para que sirva como router de tu pequeña red domestica. 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...
Este equipo hará de router. Sirve cualquier cosa mayor de un Pentium. Un K6 o un PII con 64 MB es más que suficiente para los servicios básicos.
Herramienta de administración de filtrado de paquetes IP.
Como vas a utilizar iptables necesitas un Linux-2.6 o superior (aunque también serviría un 2.4).
Es un servidor DHCP y caché DNS muy versátil y fácil de configurar.
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:
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.
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.
Aquí puedes ver un fichero completo /etc/network/interfaces para el caso en que eth0 se configure por DHCP contra tu ISP.
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
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:
Router:~# echo 1 > /proc/sys/net/ipv4/ip_forward
O mejor aún, como queremos que ocurra la siguiente vez que arranque el equipo, modifica el fichero /etc/sysctl.conf para que quede así:
net.ipv4.ip_forward=1
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:
Router:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Con esto, los equipos conectados a la interfaz eth1 de Router ya tienen conexión a Intenet, aunque sus IPs habría que configurarlas "a mano" y no son capaces de resolver nombres. Vamos a ver cómo solucionar esas dos cuestiones.
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,12h dhcp-option=3,192.168.0.1 dhcp-option=6,192.168.0.1
Este fichero está muy bien documentado con comentarios e incluye ejemplos de todas las posibilidades. Después de realizar las modificaciones reinicia el servicio con:
Router:~# /etc/init.d/dnsmasq restart
Restarting DNS forwarder and DHCP server: dnsmasq.
Simplemente con eso, dnsmasq te da los siguientes servicios:
Además dnsmasq permite asignar IPs fijas (del rango) y nombres dependiendo de la MAC y otro muchas opciones avanzadas.
Puedes configurarlo siguiendo la receta de DNS dinámico público.
Por hacer. Una receta sobre squid?
Ver la Receta de iptables
Ver la Receta de iptables
Por hacer. En la receta de iptables?
Para guardar las reglas activas (las que has ido poniendo hasta ahora) ejecuta:
Router:~# iptables-save > /etc/iptables.up.rules
Y ahora hay que hacer que esa configuración se cargue automáticamente al levantar la interfaz de red principal (la externa). Para ello, edita de nuevo el fichero /etc/network/interfaces para que la entrada de eth0 quede así:
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.up.rules
Comentarios
Excelente
Exelente la guia, va al pelo!
VPN
Otra cosa chula sería montar una VPN. En cuanto pueda, me lío y escribo el manualillo.
--
In a world without Walls and Fences, ¿who needs Windows or Gates?
enlaces para tu receta...
Sí que es una cosa muy curiosa.
Petición
No sabía muy bien dónde poner esto. Creo que aquí irá bien. Básicamente, este comentario es una petición de receta.
Desde hace unos meses (Febrero, creo) no puedo utilizar MI cuenta de correo electrónico de la UCLM desde mi casa. ¿La razón? Que en mi casa no tengo una dirección IP de la red de la UCLM. Me parece un poco tonto dar cuentas de correo y restringir su uso a cuando estés en un ordenador "de la universidad".
Ya sé que se puede utilizar a través de webmail, pero... en fin, que me gustaría poder seguir disfrutando de mi cuenta con mi cliente de POP3, como hasta ahora.
¿Solución? Crear un túnel IP para obtener una dirección de la uni. Si alguien se ha peleado con estas cosas, agradecería una receta.
-------------
Nacho
-------------
Nacho
Creo
que los alumnos no pueden crear túneles VPN desde fuera de la red de la UCLM (pero no conozco el motivo). De todos modos inténtalo y nos cuentas. El método es simple:
# apt-get install uclmwifi
# uclmvpn
PS: Cleto se va a mosquear cuando lea tu "petición"...
No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.
No sabía
Tenía el uclmwifi instalado, obviamente, pero no sabía que tenía un script aparte para hacer VPN.
Lo he probado y no rula. Dice:
# uclmvpn
*** Checking parameters... OK
*** Checking connection... OK
*** Creating pptp tunnel...........FAIL
WARNING - It's probably you haven't permissions for external connections to UCLM-VPN.
See /var/log/vpn-mppe.log for more details.
Que es básicamente, lo que ya me habías advertido. Por cierto, Cleto, me permito corregirte un poco: deberías cambiar el "It's probably you haven't..." por "Probably you don't have..."
Aunque si lo que quieres es decir literalmente "es probable que...", entonces deber poner: "It's likely that you don't have"
De todas formas, una recetilla sobre túneles (así en general, no hace falta que sea con la UCLM) no estaría mal...
-------------
Nacho
-------------
Nacho
Ó ...
Probably you have no...
--
PPC: int main(){long foo=1649571173;puts(&foo);}
x86: int main(){long foo=1702187618;puts(&foo);}
brue
dnsmasq en el PC
Una receta para configurar dnsmasq como caché DNS en el host (si no lo tienes en el router)
Servidor casero
La gente de LinuxAlbacete ha dado un cursito muy interesante sobre cómo montar un servidor casero con Debian GNU/Linux. Es algo muy parecido a lo que Tobías tenía preparado para la pasada party de Noviembre y que no se dio por falta de tiempo.
Pero lo bueno es que se han currado un manual para seguir la instalación y configuración paso a paso (muy masticadito) que está disponible en PDF y en ODT
Creo que esta documentación da para varias recetas pues se trata de un documento de 60 páginas, aunque también es cierto que viene explicado todo con mucho detalle (incluida la instalación). Por el momento puede servir para complementar esta receta con los temas que dejé un poco colgados colgados, como el firewall. Y aprovechando la coyuntura… ¿Quién se anima a hacer recetas de…?
Enhorabuena desde aquí a la gente de Albacete por su trabajo y dedicación. A ver si los de por aquí nos ponemos las pilas…