lunes, 10 de febrero de 2014

Fabrica tu propio router con Gentoo y Debian

Hace tiempo... Mucho, mucho tiempo... Tenía un equipo, como dicen en inglés, headless.  Es decir, sin monitor. Típico ordenador que se deja en un rincón. Y, lo convertí en un router. La verdad, ahora mismo no lo tengo ni montado. Algún backup seguro que tengo. Pero tendría que buscarlo. Y muchas cosas de las aquí contadas están escritas de memoria, con alguna mirada al manual, pero tendré que montar una máquina para probarlo.

A lo que iba. Me monté un router con un PC. ¿Cómo lo hice? Pues, tendré que hacer memoria. Pero, como en esa época utilizaba Gentoo, es el sistema operativo que uilicé. Por lo tanto, me hacía una búsqueda parecida a

howto router gentoo

teniendo dos posibilidades, la inglesa o la española (ojo! es una traducción de la inglesa: el contacto que han puesto en la versión española no habla español [o no lo hablaba]).

Pero, hay que tener en cuenta una cosa: el router que proponían era para dar acceso a internet.  Como si quisíeramos sustituir el de Telefónica por el nuestro. Nosotros lo vamos a poner entre medias de ese router y nuestros equipos. Por lo tanto, hay que realizar unos pocos cambios a las propuestas que nos hacen en ese HowTo.

Este post lo estoy reescribiendo. Tenía pensado poner más o menos lo que hice en su momento, y lo tenía paralizado. Hasta que este fin de semana he tenido que montarme uno, y he decidido terminarlo poniendo lo que he utilizado, que tiene alguna que otra diferencia de lo que hice en su momento. Pero, lo que hecho ha sido utilizar los manuales de Gentoo en una Debian.

Vamos a ponernos en situación: te pasan un ordenador de sobremesa y tienes que enchufarlo a los perifericos. Pero, el lugar donde los tienes es otro PC Por lo tanto, lo que vas a hacer es conectar un switch KVM (Keyboard Video Mouse), de tal forma que podrás utilizar los mimos perféricos para dos ordenadores y así ir alternando entre ambos. Después, utilizarás un cable de red cruzado para que ambos ordenadores estén conectados por red.

Ahora, configuraremos el ordenador principal, que tienes una Debian instalada.  Lo primero es ponerse en situación: un ordenador que tiene su tarjeta de red inalámbrica (wlan0), que es la que le da conexión a internet como cualquier otro equipo. Por lo tanto, estará configurada tal y como lo hicimos en reyes.

La segunda tarjeta de red sólo la configuraremos en el mismo instante en el que vamos a utlizarla. Por lo que vamos a lanzar ifconfig:

ifconfig eth0 192.168.2.1 netmask 255.255.255.0 up

Esta tarjeta de red será la que haga de gateway.

Después, lancé una serie de parámetros para iptables. Al final, después de varios chascos metiéndolos a mano y que no me funcionase, acabé montándome el script:

# Limpieza total de todas las reglas: se pierde toda configuración existente
iptables -F 
iptables -t nat -F

# Reglas por defecto cuando las reglas explicitas no se cumplen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT 
iptables -P FORWARD DROP

#Variables de entorno:
export LAN=eth0
export WAN=wlan0

# Para que los servicios sólo funcionen desde la LAN
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT 

#Serivicios del los puertos 67 y 53 (entre otros, los utilizados por los boot-pe)
iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT 
iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT

#Ejemplo para aceptar servicios desde la WAN: apertura de puertos
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

#Tira los paquetes TCP y UDP para los puertos entre 0 y 1023:
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

#Reglas NAT:
iptables -I FORWARD -i ${LAN} -d 192.168.2.0/255.255.0.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.2.0/255.255.0.0 -j ACCEPT 
iptables -A FORWARD -i ${WAN} -d 192.168.2.0/255.255.0.0 -j ACCEPT 
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

#Configurar el kernel para que el ip forwarding funcione:
echo 1 > /proc/sys/net/ipv4/ip_forward 
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

#Guardar los cambios. En Debian, es mejor utilizar la que no está tachada:
/etc/init.d/iptables save  
rc-update add iptables default
iptables-save

#Abrir el fichero /etc/sysctl.conf y cambiar los valores a lo siguiente:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1 

Con todo esto, y teniendo configurada la tarjeta de red del equipo con el que vas a trabajar (porque, ten en cuenta que estamos trabajando con direccionamiento estático, y que [si no recuerdo mal], los paquetes DHCP están incluidos en los que estamos tirando), podrás acceder a la red principal. En mi caso, quería poder acceder a internet. Pero, algo que se podría hacer es, por ejemplo, y escrito así a bote pronto:

iptables -A OUTPUT -i ${LAN} ! --dport 80 -j DROP

Así, si hubiese alguna conexión que tuviese que salir y no fuese para http, se tumbaría.

No estoy muy seguro de si me acordaré de cómo lo hice, pero ya veré si encuentro algún sitio donde contaba cómo montar un spamassasin y pop3-scan (o algo parecido): un proxy para correo.


No hay comentarios:

Publicar un comentario