Gentoo Logo

Guía de enrutamiento doméstico

Contenido:

1.  Introducción

Montar su propio enrutador (router, en inglés) con viejas piezas de repuesto tiene algunas ventajas frente a comprar un router enlatado como un Linksys. La mayor, de lejos, es el control sobre la conexión. Dejo las otras ventajas a su imaginación; todo se puede hacer en este escenario, solo es cuestión de lo que se necesite.

Esta guía le mostrará cómo configurar la Traducción de Direcciones de Red (en inglés, Network Address Translation o NAT) en el enrutador (núcleo e iptables), añadir y configurar servicios comunes (Sistema de Nombres de Dominio -en inglés, Domain Name System, DNS- mediante dnsmasq, dhcp usando dhcpcd, ADLS mediante ppp), y acabar haciendo cosas más elaboradas y divertidas (redirección de puertos -en inglés, port forwarding-, perfilado o gestión de tráfico -en inglés, traffic shaping-, proxies/caching, etc ...).

Antes de comenzar hay unos pocos requisitos básicos que debe reunir. Primero, necesitará un ordenador con al menos 2 tarjetas de red (en inglés, NIC o Network Interface Cards) instaladas. Luego, necesitará los parámetros de configuración de su conexión a Internet (cosas como IP/DNS/puerta de enlace/nombre de usuario/contraseña). Finalmente, necesitará un poco de tiempo libre y algo de amor a Gentoo.

Las convenciones utilizadas en esta guía son:

  • eth0 - Tarjeta de red para la red local (Local Area Network, LAN)
  • eth1 - Tarjeta de red conectada a la red amplia (Wide Area Network, WAN)
  • la LAN utiliza las direcciones de red privadas 192.168.0.xxx
  • el enrutador está configurado con la IP estándar 192.168.0.1
  • el enrutador ejecuta Linux 2.4 o 2.6; queda a su riesgo usar el núcleo 2.0/2.2

Importante: Debido a consideraciones de seguridad, le sugiero firmemente que desactive cualquier servicio que no necesite en el enrutador hasta tener la oportunidad de que el cortafuegos esté configurado y funcionando. Para ver los servicios que se están ejecutando actualmente basta ejecutar rc-status.

2.  Configuración del núcleo (lo primero a hacer)

Su núcleo o 'kernel' necesita tener en ejecución los controladores para ambas tarjetas de red. Para comprobar si sus tarjetas están ya configuradas, basta ejecutar ifconfig. Su salida puede diferir ligeramente de la siguiente, lo que resultaría normal. Lo que importa es que la interfaz esté activa.

Listado de Código 2.1: Verificación de las tarjetas de red (NIC)

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:60:F5:07:07:B8
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x9800

eth1      Link encap:Ethernet  HWaddr 00:60:F5:07:07:B9
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 Base address:0x9400

Si no se muestra la información de sus dos tarjetas y no está seguro de qué tipo de tarjetas se trata, pruebe a ejecutar lspci | grep Ethernet. Puede obtenerlo mediante emerge pciutils. Una vez tenga esta información, vaya al núcleo y añada el soporte para los controladores correctos.

Lo siguiente que necesitará es el soporte para iptables y NAT (y gestión de tráfico, si así lo quiere).La siguiente lista se divide en opciones siempre requeridas (*), requeridas solo para adsl vía PPPoE (a), aconsejadas para todos (x), y solo para gestión de tráfico (s). No importa que defina las características embebidas en el núcleo o como módulos con tal de que cuando se necesite la opción, el módulo o módulos correctos sean cargados (no obstante, la carga de módulos se deja al lector como un divertido ejercicio).

Listado de Código 2.2: Opciones de red

  Networking options  --->
     [*] TCP/IP networking
        [*] IP: advanced router
     [*] Network packet filtering (replaces ipchains)
Si utiliza 2.4.x, debe habilitar los siguiente para el DHCP:
     [*] Socket Filtering

     IP: Netfilter Configuration  --->
        [*] Connection tracking (required for masq/NAT)
           [x] FTP protocol support
           [x] IRC protocol support
        [*] IP tables support (required for filtering/masq/NAT)
           [*] IP range match support
           [x] MAC address match support
           [*] Multiple port match support
           [*] Packet filtering
              [*] REJECT target support
              [x] REDIRECT target support
           [*] Full NAT
              [*] MASQUERADE target support
           [s] Packet mangling
              [s] MARK target support
           [x] LOG target support

     QoS and/or fair queueing  --->
        [s] QoS and/or fair queueing
           [s] HTB packet scheduler
           [s] Ingress Qdisc

     [a] PPP (point-to-point protocol) support
        [a] PPP filtering
        [a] PPP support for async serial ports
        [a] PPP support for sync tty ports
        [a] PPP Deflate compression
        [a] PPP BSD-Compress compression
        [a] PPP over Ethernet

Nota: Algo puede variar ligeramente entre un núcleo 2.4 y un 2.6, pero debería ser capaz de darse cuenta :). Incluso entre los núcleo 2.6, esas opciones tienen tendencia a moverse. ¡Buena suerte!

3.  Abrazar la WAN (alias Internet)

Introducción

Hay varias maneras de conectarse a Internet por lo que solo trataré aquéllas que me son más familiares. Revisaremos ADSL (PPPoE) y módems de cable (IP estática o dinámica). Si hay otras formas además de estas, les invito a que escriban una pequeña reseña y me la envíen por correo electrónico. Pasen por alto cualquiera de las secciones en este capítulo que no le sean de aplicación. Este capítulo trata de conectar el enrutador a Internet a través de eth1.

ADSL y PPPoE

Todo el elaborado software de PPPoE que era proporcionado por rp-pppoe (Roaring Penguin) ha sido integrado en el paquete estándar PPP. Simplemente haga emerge ppp y estará encaminado. ¿Recuerda cómo le decía que necesitaría la información de usuario/contraseña? Bien, no le he mentido y ¡espero que disponga de ella ahora! Abra en su editor preferido /etc/ppp/pppoe.conf y configúrelo.

Listado de Código 3.1: Configurar eth1

(Reemplace 'vla9h924' con su usuario y 'boogie' con su contraseña)

# nano /etc/conf.d/net
Indique a openrc que utilice adsl sobre eth1 para ppp0:
config_ppp0="ppp"
link_ppp0="eth1"
plugins_ppp0="pppoe"
pppd_ppp0="
  defaultroute
  usepeerdns
Puede necesitar otras opciones, vea /usr/share/doc/openrc-*/net.example.bz2
"
username_ppp0="vla9h924"
password_ppp0="boogie"

# ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0 default
# /etc/init.d/net.ppp0 start

Aviso: Cuando la interfaz DSL se levante, creará ppp0. Si bien la tarjeta de red se llama eth1, la IP está ahora vinculada a ppp0. Desde este momento, cuando vea ejemplos que utilicen 'eth1', sustitúyalo con 'ppp0'.

Aviso: Asegúrese que cambia los permisos del fichero /etc/conf.d/net para que solo root lo pueda leer/escribir ya que contiene su nombre de usuario y contraseña.

Aviso: Aquéllos que están cambiando desde el paquete rp-pppoe, o la gente que observa extraños cortes en la conexión, pueden consultar la sección MTU en el capítulo de Solución de problemas

Cable con IP dinámica/estática

Si tiene una IP estática necesitará menos detalles que si tiene una IP dinámica. Los usuarios "estáticos" necesitarán conocer su IP, puerta de enlace y servidores DNS.

Listado de Código 3.2: Setting up eth1

Usuarios con IP dinámica:
# emerge dhcpcd
# nano /etc/conf.d/net
Necesitará una entrada similar a:
config_eth1="dhcp"
Usuarios con IP estática:
# nano /etc/conf.d/net
Necesitará entradas como:
config_eth1="66.92.78.102/24 brd 66.92.78.255"
routes_eth1="default via 66.92.78.1"
# nano /etc/resolv.conf
Añada una línea por cada servidor DNS:
nameserver 123.123.123.123

Configuración para IP dinámica o estática:
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

Debería de haberlo configurado todo ya.

4.  Abrazar la LAN (trayendo algunos amigos)

Este paso es pan comido comparado con el anterior.

Listado de Código 4.1: Configurar eth0

# nano /etc/conf.d/net
Añada una línea como la siguiente:
config_eth0="192.168.0.1/24 brd 192.168.0.255"
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start

5.  Servicios en la LAN (porque somos buena gente)

Servidor DHCP

Apuesto que sería bonito que cualquiera en su casa pueda simplemente enchufar su ordenador en la red y todo funcione. ¡No necesita recordarles galimatías o hacerles mirar fijamente confusas pantallas de configuración! La vida puede ser magnífica, ¿verdad? Le presento el Protocolo de Configuración Dinámica de Hosts (DHCP, en sus siglas en inglés) y por qué debería encargarse de él.

DHCP es exactamente lo que su nombre indica. Es un protocolo que le permite configurar dinámicamente otros equipos (hosts). Se ejecuta un servidor DHCP en el enrutador, que da toda la información acerca de su red (IPs válidas, servidores DNS, puertas de enlace, etc.), y entonces cuando los otros hosts arrancan, ejecutan un cliente DHCP para configurarse solos automáticamente. ¡Sin arrugarse ni despeinarse! Para más información a cerca de DHCP, puede siempre visitar Wikipedia.

Usaremos un paquete llamado dnsmasq que proporciona tanto los servicios DHCP como DNS. Por ahora nos centraremos en la parte de DHCP. Si queremos usar otro servidor DHCP distinto, podemos encontrar otro ejemplo en el capítulo "Cosas divertidas". Incluso, si solo quiere jugar con las opciones del servidor DHCP basta leer los comentarios de /etc/dnsmasq.conf. Todas las opciones por defecto deberían funcionar bien.

Listado de Código 5.1: Configurar un servidor DHCP

# emerge dnsmasq
# nano /etc/dnsmasq.conf
Añada esta entrada para habilitar dhcp:
dhcp-range=192.168.0.100,192.168.0.250,72h
Restringir el uso de dnsmasq solo en la interface LAN
interface=eth0

# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start

¡Ahora su pequeño enrutador es un genuino servidor DHCP! ¡Enchufe esos ordenadores y observe cómo funcionan! Con los sistemas Windows debe ir a las Propiedades TCP/IP y seleccionar las opciones 'Obtener una dirección IP automáticamente' y 'Obtener las direcciones de los servidores DNS automáticamente'. Algunas veces, los cambios no son instantáneos, por eso debe abrir un intérprete de comandos y ejecutar ipconfig /release e ipconfig /renew. Pero ya es suficiente con Windows, volvamos a nuestro pingüino favorito.

Servidor DNS

Cuando alguien quiere visitar un lugar en Internet, recuerda nombres, no una cadena de números raros. Al fin y al cabo, ¿qué es más fácil de recordar, ebay.com o 66.135.192.87? Aquí es donde entra DNS. Los servidores DNS se ejecutan en Internet, y cada vez que alguien pretende visitar 'ebay.com', esos servidores convierten 'ebay.com' (como nosotros entendemos) en '66.135.192.87' (como nuestros ordenadores entienden). Para más información sobre DNS, puede visitar como siempre Wikipedia.

Puesto que estamos utilizando dnsmasq para nuestro servidor DHCP, que incluye un servidor DNS, ¡no tendremos que hacer nada ahora!. Su pequeño enrutador ya proporciona DSN a sus clientes DHCP. Apuesto a que quisiéramos que todo fuese tan fácil ;).

Desde luego puede elegir cualquier otro servidor DNS si se encuentra más a gusto con él, pero la razón por la que dnsmasq es bueno es porque está diseñado para hacer exactamente aquello que queremos y nada más. Es un pequeño servidor DNS que presta almacenamiento caché y retransmisión de peticiones DNS en redes locales. Aquí no estamos buscando proveer DNS para nuestro propio dominio, únicamente ofrecer servicios simples de DNS a cualquiera en nuestra LAN.

NAT (alias enmascaramiento de IP)

En este punto, la gente en su red local puede hablar con otros en la misma y pueden localizar nombres de equipos externos a través de DNS, pero no pueden todavía conectarse a Internet. Mientras que se puede pensar que esto es positivo (¡se obiente un mayor ancho de banda!), apuesto que ellos todavía no están muy contentos.

Aquí es donde entra la Traducción de Direcciones de Red (en inglés, "Network Address Translation", NAT). NAT es el camino para conectar múltiples ordenadores en una LAN privada a Internet cuando solo se dispone de un reducido número de direcciones IP. Normalmente, se obtiene una IP de su proveedor de servicios Internet (ISP, son sus siglas en inglés), pero lo que se quiere es tener su casa enteramente conectada a Internet. NAT es la magia que lo hace posible. Para más información acerca de NAT puede visitar como siempre Wikipedia.

Nota: Antes de que empecemos, asegúrese que dispone de iptables en su sistema. Si bien se instala automáticamente en muchos sistemas, podría no tenerlo. Si no lo tiene, simplemente ejecute emerge iptables.

Listado de Código 5.2: Configurar iptables

Primero vaciaremos nuestras reglas actuales
# iptables -F
# iptables -t nat -F

Configuración de las directrices por defecto para manejar el resto de tráfico

# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP

Copie y pegue estos ejemplos ...
# export LAN=eth0
# export WAN=eth1

Luego aseguraremos los servicios que solo trabajan para la LAN
# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT

(Opcional) Permitir el acceso a nuestro servidor ssh desde la WAN
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

Descartaremos los paquetes TCP / UDP dirigidos a puertos privilegiados
# iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP

Finalmente añadiremos las reglas para NAT
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
Decir al núcleo que el enmascaramiento IP (IP-forwarding, en inglés) está correcto
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

Esto lo hacemos porque al arrancar no hemos ejecutado las reglas
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
Añada o elimine los comentarios de las siguientes líneas:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

Si tiene una dirección de internet dinámica debería
probablemente habilitar esto:
net.ipv4.ip_dynaddr = 1

Una vez haya tecleado todo esto, el resto de su red debería ser ya capaz de usar Internet tal como si estuviesen conectados directamente ellos mismos.

La opción ip_dynaddr es práctica para llamar a sistemas bajo demanda, o cuando el PSI proporciona direcciones dinámicas. Trabaja alrededor del problema de intentar una conexión antes que la interfaz esté totalmente configurada. Realmente solo proporciona un experiencia de red más "suave" para los usuarios que están tras un enrutador.

6.  Cosas divertidas (para un día lluvioso)

Introducción

Lo crea o no, ya está hecho :). De aquí en adelante, trataré de una serie de temas comunes que podrían interesarle. Este capítulo es enteramente opcional.

Redirección de puertos

Algunas veces le interesaría ser capaz de albergar servicios en un ordenador detrás del enrutador, o simplemente facilitarle las cosas cuando se conecte remotamente. Quizás quiera ejecutar un servidor FTP, HTTP, SSH o VNC en una o más máquinas detrás de su enrutador y quiera poder conectarse a todas ellas. La única consideración es que solo puede tener una combinación de servicio/máquina por puerto. Por ejemplo, no es posible instalar tres servidores FTP detrás del router e intentar conectarse a todos ellos a través del puerto 21; solo uno puede estar en el puerto 21 mientras que los otros deberían estar en los puertos 123 y 567.

Todas las reglas de redirección de puertos son del tipo iptables -t nat -A PREROUTING [-p protocol] --dport [external port on router] -i ${WAN} -j DNAT --to [ip/port to forward to]. Desafortunadamente, iptables no acepta nombres de máquina cuando redirige puertos. Si está redirigiendo un puerto externo al mismo puerto en la máquina de la red local, puede omitir el puerto de destino. Mire la página iptables(8) para más información.

Listado de Código 6.1: Ejecución de las órdenes iptables

Copie y pegue estos ejemplos ...
# export LAN=eth0
# export WAN=eth1

Redirigir el puerto 2 a ssh en una máquina local
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22

Redirección FTP a una máquina local
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56

Redirección HTTP a una máquina local
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56

Redirección VNC para máquinas locales
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
Si quiere hacer VNC en 192.168.0.3, basta añadir ':1' al nombre de host del enrutador

Redirección de SAMBA hacia un host interno
# iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2

Redirección para Bittorrent
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2

Redirección para Donkey/eMule
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55

Soporte para Game Cube Warp Pipe
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56

Soporte para Playstation2 Online
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11

Xbox Live
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
 # iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69
 

Nota: Si tiene otros ejemplos comunes o interesantes, por favor escríbame un mensaje.

Identd (para IRC)

Internet Relay Chat (algo así como "conversaciones trasmitidas por Internet") utiliza el servicio ident con bastante profusión. Ahora que los clientes de IRC están tras el enrutador, necesitamos una manera de albergar ident tanto para el enrutador como para los clientes. Uno de tales servidores ha sido llamado midentd.

Listado de Código 6.2: Configurar ident

# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start

Hay algunos otros servidores ident en el Portage. Dependiendo de sus necesidades, le recomiendo que pruebe oidentd y fakeidentd.

Servidor de hora (Time Server)

Mantener la hora correcta en su sistema es esencial para tener un sistema saludable. Una de las formas más comunes de conseguirlo es utilizando el Protocolo de Tiempo de Red (en ingles, Network Time Protocol, NTP) y el paquete ntp (que proporciona implementaciones tanto de servidor como de cliente).

Mucha gente ejecuta el cliente ntp en sus ordenadores. Obviamente, cuantos más clientes en el mundo, mayor es el esfuerzo con el que los servidores ntp tienen que cargar. Sin embargo, en entornos como una red doméstica podemos ayudar a mantener baja la carga de los servidores públicos mientras continuamos proporcionando la hora correcta a todos nuestros computadores. Como valor añadido, también ¡nuestras actualizaciones privadas serán bastante más rápidas para los clientes! Todo lo que tenemos que hacer es ejecutar un servidor ntp en nuestro enrutador, que se sincroniza él mismo con los servidores públicos de Internet, mientras proporciona la fecha y la hora al resto de ordenadores de nuestra red. Para empezar, basta emerge ntp en el enrutador.

Listado de Código 6.3: Configurar el servidor NTP

# nano /etc/conf.d/ntp-client
Personalice si así lo quiere, pero las opciones por defecto deberían
funcionar bien
# rc-update add ntp-client default

# nano /etc/ntp.conf
Añada las líneas siguientes:
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
Eso permitirá usar únicamente su servidor ntp a clientes con una dirección IP en el rango 192.168.0.xxx
# nano /etc/conf.d/ntpd
Personalice si así lo quiere, pero las opciones por defecto deberían funcionar bien
# rc-update add ntpd default

# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start

Nota: Cuando configure su servidor debe asegurarse que permite las conexiones entrantes y salientes por el puerto de ntp (123/udp). El cliente solo necesita acceso de salida en el puerto 123/udp.

Ahora, en sus clientes, debe también emerge ntp. Sin embargo, como solo ejecutaremos el cliente ntp su configuración es bastante más simple.

Listado de Código 6.4: Configurar un cliente NTP

# nano /etc/conf.d/ntp-client
Cambie el servidor 'pool.ntp.org' en la variable NTPCLIENT_OPTS a
'192.168.0.1'
# rc-update add ntp-client default
# /etc/init.d/ntp-client start

Servidor Rsync

Todos los que tienen múltiples ordenadores con Gentoo en la misma red local, frecuentemente buscan evitar ejecutar en cada máquina emerge sync con los servidores remotos. Instalando un rsync local conseguimos ahorrar tanto nuestro ancho de banda como el ancho de banda de los servidores rsync de Gentoo. Es muy simple de hacer.

Nota: Una guía de rsync más en profundidad puede encontrarse en la guía rsync oficial.

Puesto que cada máquina Gentoo necesita rsync, no es necesario instalarlo. Editaremos el fichero de configuración por defecto /etc/rsyncd.conf, eliminaremos los comentarios de la sección [gentoo-portage] y nos aseguraremos de añadir una opción address. Las otras opciones por defecto deberían funcionar bien.

Listado de Código 6.5: Configuración del servidor rsync

pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1

[gentoo-portage]
path = /mnt/space/portage
comment = Gentoo Linux Portage tree
exclude = /distfiles /packages

Luego hay que iniciar el servicio (nuevamente, las opciones por defecto son buenas)

Listado de Código 6.6: Iniciar el servidor rsync

# /etc/init.d/rsyncd start
# rc-update add rsyncd default

Solo queda indicar a los clientes que hagan sync contra el servidor local.

Listado de Código 6.7: Configuración SYNC de cliente en make.conf

SYNC="rsync://192.168.0.1/gentoo-portage"

Servidor de correo

A veces es agradable ejecutar su propio servidor de Protocolo Simple de Transferencia de Correo (en inglés, Simple Mail Transfer Protocol, SMTP) en el enrutador. Cada uno tiene su propia razón para querer hacerlo, pero yo lo ejecuto porque los usuarios ven cómo el correo ha sido enviado instantáneamente y el trabajo de reintentar/enrutar se deja en manos del servidor de correo. Algunos ISP tampoco permiten retransmitir para cuentas que no forman parte de su red (como Verizon). También, puede fácilmente reducir el caudal de la entrega de correo de tal manera que adjuntos grandes no retrasen seriamente su conexión media hora.

Listado de Código 6.8: Configurar SMTP

# emerge netqmail
Asegúrese que la salida de `hostname` es correcta
# emerge --config netqmail
# iptables -I INPUT -p tcp --dport smtp ! -i ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# cd /etc/tcprules.d
# nano tcp.qmail-smtp

Añada una entrada como la siguiente para permitir (allow):
192.168.0.:allow,RELAYCLIENT=""

# make
# rc-update add svscan default
# /etc/init.d/svscan start

Soy un gran admirador de qmail, pero cada uno es libre de utilizar un mta distinto :). Cuando configure el correo electrónico en los ordenadores de su red, indique que su servidor SMTP es 192.168.0.1 y así todo estaría correcto. Podría visitar página web de netqmail para más información.

Servidor DHCP completo

Anteriormente hemos utilizado dnsmasq para proporcionar servicios de DHCP a todos nuestros clientes. Para mucha gente con una LAN pequeña es perfecto. Pero puede que necesite algo con más opciones. De esta manera podremos optar por un servidor DHCP completo como el proporcionado por ISC.

Listado de Código 6.9: Configurar dhcpd

# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
(Este es un ejemplo de fichero de configuración:)
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100 192.168.0.250;
  default-lease-time 259200;
  max-lease-time 518400;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.1;
  option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
(Set IFACE="eth0")
# rc-update add dhcpd default
# /etc/init.d/dhcpd start

Esta es la configuración mínima necesaria para sustituir la funcionalidad DHCP de dnsmasq que hemos usado anteriormente. Y hablando de esto, ya debemos haber deshabilitado las opciones de DHCP en dnsmasq, ¿verdad? Si no ha sido así, lo deberemos hacer ahora (basta con comentar el apartado de dhcp-range en /etc/dnsmasq.conf y reiniciar el servicio)

Conectar otra LAN (o dos o tres o ...)

A veces tendremos la necesidad de conectar el enrutador a otra red local (LAN). Quizá queramos conectarnos temporalmente con un grupo de amigos, o simplemente somos unos obsesos del orden y queremos separar la red en diferentes grupos de ordenadores, o quizás estamos aburridos. Cualquiera que sea la razón, extender el enrutador a otra red LAN debería ser bastante sencillo. En los siguientes ejemplos, asumiremos que la nueva red está conectada a través de una tercera tarjeta ethenet llamada eth2.

Primero configuraremos la interfaz. Basta seguir las indicaciones de 4.1 code listing y reemplazar eth0 por eth2 y 192.168.0 por 192.168.1.

Luego tendremos que ajustar dnsmasq para que dé servicio a la nueva interfaz. Basta editar nuevamente el fichero /etc/conf.d/dnsmasq y añadir -i eth2 a DNSMASQ_OPTS; usar -i varias veces es correcto. Seguidamente hay que editar /etc/dnsmasq.conf y añadir otra línea similar a la ya existente de dhcp-range en 5.1 code listing, cambiando 192.168.0 por 192.168.1. Tener múltiples líneas de dhcp-range también es correcto.

Finalmente, miraremos las reglas de 5.2 code listing y duplicaremos las que contienen -i ${LAN}. Se puede crear otra variable, por ejemplo LAN2 para hacerlo más fácil.

7.  Solución de problemas

Herramientas comunes

Si tiene dificultades para que sus ordenadores se comuniquen, puede intentar utilizar las herramientas siguientes (que pueden encontrarse en la categoría net-analyzer de Portage):

Utilidad Descripción
wireshark Herramienta GUI para ver todos los datos en bruto de la red de acuerdo a los filtros
tcpdump Herramienta de consola para volcar los datos en bruto de la red de acuerdo a los filtros
iptraf Monitor de una red IP basado en ncurses
ettercap Monitor/manejador de red basado en ncurses

DHCP no quiere iniciarse

Cuando iniciamos el guión de dhcp en init.d por primera vez y no se carga y tampoco nos proporciona ninguna información de utilidad.

Listado de Código 7.1: Ejemplo de fallo de DHCP

# /etc/init.d/dhcp start
 * Setting ownership on dhcp.leases ...          [ ok ]
 * Starting dhcpd ...                            [ !! ]

El truco está en conocer cómo dhcpd muestra esta salida. Simplemente iremos a /var/log y leeremos los ficheros de registro. Puesto que determinar el fichero exacto de registro depende del paquete de bitácora del sistema instalado, puede probar con grep -Rl dhcpd /var/log para cubrir todas las posibilidades. Lo más sencillo sería un fallo de tecleo en el fichero de configuración. También puede intentar ejecutar dhcpd -d -f (depuración y en primer plano) y depurar el error según lo mostrado.

Valor MTU incorrecto

Si experimenta errores intermitentes (como no poder acceder a determinadas páginas web mientras que otras se cargan bien), puede que tenga un problema de Path MTU Discovery. La manera rápida de verificarlo es ejecutar la siguiente orden iptables:

Listado de Código 7.2: Burlando problemas MTU

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Lo que afectará a todas las conexiones nuevas, por tanto, actualice la página con la que está teniendo problemas para probarlo. En caso de que esto ayude, el valor estándar para una conexión Ethernet de 100Mbits es 1500; este valor también se aplica a PPPoA. Para las conexiones PPPoE es de 1492. Para más información, debería leer el capítulo 15 de Linux Advanced Routing & Traffic Control HOWTO (en inglés).

Si esta orden no le funciona, tal vez quiera colocar la regla en la tabla de procesamiento (mangle, en inglés). Solo agregue -t mangle a la orden.

Imposible conectar dos máquinas directamente

Si (por cualquier razón) necesita conectar dos máquinas directamente sin un concentrador o un conmutador, un cable ethernet normal no servirá, a no ser que tenga una tarjeta de red Auto MDI/MDI-X (también conocida como "autosensing"). Necesitará un cable distinto llamado "cable cruzado". Esta página de la Wikipedia explica los detalles.

8.  Notas finales

No tengo otras notas finales que si encuentra problemas con la guía, por favor contacte conmigo o abra una incidencia en Gentoo's Bugtracking Website. Si tiene algo interesante que cree que mejoraría esta guía, envíemelo para su inclusión.



Imprimir

Página actualizada 3 de abril, 2013

Sumario: Este documento detalla cómo convertir una vieja máquina con Gentoo en un enrutador para conectar su red doméstica a Internet.

Mike Frysinger
Autor

Carles Ferrer Peris
Traductor

John Christian Stoddart
Traductor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.