El otro día comentando con un amigo sobre redes de datos estuvimos tratando el tema de Routers, sí aquellos equipos que enrutan, no tenía un dispositivo para dicho caso, le pregunté ¿Cuál es tu objetivo? Dijo dar internet a dos redes Lan internas (200 Pcs aproximadamente) y también proporcionar parámetros de red automáticamente, entonces era lo más común que se encuentra en redes LAN, preocupado porque quería un equipo Mikrotik, un router Tp-link o similar, le dije no te preocupes, tienes un equipo libre (una PC libre), cómprale dos tarjetas de red ethernet y las insertas en los slot pc y ya, puedes construir tu Router y añadir servicios como DHCP, DNS entre otros que ameriten ser necesarios, me dijo y cómo se hace eso, le dije con un sistema operativo, en este caso elegiremos a OpenBSD 7.1, hay otros como GNU/Linux, pero dije OpenBSD 7.1 hará todo eso y ojo OpenBSD y sus hermanos BSD no son cosas simples, son sistema operativos avanzados para Networking, estables y eficientes.
Software que se usará: la imágen iso de OpenBSD (para instalar el sistema operativo en la unidad de almacenamiento física de la PC), incluye a PF (packet filter) para hacer que traduzca las direcciones de red (NAT), NO se añade absolutamente nada más, el sistema operativo ya trae en la base software para otros propósitos.
Nuestro escenario:
Internet---(ip pública)-Modem/Router del proveedor-(ip privada)---(em0)-OpenBSD 7.1-(em1, em2)---(Switches 1 y 2 para cada segmento)
Nuestras interfaces internas son em1 y em2 cuyas ips son respectivamente 192.168.2.5/24 y 192.168.3.5/24 y la interfaz externa que va a traducir a las interfaces internas es em0 cuya ipv4 es 192.168.1.5/24, la puerta de enlace para salir a internet es la ipv4 privada del modem router del proveedor, 192.168.1.1, ese es el gateway general, pero para nuestras redes internas sus puertas de enlace son las ipv4 de las interfaces internas de OpenBSD (em1 y em2).
1. La primera parte importante es instalar el sistema operativo (hay video en mi canal y una entrada en este blog), tener todo funcionando con sus interfaces ethernet con ipv4.
2. Configurar el archivo principal en /etc/pf.conf, revisar los ejemplos en /etc/examples/pf.conf, ahí indica que debemos activar el forwarding en su archivo respectivo.
Configurando /etc/pf.conf
Al abrir el archivo observamos que ya trae unas reglas por defecto, no borraremos nada, ya hemos visto el ejemplo y añadimos las interfaces y la línea que va a realizar NAT, el orden en donde se ubica la regla para nat es importante, asi debe quedar (clic para agrandar el tamaño de la foto, abajo).
PF ya está habilitado por defecto, no necesita escribir nada en otros archivos, cuando se escribe en el archivo /etc/pf.conf y se desea que las reglas se apliquen se usa el comando:
yourserver#pfctl -f /etc/pf.conf
Para activar el reenvió de paquetes entre las interfaces se escribe en /etc/sysctl.conf, ojo! solamente para ipv4 estamos haciendo, no necesitamos ipv6, en nuestro caso.
yourserver#echo 'net.inet.ip.forwarding=1' >> /etc/sysctl.conf
De preferencia reiniciar el servidor, tiene que leer el último archivo.
En los clientes: poner ipv4 en el segmento que les corresponde (más adelante haremos el servidio dhcp en OpenBSD) y como puerta de enlace la ip de la interfaz interna que corresponde, en servidores dns por ahora utilizar uno público (ojo esto solo es para tradurir de nombres a ip) y te darás cuenta que ya enruta y sales desde tu red interna a otras redes como internet. Hacer ping y ya funciona, tienes tu enrutador funcionando.
Nota: como observas hemos definido tipo variables a las interfaces y en la regla nat hemos llamado a esas variables con el símbolo dolar ($) adelante, también hemos usado ! para indicar que pueden ser cualquier interfaz diferente a la externa, así funciona pues. También la línea que hace nat hemos usado nombre de interfaces y no ip, en el FAQ de OpenBSD en la parte PF indica que es una forma válida para no tener problemas si se cambia la ip de la interface, osea si cambia la ip no es necesario tocar esa línea, solo lee interfaces.