Заглючил роутер. По итогам пришлось оставить другой роутер (временно) и один из трёх свитчей.
Решил я поднять железный роутер - на компе. Накатил OpenBSD-amd64-7.7 и стал отлаживать.
На данный момент пытаюсь маршрутизировать между двумя сетками:
192.168.137.0/24 (типа внешняя) и 192.168.138.0/24 (типа внутренняя)
на внутреннем интерфейсе поднял DHCP, а на внешнем пытаюсь включить NAT.
Путём мозголомки пришёл к такому конфигу:
wan = "rl0"
lan = "alc0"
gwaddr = "192.168.137.1"
ports_tcp = "22,53,80,443"
ports_udp = "53,123"
set block-policy return
set skip on lo0
set skip on $lan
#nat on $wan inet proto tcp from $lan:network to any -> ($wan)
pass out on $wan from $lan nat-to $gwaddr
block all
pass out proto tcp to port { $ports_tcp }
pass out proto udp to port { $ports_udp }
pass in quick on $lan proto tcp to port 22
pass in quick on $wan proto tcp to port 22
pass in quick on $wan inet proto icmp from any to any keep state
pass out quick on $wan inet proto icmp from any to any keep state
pass inet from { lo0, 127.0.0.0/8 } to any keep state
В примерах из интернета NAT включается строчкой, которая у меня закомментирована - но если раскомментировать, то пишет, что в ней ошибка. В остальном...

Проверял - клиенты адрес по DHCP получают, а с интернетом у них облом. ЧЯДНТ?
P.S. Интернет нужен для работы. После 12-часового рабочего дня голова плохо соображает. Прошу понять и простить, если допустил особо грубые косяки. Просто лечение глюков проходило в авральном режиме.