Compartir la conexión a Internet (router doméstico) con GNU/Linux

networking

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.

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

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:

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

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:

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.

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,12h

Si usas una versión de dnsmasq más antigua quizá tengas que poner también

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:

  • 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.

Además dnsmasq permite asignar IPs fijas (del rango) y nombres dependiendo de la MAC y otras muchas opciones avanzadas.

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 iptables

Servidores en la red local accesibles desde el exterior (opcional)

Ver la Receta de iptables

NAT para IRC y FTP (opcional)

Por hacer. En la receta de iptables?

Guardar la configuración 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

Referencias

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Tengo una conexion 3g en una netbook y quisiera compartir la red

Hola, soy bastante nuevo en esto de Linux, Ubuntu, etc. Tengo una conexion 3g en una Netbook Acer Aspire One, y del puerto LAN que tiene la netbook quiero compartir la conexion con una PC de escritorio que tiene Windows XP SP3, el procedimiento seria basicamente el mismo que indicas en esta receta o cambia???

Desde ya muchas gracias.

Juan Carlos

Imagen de david.villa

A parte del nombre de las

A parte del nombre de las interfaces de red yo diría que pocos cambios más puede requerir, pero hay una forma de salir de dudas: inténtalo.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Excelente

Exelente la guia, va al pelo!

Imagen de magmax

VPN

Otra cosa chula sería montar una VPN. En cuanto pueda, me lío y escribo el manualillo.

Miguel Ángel García
http://magmax.org

Imagen de david.villa

enlaces para tu receta...

Sí que es una cosa muy curiosa.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de david.villa

Al final hicimos la receta

Al final hicimos la receta de OpenVPN: Túnel OpenVPN en Debian GNU/Linux

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de nacho

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. Laughing out loud

-------------
Nacho

Nacho

Imagen de david.villa

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.

Imagen de nacho

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... Sticking out tongue
-------------
Nacho

Nacho

Imagen de brue

Ó ...

Probably you have no...

--
PPC: int main(){long foo=1649571173;puts(&foo);}
x86: int main(){long foo=1702187618;puts(&foo);}

brue

Ayuda por favor

He seguido todos los pasos y esta muy bien mi problema es quiero tener 2 salidas a internet y 3 interfaces para LAN locales alguien puede asesorarme por favor tengo debian server 5.9.7

Imagen de Marot77

¿Tienes instalado el gestor de red?

¿Tienes instalado el gestor de red? En debian tienes que instala,todo los gestore de red,synaptic...ect (Almenos yo),de todas maneras si me respuesta no va por esos tiros,te podré ayudar solo dime tu correo o algo.

@Marot77 Twitter.

Imagen de david.villa

dnsmasq en el PC

Una receta para configurar dnsmasq como caché DNS en el host (si no lo tienes en el router)

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de david.villa

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…?

  • squid
  • exim (o postfix)
  • PHP
  • L.A.M.P.
  • MLdonkey
  • etc

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… Smiling

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Imagen de Marot77

Yo tenía pensado hacer un "HomeSever"

Me vendrá muy bien mirarlo,ya que lo tengo pensado,pero mi conexión no es muy rapida que digamos,entonces la transferencias por FTP que haré se descargará a 30 kb/s ¿Alguien sabe como ampliar un poco la velocidad? No me sirve:
-Cambios de ISP
-Pagar Más
espero vuestras respuestas un saludo

@Marot77 Twitter.

ayuda configurar pc con linux para router internet pppoe

Tengo 14 pcs(todas winxp) y en una de ella tengo winbugs xp haciendo de router. Internet entra a esa pc y esa le da acceso a internet a las otras 13(por medio de un Switch), me gustaria saber como configurar un ubuntu, para que haga el mismo trabajo que esa pc. no uso firewall ni nada de eso. no restrinjo paginas, solo me interesa que las demas pcs tengan internet y que si no es mucho lio, que el servidor cachee las paginas que se visitan para descongestionar un poco la linea de internet
Ademas saber si esto no me perjudica los juegos online que se juegan aca, lineage 2, world of warcraft, dota.
Por los cuales no tengo que hacer nada raro para que funcionen en mi red actual con winbugs de servidor.
la pc tiene un hd de 80gb 1 gb ddr 333 micro intel piv 1.8ghz.
lo ideal si se pudiese es que se configure el servidor con ubuntu para aprovechar al maximo el hard y la linea de internet.

Imagen de oscarah

¿Y...

...cual es la pregunta? Por que no tengo claro en qué necesitas ayuda. En concreto, lo que no veo claro es cómo quieres que hagamos tu trabajo. Sé más concreto y no grites, por favor.

[/ironic-mode]
http://www.sindominio.net/ayuda/preguntas-inteligentes.html

"aviso: la dereferencia de punteros de tipo castigado romperá las reglas de alias estricto" --GCC 4.3.1

Imagen de david.villa

Lo que pides es justo lo que

Lo que pides es justo lo que explica el post en el que has puesto este comentario. Lee la receta, aplica la receta, repetir. Para cachear te recomiendo squid, que no lo incluye la receta pero es facilísimo instalarlo.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.