VLAN на OpenWrt: отделяем гостевой Wi-Fi от домашней сети
Задача была простой: гость просит пароль от Wi-Fi, а мне не хочется пускать его в подсеть, где живут NAS, принтер и камеры. Заодно хотелось вынести устройства умного дома в отдельный сегмент — чтобы китайская лампочка не разговаривала с роутером чаще, чем это действительно нужно.
План такой: один роутер на OpenWrt, один управляемый коммутатор и три сети:
- lan — основная, 192.168.10.0/24;
- guest — гостевая, 192.168.20.0/24, изолирована от всего, кроме интернета;
- iot — умный дом, 192.168.30.0/24, изолирован от lan и guest, но виден мне.
Коммутатор
На управляемом коммутаторе всё тривиально: порт до роутера — trunk со всеми VLAN, остальные порты — access в соответствующие VLAN. Отдельная история — Wi-Fi: на точках доступа создаём по SSID на каждый VLAN.
Конфигурация на стороне OpenWrt
Сеть объявляется в /etc/config/network:
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.10.1'
option netmask '255.255.255.0'
config interface 'guest'
option device 'br-guest'
option proto 'static'
option ipaddr '192.168.20.1'
option netmask '255.255.255.0'
config bridge-vlan
option device 'br-lan'
option vlan '10'
list ports 'lan1:t'
config bridge-vlan
option device 'br-lan'
option vlan '20'
list ports 'lan1:t'
Дальше — зоны в firewall: для guest и iot создаём отдельные зоны, запрещаем forward между ними и lan, а из lan разрешаем всё. Не забываем про DHCP: на каждый интерфейс свой пул.
Грабли
Первая и главная: не отрезать себя от роутера, пока не проверены правила firewall. Я настраивал, подключившись по проводу в lan-сегмент, и держал под рукой консоль. Вторая: некоторые дешёвые «управляемые» коммутаторы фильтруют 802.1Q по-своему — мой пришлось перепрошить свежим стеком, прежде чем теги поехали.
В итоге гостевая сеть стала отдельной точкой доступа с лимитом скорости в 50 Мбит/с и изоляцией клиентов — гости довольны, лампочки живут своей жизнью. Полные конфиги выложу в отдельном посте.