Guía de enrutamiento doméstico
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)
[*] 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 |
# nano /etc/conf.d/net
config_ppp0="ppp"
link_ppp0="eth1"
plugins_ppp0="pppoe"
pppd_ppp0="
defaultroute
usepeerdns
"
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 |
# emerge dhcpcd
# nano /etc/conf.d/net
config_eth1="dhcp"
# nano /etc/conf.d/net
config_eth1="66.92.78.102/24 brd 66.92.78.255"
routes_eth1="default via 66.92.78.1"
# nano /etc/resolv.conf
nameserver 123.123.123.123
# 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
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
dhcp-range=192.168.0.100,192.168.0.250,72h
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 |
# iptables -F
# iptables -t nat -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP
# export LAN=eth0
# export WAN=eth1
# 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
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# 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
# 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
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
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 |
# export LAN=eth0
# export WAN=eth1
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
# 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
# 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
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
# 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
# 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
# rc-update add ntp-client default
# nano /etc/ntp.conf
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
# nano /etc/conf.d/ntpd
# 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
# 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
# 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
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
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
# 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.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|