Separación de redes en un router OpenBSD
Por el 22 de Agosto de 2023
Parto de un EdgeRouter Lite con OpenBSD y quiero separar el tráfico del puerto LAN en cnmac1 del tráfico de la red Wifi que va conectada a un punto de acceso tonto en cnmac2. El router sale a Internet a través de la interfaz cnmac0 que está configurada como cliente DHCP.
- 192.168.1.0/24 será la red LAN conectada al puerto marcado como eth1
- 192.168.2.0/24 será la red LAN conectada al puerto marcado como eth2
- La red 192.168.2.0/24 no podrá comunicarse con la red 192.168.1.0/24
- Configuro el punto de acceso en lan con IP estática 192.168.2.1 y puerta de enlace 192.168.2.2
- La política del cortafuegos será de denegación por defecto
- El servidor DHCP sirve IPs tanto a la red LAN como a la red Wifi
- El router OpenBSD sirve DNS a la red interna con unbound-adblock
Lectura recomendada
- pf.conf(5) para configurar enrutado y cortafuegos
- dhcpd.conf(5) para servir IPs a través de DHCP
Configuración
inet autoconf
inet 192.168.1.1
up
inet 192.168.2.2
up
- /etc/dhcpd.conf
-
option domain-name "local.example.com"; # LAN subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name-servers 192.168.1.1; range 192.168.1.32 192.168.1.127; } # Wifi subnet 192.168.2.0 netmask 255.255.255.0 { option routers 192.168.2.2; option domain-name-servers 192.168.2.2; range 192.168.2.32 192.168.2.127; }
- /etc/rc.conf.local
-
[...] dhcpd_flags=cnmac1 cnmac2 [...]
- /etc/sysctl.conf
-
net.inet.ip.forwarding=1
- /etc/pf.conf
-
lan = "192.168.1.0/24" eth1 = "cnmac1" eth2 = "cnmac2" set block-policy drop set loginterface egress set skip on lo match in all scrub (no-df random-id max-mss 1440) match out on egress inet from !(egress:network) to any nat-to (egress:0) antispoof quick for { egress, $eth1, $eth2 } block in quick log from { no-route urpf-failed } block log all pass out inet pass in on { $eth1, $eth2 } inet block in on $eth2 from any to $lan