Router casero
Éste documento detalla cómo convertir una vieja máquina Gentoo en un router para conectar una red casera a Internet.
Introducción
Construir un router personal con partes viejas de repuesto tiene muchas ventajas sobre comprar un router pre-fabricado de grandes compañias (Linksys, D-Link, Netgear, etc.). La mayor ventaja por mucho es el control sobre la conexión. Las otras ventajas pueden dejarse a la imaginación del usuario; casi cualquier cosa puede ser hecha en este escenario, es simplememente una cuestión de necesidades.
Esta guía proporciona instrucciones en cómo configurar Traducción de Direcciones de Red (NAT) en un router personalizado (núcleo e iptables), añadir y configurar servicios comunes (Sistema de nombres de dominios (DNS) mediante net-dns/dnsmasq, DHCP mediante net-misc/dhcpcd, ADSL mediante net-dialup/ppp), y concluir con algunas cosas elaboradas y divertidas que los routers personalizados pueden hacer (reenvío de puertos, modelado de tráfico, proxies/cache, etc...).
Antes de iniciar, por favor revisa la lista de requerimientos básicos:
- Una computadora que tenga al menos 2 interfaces de red (NICs) instaladas.
- Los parámetros de configuración para la conexión de Internet (podría incluir cosas como IP/DNS/Gateway/nombre de usuario/contraseña).
- Opcionalmente una tarjeta Wi-Fi que soporte el modo maestro (master mode). El modo maestro es recomendado para evitar interfaces de red (NICs) con característica bypass ya que algunas interfaces de red (NICs) requieren controladores propietarios. Sin acceso a los controladores propietarios la tarjeta se mantendría en modo bypass permanentemente y no sería usable.
- Un poco de tiempo libre y amor a Gentoo para seguir esta guía e implementar un buen router casero funcional.
Las convenciones usadas en esta guía son:
- eth0 - Tarjeta de red conectada a la red local (LAN) o puente de red consistiendo de varias tarjetas de red
- eth1 - Tarjeta de red conectada a la red de área amplia (WAN)
- LAN utiliza el segmento de red privado 192.168.0.xxx
- La dirección IP del router está en código duro a 192.168.0.1
Debido a precauciones de seguridad, es altamente recomendable desactivar cualquier servicio innecesario en el router hasta que el firewall esté funcionando. Para ver los servicios corriendo actualmente ejecuta rc-status.
Configuración del núcleo (lo primero a hacer)
El núcleo necesita tener los controladores instalados para ambas tarjetas de red en el sistema. Para ver si las tarjetas están ya configuradas usa el comando ifconfig. La salida podría diferir ligeramente del siguiente ejemplo. Lo que importa es que las interfaces se muestren.
root #
ifconfig -a
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
La utilidad lspci es parte del paquete sys-apps/pciutils y puede ser instalado corriendo emerge sys-apps/pciutils.
Una vez que se han obtenido el fabricante y modelo de las tarjetas de red, configura el núcleo con soporte para los controladores correctos. Para más información en la configuración del núcleo ve Guía de configuración del kernel.
Los siga es soporte para Iptables y NAT (y modelado de paquetes si se desea). La siguiente lista esta separada en siempre requerido (*), requerido solo para ADSL mediante PPPoE (a), sugerido para todos (x), y solo para características de modelado (s). No importa si las características están compiladas en el núcleo o como módulos ya que cuando se necesita una característica, se carga el módulo o módulos. Para más información sobre la carga de módulos vea la guía sobre los módulos del núcleo.
-*- Networking support --->
Networking options --->
[*] TCP/IP networking
[*] IP: advanced router
[*] Network packet filtering framework (Netfilter) --->
[*] Advanced netfilter configuration
IPv6: Netfilter Configuration --->
<*> IPv6 connection tracking support
<*> IP6 tables support (required for filtering)
Those who would rather search for these features directly in menuconfig can find them under the following names: CONFIG_INET, CONFIG_IP_ADVANCED_ROUTER, and CONFIG_NETFILTER, CONFIG_NETFILTER_ADVANCED, CONFIG_NF_CONNTRACK_IPV6, and CONFIG_IP6_NF_IPTABLES.
Some things may be slightly different in the menuconfig interface on newer kernels, for example, CONFIG_NF_CONNTRACK_IPV6 does not exist in Kernel 5.10 and has now been consolidated into CONFIG_NF_CONNTRACK for both IPV6 and IPV4 (in the "Core Netfilter Configuration" tab)!
Cuando se usa un núcleo 2.4.x, se debe habilitar lo siguiente para 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
Algunas cosas pueden ser ligeramente diferentes en la interfaz de menuconfig en los núcleos más actuales, sin embargo, no debería ser muy complicado averiguarlas. ¡Buena suerte!
Abrazar la WAN (el Internet)
Introducción
Hay "muchas" formas de conectarse a Internet, sin embargo hay generalmente solo un par de maneras que son usadas por la mayoría del público. ADSL (PPPoE) y módems por cable (estático/dinámico) son los dos métodos más comunes que proporcionan los Proveedores de servicios de Internet (ISP). Si hay otros métodos disponibles, siéntete libre de añadirlos a esta artículo de la wiki. Omite cualquiera de las siguientes secciones en este capítulo que no sean aplicables a tus necesidades. Este capítulo trata de cómo lograr conectar el router a Internet mediante eth1.
ADSL y PPPoE
Todo el elegante software PPPoE que solía ser proporcionado por rp-pppoe (Roaring Penguin) ha sido integrado en el paquete estándar PPP. Simplemente ejecuta emerge ppp para instalar PPPoE. ¿Recuerdas cómo el nombre de usuario y contraseña era un requerimiento listado anteriormente? Abre el archivo /etc/conf.d/net en tu editor de texto favorito y configuralo respectivamente.
Reemplaza <username>
y <user_password>
en el siguiente ejemplo con el username y password requeridos:
config_ppp0="ppp"
link_ppp0="eth1"
plugins_ppp0="pppoe"
pppd_ppp0="
defaultroute
usepeerdns
"
username_ppp0="<username>"
password_ppp0="<user_password>"
root #
ln -s net.lo /etc/init.d/net.ppp0
root #
rc-update add net.ppp0 default
root #
service net.ppp0 start
Cuando la interfaz DSL se active, creará una entrada "ppp0" en la salida del comando ifconfig. A pesar de que la NIC es llamada eth1, la dirección IP está de hecho ligada a ppp0. A partir de ahora substituye
eth1
con ppp0
Asegúrate de cambiar los permisos del archivo /etc/conf.d/net de modo que solo usuarios con privilegios de root puedan leerlo/escribirlo. Esto es importante porque el nombre de usuario y contraseña fueron ingresados al archivo en formato de texto plano.
Para usuarios que migran del paquete net-dialup/rp-pppoe, o usuarios que experimentan reinicios extraños de la conexión, vean la sección MTU del capítulo de Solución de problemas.
Cable y/o IP dinámica/estática
Si una IP estática es necesaria entonces detalles de configuración adicionales serán necesarios. Los usuarios de IP estática necesitarán añadir la dirección IP, dirección de gateway, y las direcciones de servidores DNS.
Usuarios de IP dinámica:
root #
emerge --ask net-misc/dhcpcd
config_eth1="dhcp"
Usuarios de IP estática:
config_eth1="66.92.78.102/24 brd 66.92.78.255"
routes_eth1="default via 66.92.78.1"
nameserver 123.123.123.123
Configuración dinámica y estática:
root #
ln -s net.lo /etc/init.d/net.eth1
root #
rc-update add net.eth1 default
root #
service net.eth1 start
Después de trabajar a través de los cambios anteriores el sistema debería estar listo para continuar.
Abraza la LAN (traer algunos amigos)
Este paso es una brisa comparado con el anterior. Para usar "más" de dos dispositivos (más que uno para LAN y otro para WAN), un Network bridge (puente de red) se necesitará configurar entre todas las tarjetas de red usando la LAN. Esto permitirá múltiples tarjetas de red ser alcanzadas por la misma dirección IP.
Si un puente de red es necesario, sigue las instrucciones para configurar un puente de red. El nombre del puente (por defecto br0) reemplazará eth0 para el dispositivo LAN en los pasos de esta wiki. Si hay un número grande de dispositivos en el router casero, considera renombrarlos vía udev para hacer más fácil la administración. Configurar un puente y renombrar los dispositivos es completamente opcional pero recomendado para redes caseras grandes.
Cuando crees un punto de acceso Wi-Fi asegúrate que la tarjeta Wi-Fi soporta el modo maestro (master mode) y configura Hostapd.
config_eth0="192.168.0.1/24 brd 192.168.0.255"
root #
rc-update add net.eth0 default
root #
service net.eth0 start
Servicios LAN (porque somos buena gente)
Servidor DHCP
Sería bueno si todos en la casa pudieran conectar sus computadoras en la red y las cosas simplemente funcionaran. Sin tener que recordar detalles que nublan la mente o hacerlos mirar fijamente pantallas de configuración confusas! La vida sería grandiosa, ¿no? Introduciendo el Protocolo de Configuración Dinámica de Host (DHCP) y por qué todo el mundo debe interesarse.
DHCP es exactamente lo que su nombre implica: un protocolo que permite configuración dinámica de los equipos automáticamente. Corre un servidor DHCP en el router, dale toda la información acerca de la red (IP´s validas, servidores DNS, gateways, etc...), entonces cuando un equipo inicia, pueden correr un "cliente" DHCP para configurarse a sí mismos. Sin problemas, sin despeinarse! Para más información acerca de DHCP, visita el artículo DHCP de Wikipedia.
Esta sección usará el paquete net-dns/dnsmasq el cual proporciona ambos servicios DHCP y DNS. Por ahora enfoquémonos en el aspecto de DHCP. Nota: para correr un servidor DHCP diferente, otro ejemplo puede ser encontrado en la sección de "Cosas divertidas" más abajo. También, para jugar con las opciones del servidor DHCP lee los comentarios en el archivo /etc/dnsmasq.conf.
root #
emerge --ask net-dns/dnsmasq
dhcp-range=eth0,192.168.0.100,192.168.0.250,72h
interface=eth0
root #
rc-update add dnsmasq default
root #
service dnsmasq start
Es muy importante configurar el interfaz. Si se utilizan los ajustes por defecto dnsmasq se abrirá el enrutador a ataques de amplificación DNS que podrían crear correos electrónicos sospechosos desde el ISP que ofrece la conexión. Comprobar que el enrutador no permite ataques de amplificación DNS utilizando [1].
Ahora el pequeño enrutador es un genuino servidor DHCP. ¡Conecte los equipos y vea cómo trabajan!. Utilizando un sistema Windows navegue a las Propiedades TCP/IP y seleccione las opciones Obtener una dirección IP de forma automática y Obtener un servidor DNS de forma automática. En algunas ocasiones los cambios no son instantáneos, de modo que podría ser necesario abrir un intérprete de órdenes y lanzar ipconfig /release e ipconfig /renew. Ya es bastante en lo que Windows se refiere, ¡Es el momento de volver al nuestro pingüino favorito!
Servidor DNS
Cuando la gente quiere visitar lugares en el Internet, ellos recuerdan nombres, no una serie de números complejos. Después de todo, ¿qué es más fácil recordar, eBay.com o 66.135.192.87? Aquí es donde el DNS entra. Los servidores DNS corren por todo el Internet, y cuando alguien quiere visitar eBay.com, estos servidores convierten el texto "eBay.com" (lo que nosotros entendemos) en una dirección IP "66.135.192.87" (lo que las computadoras entienden). Para más información acerca de los DNS visita la Wikipedia.
Desde que dnsmasq está siendo usado para el servidor DHCP, e incluye un servidor DNS, no hay nada más que hacer aquí!. El pequeño router ya está proporcionando DNS a sus clientes DHCP. ¿No debería ser todo así de fácil?
Es posible elegir otros servidores DNS si son más cómodos de configurar. dnsmasq es usado en este artículo porque fue diseñado para hacer exactamente lo que esta guía requería. Es un pequeño servidor DNS con caching/forwarding para redes locales. El enfoque de esta guía no es proveer DNS para un dominio; sino proveer servicios sencillos de DNS a cada usuario de la red hogareña.
NAT (enmascaramiento de IP)
Hasta este punto, la gente en la red puede hablarse entre ella y resolver nombres de máquinas vía DNS, pero todavía no pueden conectarse a Internet. Mientras que el administrador de la red (la persona leyendo esto) podría pensar que es grandioso (más ancho de banda para el administrador!), los otros usuarios probablemente no están muy felices sin una conexión a Internet.
Aquí es donde NAT (traducción de direcciones de red) entra en acción. NAT es una forma de conectar múltiples computadoras en una LAN a la Internet cuando un pequeño número de IP's públicas están disponibles. Normalmente a un usuario casero de Internet el proveedor de Internet (ISP) le proporciona solo una dirección IP pública para la casa completa. NAT es la mágia que hace esto posible. Para más información acerca de NAT, por favor, visita Wikipedia.
Antes de iniciar, asegúrate que IPtables ha sido instalado en el sistema. Si no está instalado, instálalo: emerge iptables
Después de que IPtables está instalado, limpia las reglas actuales:
root #
iptables -F
root #
iptables -t nat -F
Configura las políticas por defecto para manejar tráfico que no encaja:
root #
iptables -P INPUT ACCEPT
root #
iptables -P OUTPUT ACCEPT
root #
iptables -P FORWARD DROP
Copia y pega lo siguiente:
root #
export LAN=eth0
root #
export WAN=eth1
El siguiente paso bloquea los servicios para que solo funcionen desde la LAN:
root #
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
root #
iptables -I INPUT 1 -i lo -j ACCEPT
root #
iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
root #
iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT
(Opcional)Permite el acceso al servidor SSH desde la WAN:
root #
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
Descarta paquetes TCP / UDP a puertos privilegiados:
root #
iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
root #
iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
Finalmente agrega las reglas para NAT:
root #
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
root #
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
root #
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
root #
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
Informa al núcleo que el reenvío IP está permitido:
root #
echo 1 > /proc/sys/net/ipv4/ip_forward
root #
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
Instruye al demonio de IPtables para que guarde los cambios a las reglas, luego añade IPtables al nivel de ejecución default
root #
/etc/init.d/iptables save
root #
rc-update add iptables default
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
Para internet dinámico la siguiente configuración debería ser activada:
net.ipv4.ip_dynaddr = 1
Una vez que el texto anterior ha sido introducido el resto de los usuarios de la red deberían ser capaces de usar el Internet como si estuvieran conectados directamente ellos mismos.
La opción ip_dynaddr
es útil para sistemas "marcar bajo demanda" o cuando el proveedor de Internet (ISP) da direcciones dinámicas. Esto soluciona el problema cuando se intenta una conexión antes de que la interfaz de Internet esté completamente configurada. Esto proporciona una experiencia de red más "suave" para los usuarios detrás del ruteador.
Cosas divertidas (para un día lluvioso)
Introducción
Lo creas o no, está hecho! De aquí en adelante, otros temas comunes que podrían interesar serán cubiertos. Todo en las siguientes secciones es completamente opcional.
Reenvío de puertos
A veces los usuarios necesitan ser capaces de hospedar servicios en una computadora detrás del ruteador, o necesitan ser capaces de conectarse remotamente a una computadora detrás del ruteador. Quizá un servidor FTP, HTTP, SSH o VNC se necesita en una o más máquinas detrás del ruteador y usuarios externos necesitan conectarse a ellos. El único detalle con el Reenvío de puertos es que solo una combinación de máquina/servicio puede ser establecida por puerto. Por ejemplo, no hay forma práctica de configurar tres servidores FTP detrás del ruteador y conectarse a ellos a través del puerto 21; solo un sistema puede estar en el puerto 21 mientras que los otros necesitarán estar en otros puertos (el puerto 123 y puerto 567 serían buenas opciones).
Todas las reglas de reenvío de puertos son de la forma iptables -t nat -A PREROUTING -p [protocolo] --dport [puerto externo en el ruteador] -i ${WAN} -j DNAT --to [dirección ip/puerto a reenviar]
. Desafortunadamente, iptables no acepta nombres de equipos cuando se hace reenvío de puertos. Cuando se reenvíe un puerto externo a el mismo puerto en la máquina interna omite el puerto de destino. Ve la página del manual de iptables(8) para más información.
root #
export LAN=eth0
root #
export WAN=eth1
Reenvía el puerto 2 a ssh en una máquina interna:
root #
iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
Reenvío de FTP a un equipo interno:
root #
iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
Reenvío de HTTP a un equipo interno:
root #
iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
Reenvío de VNC para equipos internos:
root #
iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
root #
iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
Los clientes VNC por defecto se conectan al puerto 5900. En el caso de que un puerto diferente necesite ser seleccionado, la mayoría de los clientes VNC usan un sufijo que se suma a 5900 para encontrar el puerto final. Entonces, si está en el caso anterior, para entrada de VNC a 192.168.0.3, añade
:1
a la dirección IP del equipo destino (la cuál es la dirección WAN del ruteador) de esta manera el cliente VNC se conecta al puerto 5901.Reenvío de SAMBA a un equipo interno (puertos de acceso para cubrir Windows)
root #
iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.0.2
root #
iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.0.2
root #
iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
root #
iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.0.2
root #
iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
Reenvío de Bittorrent:
root #
iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
Reenvío de eDonkey/eMule:
root #
iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
Soporte para Game Cube Warp Pipe:
root #
iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
Soporte en línea para Playstation 2:
root #
iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
root #
iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
Para Xbox Live:
root #
iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
root #
iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
root #
iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69
Identd (para IRC)
IRC (Internet Relay Chat) utiliza el servicio "ident" muy intensamente. Ahora que los clientes IRC estan detrás del ruteador, una manera de hospedar el servicio ident para ambos ruteador y clientes es necesaria. Un servidor ha sido creado para este propósito. Es llamado net-misc/midentd.
root #
emerge --ask net-misc/midentd
root #
rc-update add midentd default
root #
service midentd start
Hay otros servidores ident en el árbol de Portage. Otras opciones viables son net-misc/oidentd y net-misc/fakeidentd.
Servidor de tiempo
Mantener la hora del sistema es esencial para mantener un sistema saludable. Una de los más maneras más comunes de cumplir esto es con el Protocolo de Tiempo de Red (NTP) y el paquete net-misc/ntp (el cuál proporciona implementaciones para ambos servidor y cliente).
Muchos usuarios corren clientes ntp en sus computadoras. Obviamente, mientras más clientes en el mundo, más grande la carga para los servidores ntp. En ambientes como las redes caseras un servidor NTP puede ser instalado localmente para ayudar a mantener la carga baja en los servidores públicos mientras aún se proporciona el tiempo correcto a los sistemas locales. Como un bono añadido, las actualizaciones privadas serán mucho más rápidas para los clientes locales! La configuración es sencilla: corre un servidor NTP en el ruteador que se sincronice a sí mismo con el servidor público de internet mientras, al mismo tiempo, proporciona el tiempo al resto de las computadoras de la red. Para iniciar, simplemente, emerge ntp en el ruteador y edita /etc/conf.d/ntp-client a tus preferencias.
root #
rc-update add ntp-client default
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
Esto solo permitirá clientes NTP con una dirección IP en el rango de 192.168.0.xxx usar el servidor NTP.
root #
rc-update add ntpd default
root #
service ntpd start
Asegúrate de permitir comunicaciones de entrada y salida en el puerto de NTP (123/udp) cuando configures el servidor. El cliente solo necesita acceso de salida en el puerto 123 sobre UDP.
Ahora, en los clientes, ejecuta emerge ntp. Correr la configuración del cliente NTP es mucho más sencillo.
En /etc/conf.d/ntp-client, cambia el servidor pool.ntp.org
en la variable NTPCLIENT_OPTS
a 192.168.0.1
root #
rc-update add ntp-client default
root #
service ntp-client start
Servidor Rsync
Para aquellos que corren múltiples máquinas con Gentoo en la misma LAN, es sabio prevenir que cada máquina corra emerge --sync con los servidores remotos. Configurando un servidor rsync "local", ahorra el ancho de banda personal y también el ancho de banda de los servidores rsync de Gentoo. El proceso es relativamente sencillo.
Para una guía mucho más profunda de rsync, por favor ve la guía oficial de rsync.
Desde que cada máquina con Gentoo requiere rsync, no hay necesidad de instalarlo (emerge). Edita el archivo de configuración por defecto /etc/rsyncd.conf, descomenta la sección [gentoo-portage]
, y asegúrate de añadir una opción de address
(dirección). Todo lo demás ya debería estar configurado correctamente.
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1
[gentoo-portage]
path = /mnt/espacio/portage
comment = Gentoo Linux Portage tree
exclude = /distfiles /packages
El servicio entonces necesita ser iniciado(de nuevo, los valores por defecto están bien)
root #
service rsyncd start
root #
rc-update add rsyncd default
La única cosa pendiente es configurar a los clientes para que se sincronicen con el router. Edita el archivo de configuración /etc/portage/repos.conf/gentoo.conf. Si este archivo no existe, haz un directorio debajo de /etc/portage llamado repos.conf y copia el archivo /usr/share/portage/config/repos.conf a este directorio. Entonces actualiza este archivo respectivamente - no olvides fijar sync-uri
para que coincida con la dirección del servidor (el router casero).
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://192.168.0.1/gentoo-portage
auto-sync = yes
Servidor de correo electrónico
A veces es bueno correr un servidor SMTP (protocolo sencillo de transferencia de correo) en el ruteador. Cada usuario podría tener sus propias razones para hacerlo, sin embargo, una ventaja de correr el servidor SMTP en el ruteador es que los usuarios ven el correo como si fuera enviado instantáneamente y el trabajo de reintentar/ruteo se le deja al servidor de correo. Algunos ISP's no permiten la retransmisión de correos para cuentas que no son partes de su red (como Verizon). También, la limitación de la entrega del correo podría ser necesaria así los adjuntos grandes no retrasarán la conexión a Internet.
root #
emerge --ask mail-mta/netqmail
Asegúrate de que la salida del comando hostname es correcta:
root #
emerge --config netqmail
root #
iptables -I INPUT -p tcp --dport smtp ! -i ${LAN} -j REJECT
root #
ln -s /var/qmail/supervise/qmail-send /service/qmail-send
root #
ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
root #
cd /etc/tcprules.d
Edita tcp.qmail-smtp y añade una entrada en la sección allow:
192.168.0.:allow,RELAYCLIENT=""
root #
make
root #
rc-update add svscan default
root #
service svscan start
Cuando se configure el correo electrónico en las máquinas de la red, diles que el servidor SMTP está en 192.168.0.1. Visita la página de inicio de netqmail para más documentación en el uso de netqmail.
Servidor DHCP completo
Anteriormente dnsmasq fue usado para proporcionar servicios DHCP a todos los clientes DHCP. Para la mayoría de la gente con una sencilla y pequeña LAN esto es perfecto, sin embargo, podría necesitarse algo con más características. Así que un servidor con todas las características DHCP es proporcionado por los compañeros de ISC para los usuarios que piden lo máximo.
root #
emerge --ask net-misc/dhcp
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
pool {
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;
}
}
En /etc/conf.d/dhcpd fija IFACE
a "eth0".
root #
rc-update add dhcpd default
root #
service dhcpd start
Esta es la configuración mínima requerida para reemplazar la funcionalidad DHCP de dnsmasq usada anteriormente. ¿Las características DHCP en dnsmasq deberían ser desactivadas? Si no, desactiva la configuración dhcp-range
en /etc/dnsmasq.conf y reinicia el servicio.
Conectar otra LAN (o dos o tres)
A veces el ruteador debe ser conectado a otra LAN. Esto puede ser hecho para conectar un grupo de amigos temporalmente o para una sección fuera de diferentes grupos de computadoras. Cualquiera que sea la razón, extender el ruteador a otras redes LAN debería ser directo. En los siguientes ejemplos, este artículo asume que la "nueva" red es conectada vía una tercera tarjeta ethernet, llamada eth2
.
Primero configura la interfaz. Toma las instrucciones en esta sección y reemplaza config_eth0="192.168.0.1/24 brd 192.168.0.255"
por config_eth2="192.168.1.1/24 brd 192.168.1.255"
.
Ajusta dnsmasq para servir a la nueva interfaz. Edita el archivo /etc/conf.d/dnsmasq de nuevo y agrega -i eth2
a DNSMASQ_OPTS
; usar -i múltiples veces está bien. Después edita /etc/dnsmasq.conf y añade otra línea como la línea dhcp-range en esta sección, reemplazando dhcp-range=eth0,192.168.0.100,192.168.0.250,72h
con dhcp-range=eth2,192.168.1.100,192.168.1.250,72h
y reemplaza interface=eth0
con interface=eth2
. Tener múltiples líneas de dhcp-range e interface está bien también.
Finalmente, vea las reglas en esta sección y duplica las reglas que tienen -i ${LAN}
dentro de ellas. Otra variable podría ser necesaria, digamos LAN2
, para hacer las cosas más sencillas.
Solución de problemas
Herramientas útiles
Cuando tengas problemas haciendo que las computadoras se comuniquen intenta las siguientes herramientas (todas pueden ser encontradas en la categoria de Portage net-analyzer):
Herramienta | Descripción |
---|---|
net-analyzer/wireshark | Herramienta gráfica para ver todos los datos de red "crudos" de acuerdo a filtros |
net-analyzer/tcpdump | Herramienta de consola para ver todos los datos de red "crudos" de acuerdo a filtros |
net-analyzer/iptraf-ng | Monitor de IP LAN basado en ncurses |
net-analyzer/ettercap | Monitor/control de red basado en ncurses |
DHCP no inicia
Cuando se inicia el script init.d para dhcp por primera vez, podría fallar en arrancar pero se niega a proveer cualquier información útil.
root #
service dhcp start
* Setting ownership on dhcp.leases ... [ ok ] * Starting dhcpd ... [ !! ]
El truco es saber donde dhcpd está enviando su salida. Busca en /var/log y lee los archivos de registros. Desde que el archivo exacto de registro depende del paquete usado para syslog, intenta correr grep -Rl dhcpd /var/log para reducir las posibilidades. Hay posibilidad de que un error tipográfico fuera hecho en el archivo de configuración. Otro comando para probar: dhcpd -d -f (atajo para debug / foreground). Esto ayuda a depurar los errores basándose en la salida.
Valor MTU incorrecto
Si se experimentan errores extraños (como no ser capaz de acceder a algunas páginas web mientras otras cargan bien), podría ser un problema de descubrimiento de ruta MTU. La manera más rápida de probar si esta es la causa es correr el siguiente comando de iptables:
root #
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Esto afectará toda las conexiones nuevas; recarga el sitio web problemático para probar la solución. En caso de que ayude, el valor estándar de MTU para una conexión ethernet de 100mbits es 1500
; esta valor también aplica a PPPoA. Para conexiones PPPoE es 1492
. Para más información, lee el capítulo 15 de Guía de Linux de ruteo avanzado y control de tráfico (Linux Advanced Routing & Traffic Control).
Si el comando anterior no funciona, considera poner la regla en la tabla mangle. Simplemente añade -t mangle
al comando.
Incapaz de conectar dos máquinas directamente
Si (por cualquier razón) es necesario conectar dos máquinas directamente sin un concentrador o switch, un cable de ethernet regular probablemente no funcione, a menos que un adaptador de red con Auto MDI/MDI-X (auto detección) esté disponible. Un cable diferente llamado crossover será necesario para las conexiones NIC a NIC. Esta página de Wikipedia explica los detalles a bajo nivel.
Notas finales
No hay otras notas finales. Si tienes problemas con esta guía actualiza este artículo con la información correcta o deja un breve mensaje en la pagina de plática de este artículo con un resumen de lo que no funciona. Eventualmente alguien debería ser capaz de corregir cualquier detalle(s). También es posible hacer un reporte de fallo en el Sitio web de seguimiento de fallos de Gentoo. Si hay cualquier otra cosa interesante que pudiera mejorar esta guía, por todos los medios incluyela! Lo peor que pudiera suceder es que sean removidas.
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Mike Frysinger (vapier)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.