Herramientas personales

Configurar router básico con linux

De Proyectos GULIX

Tabla de contenidos

Introducción

Muchos, creo yo, querrán compartir la salida a Internet con alguna pequeña subred que posean en su casa, y eso es lo que hace un router, aquí detallaré los pasos seguidos con Linux Fedora, en otras distros se hace de forma similar, algunos archivos cambian de ubicación, pero nada del otro mundo.

Para efectos que se entienda este ejemplo, tengan en cuenta que el PC tiene dos tarjetas de red, eth0 que esta conectada a Internet y que esta configurada como dhcp-client y eth1 que tiene IP fija 192.168.0.1 por la que convidaremos Internet a la subred.


Cambiando los parámetros del Kernel para que enrute

No te asustes, aquí no compilaras el kernel ni nada por el estilo, simplemente, en el archivo /etc/sysctl.conf hay que modificar la linea de forward para que quede así:

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Con esto hacemos que los paquetes se redireccionen, si no hubiera firewall y configuraramos los equipos clientes a mano, con éste cambio ya estaríamos ruteando, pero la idea es tener protección e IP (dns, y demases) automagicamente, para ello se hacen los próximos pasos.

En todo caso, eso es válido desde que se reinicie el equipo en adelante, antes de eso, hay que activar el ruteo a mano

echo 1 > /proc/sys/net/ipv4/ip_forward

Instalar y configurar DHCP

DHCP es el servicio que permite asignar dinámicamente la configuración de red a los equipos clientes, es decir, al enchufar un equipo a la red, este automáticamente quedará configurado para navegar en ella.

La instalación bajo Fedora (y similares) es ejecutando (como root) los comandos:

yum -y install dhcp
/sbin/chkconfig dhcpd on
/sbin/service dhcpd start

Los que instalan, dejan el servicio activo de forma predeterminada y arranca el demonio dhcp (es mejor si arrancamos el demonio una vez modificados los próximos dos archivos).

Una vez instalado, creamos (o editamos) el archivo /etc/dhcpd.conf de la siguiente manera:

# DHCP Server Configuration file.
#
# authoritative - La configuración correcta es la definida en el servidor DHCP. 
# Esto reescribiría cualquier configuración previa del cliente.
authoritative;
#
# ddns-updates - Activa la actualización DNS mediante los valores asignados por DHCP.
ddns-updates on;
#
# ddns-update-style - Define el método de actualización automática de los DNS.
ddns-update-style ad-hoc;
# mi red interna es 192.168.0.0/24
subnet 192.168.0.0 netmask 255.255.255.0 {
	# mi gateway, puerta de enlace, ip del pc
	option routers 192.168.0.1;
	# la mascara de red...
	option subnet-mask 255.255.255.0;
	# la ip del DNS que compartira,
	# en caso de ser mas de una se separan con ,
	option domain-name-servers 216.155.73.40, 200.75.0.4;
	# el rango de IP que dara
	range dynamic-bootp 192.168.0.8 192.168.0.254;
	# Los tiempos
	default-lease-time 21600;
	max-lease-time 43200;
}

Finalmente, editaremos /etc/sysconfig/dhcpd en donde seleccionamos el dispositivo de red que dará usará nuestro servidor.

DHCPDARGS=eth1

Básicamente lo que estamos haciendo con esto es configurar los parámetros para mi subred, existen algunas configuraciones que no tocaremos acá, pero que pueden verse en este articulo


Agregando el servidor DHCP y reglas de ruteo a IPTABLES

El paso de agregar los puertos 67 y 68 como puertos aceptados es indispensable, sino nuestro firewall rechazara las peticiones de los clientes.

Para configurar estos puertos se edita el archivo /etc/sysconfig/iptables, en el cual agregaremos la tabla nat (Network Address Translation) que es la que nos quedará ruteando y los puertos antes mencionados, con ello nuestro archivo queda mas o menos como este:

# NAT
*nat
:PREROUTING ACCEPT [50:2998]
:POSTROUTING ACCEPT [3:228]
:OUTPUT ACCEPT [4:312]
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE
-A POSTROUTING -s 192.186.0.0/255.255.255.0 -j MASQUERADE
COMMIT
# FILTROS
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 67 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 68 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Mucho se ha discutido acerca de algunas reglas "magicas" predeterminadas de iptables en RedHat y Fedora, que tiene abierto los puertos 50, 51, 631 y el puerto 5353 para el servidor 224.0.0.251, pero en pocas palabras son para dejar abiertos los servicios de IPSEC (50-51), CUPS (631) y DAAP de iTunes (5353), si no quieres tener todo eso borra dichas reglas y listo.

Luego lo único que nos queda es reiniciar iptables, antes de ello muchos recomiendan borrar las tablas que están en ejecución, aunque no es necesario en Fedora, igual lo incluyo pues seguramente para alguna distro debe ser necesario y por eso lo recomiendan.

iptables -F
/etc/init.d/iptables stop
/etc/init.d/iptables start

Si quieres aprender más de iptables puedes partir por ejecutar

man iptables


Conclusión

Un router bajo Linux es algo bastante simple que no les deberia tomar mas allá de unos 10 minutos en dejarlo funcionando. En distros como debian se aplica apt-get en vez de yum y las reglas de IPTABLES llevan como comienzo de linea el comando iptables. El servidor DHCP es muy fácil de configurar, existiendo la posibilidad de agregar reglas por grupo o por mac de la tarjeta de red.

Finalmente espero no se me haya escapado ningún detalle para que sea llegar y aplicar.


Leer más

Autores de este Resumen

--RAcl 10:49 2 dic 2007 (ART)


Buscar