domingo, 19 de noviembre de 2017

Router doméstico con pf (packet filter) en OpenBSD 6.2

Hola amigos,
En este apunte escribimos sobre cómo hacer un router "casero", imaginar un escenario donde se tiene una o varias redes internas y solamente una ip que te permite salir a internet; normalmente los proveedores de internet nos proporcionan un equipo llamado modem/router que hace la función transparente al usuario, conectamos nuestras PCs o equipos inalámbricos y con ips privadas salimos a internet, pero ¿cómo hace eso? Si te digo que podemos hacer eso con un equipo que podría ser una computadora o un equipo dedicado a ser servidor supongo que estas pensando y cómo? y para qué?

La idea es ordenar algunas redes Lans, tal vez se desea realizar un filtrado de paquetes y deseas tener control total, realizar un propio servidor DNS, un propio servidor dhcp, un proxy, un firewall, entonces separamos al modem/router, más o menos el escenario sería como el siguiente:



En nuestro caso será con dos redes LAN, donde las interfaces de red son vic0 (conectada al router), las dos redes internas, vic1 y vic2, para que las redes LANs salgan a internet con una sola ip usaremos el concepto de NAT, para todo eso usaremos software que viene incluido en el sistema operativo, dicho software es un firewall que hace todo ese trabajo, veamos como.

1. Tener un sistema operativo instalado en un equipo en este caso OpenBSD un tipo unix puro, en la entrada anterior se vió como instalar.

2. tener configurado con ips las interfaces de red.

OpenBSD configura a cada interfaz en archivos tipo /etc/hostname.nombredelainterfaz
Con el comando
#ifconfig | less
Podemos ver las interfaces

 

3. escribir en /etc/pf.conf las reglas e indicar que haga NAT en la interfaz externa.

Abrimos el archivo /etc/pf.conf y escrubimos estas líneas


En la figura de arriba le decimos las interfaces y con $ abajo le decimos que las "tome", traduciendo lo que dice la regla sería más o menos lo siguiente:
pasar fuera sobre la interfaz directa al modem/router o directa a internet, por donde ingresará internet a nuestro servidor, seguido de la palabra from, que significa desde cualquier red que sea diferente a la red externa (!) significa diferente, para alguna red (any), nat-to en la interface externa :), en la documentación de PF, hay opciones y sintaxis, es cuestión de entender, toma sus buenas horas comprender jeje, sobre todo en mi caso :)

4. habilitar el reenvío de paquetes

Como indica al inicio del archivo pf.conf, hay que habilitar el reenvío, procedemos con un comando:
#echo 'net.inet.ip.forwarding=1' >> /etc/sysctl.conf

Luego reiniciamos el servidor y para alguna modificación de pf.conf no es necesario reiniciar, solo usar comando
#pfctl -f /etc/pf.conf
Dicho comando verifica el archivo y si hay error informa y no carga las nuevas reglas
#pfctl -sr
Dicha regla muestra las reglas que tenemos.
#pfctl -s state
Muestra como traduce :)








No hay comentarios.:

Publicar un comentario