VLAN — сегментация сети
VLAN на MikroTik — сегментация сети через Bridge VLAN Filtering
Это руководство описывает настройку VLAN на MikroTik RouterOS 7.x с использованием метода Bridge VLAN Filtering. Мы разберём теорию, настроим trunk и access порты, создадим три VLAN для типичного офиса, поднимем DHCP Server на каждый VLAN и настроим firewall для изоляции сегментов.
Инструкция подходит для всех моделей MikroTik с RouterOS 7.x: hAP ax2, hAP ax3, RB5009, CCR2004, CRS3xx и других. Мы используем именно Bridge VLAN Filtering — это рекомендованный метод для RouterOS 7.x, а не устаревшие switch chip rules.
1. Что такое VLAN и зачем он нужен
VLAN (Virtual Local Area Network) — это технология, позволяющая разделить одну физическую сеть на несколько изолированных логических сегментов. Устройства в разных VLAN не видят друг друга на L2-уровне, даже если подключены к одному коммутатору.
Зачем это нужно на практике:
- Безопасность — гостевой Wi-Fi изолирован от рабочей сети, устройства управления недоступны для обычных пользователей
- Производительность — broadcast-трафик ограничен рамками одного VLAN и не засоряет всю сеть
- Порядок — каждый сегмент имеет свою подсеть, свой DHCP, свои правила доступа
- Соответствие требованиям — PCI DSS, ФЗ-152 и другие стандарты требуют сегментации сети
В нашем примере мы создадим три VLAN:
| VLAN ID | Назначение | Подсеть |
|---|---|---|
| 10 | Сотрудники | 192.168.10.0/24 |
| 20 | Гости | 192.168.20.0/24 |
| 30 | Управление | 192.168.30.0/24 |
2. Терминология: tagged, untagged, trunk, access, PVID
Прежде чем переходить к настройке, разберём ключевые термины. Понимание этих концепций критически важно — большинство ошибок в настройке VLAN связаны именно с путаницей в терминологии:
Tagged (тегированный) — кадр, к которому добавлен заголовок 802.1Q с номером VLAN. Устройство на другом конце должно понимать VLAN-теги. Тегированные порты используются для соединения между коммутаторами и маршрутизаторами.
Untagged (нетегированный) — кадр без VLAN-тега. Конечные устройства (компьютеры, принтеры, телефоны) обычно не знают про VLAN и отправляют обычные нетегированные кадры.
Trunk порт — порт, через который проходит трафик нескольких VLAN в тегированном виде. Обычно это аплинк между коммутаторами или соединение с маршрутизатором.
Access порт — порт, к которому подключено конечное устройство. Трафик приходит без тега, коммутатор назначает VLAN на основании PVID порта.
PVID (Port VLAN ID) — VLAN, который назначается входящим нетегированным кадрам на данном порту. Для access-порта PVID определяет, в каком VLAN будет работать подключённое устройство.
Bridge VLAN Filtering — механизм в RouterOS, при котором bridge выполняет фильтрацию VLAN на программном уровне. Это универсальный метод, работающий на всех моделях. В RouterOS 6.x существовал альтернативный метод через switch chip rules, но он был аппаратно-зависимым и работал не на всех чипах. В RouterOS 7.x Bridge VLAN Filtering является стандартным и рекомендованным подходом. На моделях с аппаратной поддержкой (CRS3xx, CRS5xx) bridge автоматически использует hardware offloading для VLAN — производительность не страдает.
3. Как работает Bridge VLAN Filtering изнутри
Когда vlan-filtering включён, bridge обрабатывает каждый Ethernet-кадр по следующему алгоритму:
- Кадр приходит на порт bridge (ingress). Если кадр без тега — bridge добавляет тег, равный PVID этого порта. Если кадр уже с тегом — bridge проверяет, разрешён ли этот VLAN на данном порту (порт должен быть tagged для этого VLAN).
- Bridge выполняет MAC-learning и forwarding в пределах данного VLAN. Кадр не может попасть в другой VLAN на L2-уровне.
- На выходе (egress) bridge проверяет, как порт назначения указан для этого VLAN. Если порт tagged — кадр уходит с VLAN-тегом. Если порт untagged — тег снимается и кадр уходит обычным Ethernet-фреймом.
- Если порт назначения не указан ни в tagged, ни в untagged для данного VLAN — кадр отбрасывается.
Именно шаг 4 объясняет, почему включение vlan-filtering с пустой таблицей VLAN блокирует весь трафик.
4. Схема сети для примера
Допустим, у нас MikroTik hAP ax3 с пятью Ethernet-портами:
- ether1 — аплинк (trunk), подключение к вышестоящему коммутатору или интернету
- ether2, ether3 — access-порты, VLAN 10 (сотрудники)
- ether4 — access-порт, VLAN 20 (гости)
- ether5 — access-порт, VLAN 30 (управление)
MikroTik будет выступать одновременно как коммутатор (L2 VLAN bridging) и как маршрутизатор (L3 inter-VLAN routing, DHCP, firewall).
5. Подготовка Bridge
Первым шагом создаём bridge и добавляем в него все порты. Критически важно: на этом этапе vlan-filtering оставляем в no. Включение фильтрации до завершения настройки VLAN приведёт к потере доступа к роутеру.
[admin@MikroTik] >/interface/bridge add name=bridge1 vlan-filtering=no comment="Main VLAN bridge"
Добавляем порты в bridge. Каждому access-порту сразу назначаем правильный PVID:
[admin@MikroTik] >/interface/bridge/port add bridge=bridge1 interface=ether1 pvid=1 add bridge=bridge1 interface=ether2 pvid=10 add bridge=bridge1 interface=ether3 pvid=10 add bridge=bridge1 interface=ether4 pvid=20 add bridge=bridge1 interface=ether5 pvid=30
Порт ether1 — trunk, его PVID можно оставить 1 (по умолчанию), потому что весь трафик на нём будет тегированным. Порты ether2-ether5 получают PVID соответствующего VLAN — входящие нетегированные кадры будут автоматически отнесены к нужному VLAN.
6. Настройка таблицы VLAN на Bridge
Теперь определяем, какие порты для каждого VLAN являются tagged, а какие — untagged. Сам bridge1 должен быть tagged для каждого VLAN, чтобы VLAN-интерфейсы, созданные поверх bridge, могли принимать трафик.
[admin@MikroTik] >/interface/bridge/vlan add bridge=bridge1 tagged=bridge1,ether1 untagged=ether2,ether3 vlan-ids=10 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether4 vlan-ids=20 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether5 vlan-ids=30
Что здесь происходит:
- VLAN 10: кадры уходят тегированными через bridge1 (для локальных VLAN-интерфейсов) и ether1 (trunk). Через ether2 и ether3 кадры уходят без тега — конечные устройства сотрудников не знают про VLAN.
- VLAN 20: аналогично, но untagged только ether4 — гостевой порт.
- VLAN 30: untagged только ether5 — порт управления.
Если ether1 подключен к управляемому коммутатору, на том коммутаторе этот порт тоже должен быть настроен как trunk с VLAN 10, 20, 30 в tagged.
7. Создание VLAN-интерфейсов
Для маршрутизации между VLAN и назначения IP-адресов создаём VLAN-интерфейсы поверх bridge1:
[admin@MikroTik] >/interface/vlan add name=vlan10-staff interface=bridge1 vlan-id=10 add name=vlan20-guests interface=bridge1 vlan-id=20 add name=vlan30-mgmt interface=bridge1 vlan-id=30
Используем понятные имена — это упрощает диагностику и чтение firewall-правил.
8. IP-адресация
Назначаем IP-адрес на каждый VLAN-интерфейс. MikroTik станет шлюзом по умолчанию для каждого сегмента:
[admin@MikroTik] >/ip/address add address=192.168.10.1/24 interface=vlan10-staff network=192.168.10.0 add address=192.168.20.1/24 interface=vlan20-guests network=192.168.20.0 add address=192.168.30.1/24 interface=vlan30-mgmt network=192.168.30.0
9. DHCP Server на каждый VLAN
Для каждого VLAN создаём пул адресов, DHCP-сеть и сервер.
Пулы адресов:
[admin@MikroTik] >/ip/pool add name=pool-vlan10 ranges=192.168.10.100-192.168.10.254 add name=pool-vlan20 ranges=192.168.20.100-192.168.20.254 add name=pool-vlan30 ranges=192.168.30.100-192.168.30.254
DHCP-сети с параметрами:
[admin@MikroTik] >/ip/dhcp-server/network add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1 comment="Staff" add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=192.168.20.1 comment="Guests" add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=192.168.30.1 comment="Management"
DHCP-серверы:
[admin@MikroTik] >/ip/dhcp-server add name=dhcp-vlan10 interface=vlan10-staff address-pool=pool-vlan10 lease-time=8h disabled=no add name=dhcp-vlan20 interface=vlan20-guests address-pool=pool-vlan20 lease-time=1h disabled=no add name=dhcp-vlan30 interface=vlan30-mgmt address-pool=pool-vlan30 lease-time=8h disabled=no
Обратите внимание на lease-time: для гостевой сети ставим 1 час — адреса освобождаются быстрее при высокой текучке устройств.
Не забудьте настроить DNS, если MikroTik выступает DNS-сервером:
[admin@MikroTik] >/ip/dns set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4
10. Включение VLAN Filtering — последний шаг
ВНИМАНИЕ: Это самый ответственный момент. Включение vlan-filtering до завершения настройки VLAN-таблицы приведёт к потере доступа к роутеру. Все порты, не прописанные в bridge/vlan, перестанут пропускать трафик. Если вы потеряете доступ — только аппаратный сброс (кнопка Reset) вернёт роутер к жизни.
Правило простое: сначала настрой — потом включай.
Убедитесь, что:
- Все порты добавлены в bridge с правильным PVID
- Таблица bridge/vlan заполнена для всех нужных VLAN
- Bridge добавлен как tagged для каждого VLAN
- Вы подключены через порт, который прописан в untagged или tagged
Только после этого:
[admin@MikroTik] >/interface/bridge set bridge1 vlan-filtering=yes
Если всё настроено правильно — доступ сохранится. Если вы потеряли связь — зажмите кнопку Reset на 5 секунд, роутер сбросится к заводским настройкам.
Совет: если настраиваете удалённо, используйте Safe Mode в WinBox или терминале. В терминале нажмите Ctrl+X для входа в Safe Mode — если соединение разорвётся, все изменения откатятся автоматически.
11. Firewall между VLAN
По умолчанию, после создания VLAN-интерфейсов MikroTik маршрутизирует трафик между всеми VLAN. Это значит, что гости могут попасть в сеть сотрудников. Нужно это запретить с помощью firewall.
Стратегия: создаём interface-list для каждой зоны, затем пишем правила на основе списков.
Списки интерфейсов:
[admin@MikroTik] >/interface/list add name=VLAN-STAFF add name=VLAN-GUESTS add name=VLAN-MGMT /interface/list/member add interface=vlan10-staff list=VLAN-STAFF add interface=vlan20-guests list=VLAN-GUESTS add interface=vlan30-mgmt list=VLAN-MGMT
Правила firewall (filter):
[admin@MikroTik] >/ip/firewall/filter add chain=forward action=accept connection-state=established,related comment="Allow established" add chain=forward action=drop connection-state=invalid comment="Drop invalid" add chain=forward action=accept in-interface-list=VLAN-STAFF out-interface-list=VLAN-STAFF comment="Staff internal" add chain=forward action=accept in-interface-list=VLAN-MGMT comment="Management to all" add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-STAFF comment="Block guests to staff" add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-MGMT comment="Block guests to mgmt" add chain=forward action=accept in-interface-list=VLAN-GUESTS out-interface=ether1 comment="Guests to internet only" add chain=forward action=drop in-interface-list=VLAN-GUESTS comment="Drop all other guest traffic"
Логика правил:
- Разрешаем established и related — без этого не работают ответные пакеты
- Дропаем invalid-пакеты — мусор, сканы, битые сессии
- Сотрудники могут общаться между собой внутри VLAN 10
- Управление (VLAN 30) имеет доступ ко всем сегментам — для мониторинга и администрирования
- Гостям запрещён доступ к сотрудникам и управлению
- Гостям разрешён выход в интернет через ether1
- Весь остальной гостевой трафик дропается
Ограничиваем доступ к самому роутеру — разрешаем управление только из VLAN 30:
[admin@MikroTik] >/ip/firewall/filter add chain=input action=accept connection-state=established,related comment="Allow established to router" add chain=input action=drop connection-state=invalid comment="Drop invalid to router" add chain=input action=accept in-interface-list=VLAN-MGMT comment="Management access to router" add chain=input action=accept protocol=udp dst-port=67 comment="Allow DHCP requests" add chain=input action=accept protocol=udp dst-port=53 comment="Allow DNS queries" add chain=input action=accept protocol=tcp dst-port=53 comment="Allow DNS queries TCP" add chain=input action=drop in-interface-list=VLAN-GUESTS comment="Block guests to router" add chain=input action=drop in-interface-list=VLAN-STAFF comment="Block staff to router (except DHCP/DNS)"
Здесь мы разрешаем DHCP и DNS для всех VLAN (иначе устройства не получат адрес и не смогут резолвить имена), но прямой доступ к роутеру (WinBox, SSH, WebFig) — только из VLAN 30.
12. NAT для выхода в интернет
Если MikroTik является шлюзом в интернет, добавьте masquerade для всех VLAN:
[admin@MikroTik] >/ip/firewall/nat add chain=srcnat action=masquerade out-interface=ether1 comment="NAT to internet"
Если вы хотите ограничить выход в интернет только определённым VLAN:
[admin@MikroTik] >/ip/firewall/nat add chain=srcnat action=masquerade src-address=192.168.10.0/24 out-interface=ether1 comment="NAT staff" add chain=srcnat action=masquerade src-address=192.168.20.0/24 out-interface=ether1 comment="NAT guests"
В этом случае VLAN 30 (управление) не имеет выхода в интернет — это повышает безопасность.
13. Проверка и диагностика
После включения vlan-filtering проверяем, что всё работает.
Проверка bridge и портов:
[admin@MikroTik] >/interface/bridge print /interface/bridge/port print /interface/bridge/vlan print
Убедитесь, что vlan-filtering=yes, все порты в bridge, PVID назначены правильно, таблица VLAN заполнена.
Проверка VLAN-интерфейсов:
[admin@MikroTik] >/interface/vlan print /ip/address print
Проверка DHCP:
[admin@MikroTik] >/ip/dhcp-server print /ip/dhcp-server/lease print
Если клиенты получают адреса — DHCP работает. Если нет — проверьте, что DHCP-сервер привязан к правильному VLAN-интерфейсу и пул адресов соответствует подсети.
Тестирование связности с роутера:
[admin@MikroTik] >/ping 192.168.10.100 /ping 192.168.20.100 /ping 192.168.30.100
Проверка изоляции — подключитесь к гостевой сети и попробуйте пинговать адреса сотрудников (192.168.10.x). Если firewall настроен правильно, пинги не пройдут.
Мониторинг трафика по VLAN:
[admin@MikroTik] >/interface/monitor-traffic vlan10-staff,vlan20-guests,vlan30-mgmt once
Просмотр MAC-таблицы bridge с информацией о VLAN:
[admin@MikroTik] >/interface/bridge/host print where bridge=bridge1
14. Добавление Wi-Fi в структуру VLAN
В реальном офисе Wi-Fi тоже должен быть разнесён по VLAN. Если у вас есть Wi-Fi модуль на MikroTik (hAP ax2, hAP ax3, Audience), создайте отдельные виртуальные точки доступа.
На RouterOS 7.x с новым Wi-Fi (wifi пакет):
[admin@MikroTik] >/interface/wifi/security add name=sec-staff authentication-types=wpa2-psk,wpa3-psk passphrase="StaffPass2024" add name=sec-guests authentication-types=wpa2-psk passphrase="GuestWiFi" /interface/wifi/configuration add name=cfg-staff ssid="Office-Staff" security=sec-staff add name=cfg-guests ssid="Office-Guests" security=sec-guests /interface/wifi set wifi1 configuration=cfg-staff disabled=no add master-interface=wifi1 configuration=cfg-guests name=wifi-guests disabled=no
Добавляем Wi-Fi интерфейсы в bridge с правильным PVID:
[admin@MikroTik] >/interface/bridge/port add bridge=bridge1 interface=wifi1 pvid=10 add bridge=bridge1 interface=wifi-guests pvid=20
Обновляем таблицу VLAN на bridge:
[admin@MikroTik] >/interface/bridge/vlan set [find vlan-ids=10] untagged=ether2,ether3,wifi1 set [find vlan-ids=20] untagged=ether4,wifi-guests
Теперь Wi-Fi клиенты, подключённые к SSID "Office-Staff", попадают в VLAN 10, а подключённые к "Office-Guests" — в VLAN 20.
15. Типичные ошибки
1. Включение vlan-filtering до настройки таблицы VLAN
Самая частая ошибка. После включения фильтрации bridge отбрасывает все кадры, которые не соответствуют таблице VLAN. Если таблица пуста — дропается всё, включая ваше подключение. Решение: всегда включайте vlan-filtering последним шагом. Используйте Safe Mode (Ctrl+X в терминале).
2. Забыли добавить bridge1 в tagged
Если bridge1 не добавлен как tagged для VLAN, то VLAN-интерфейсы (vlan10, vlan20, vlan30) не будут получать трафик. Без этого не работают IP-адреса, DHCP, маршрутизация между VLAN. В таблице bridge/vlan для каждого VLAN должен быть tagged=bridge1.
3. Неправильный PVID на access-порту
Если PVID порта не совпадает с VLAN, в котором порт указан как untagged, трафик не пойдёт. Пример: порт ether2 с pvid=1, но в таблице VLAN он untagged для VLAN 10. Входящие кадры получат тег VLAN 1, а не VLAN 10. Результат — устройство не получит адрес по DHCP и не попадёт в нужный сегмент.
4. Дублирование порта в untagged для разных VLAN
Один порт может быть untagged только для одного VLAN. Если вы добавите ether2 как untagged для VLAN 10 и VLAN 20 — поведение будет непредсказуемым. Порт может быть tagged для нескольких VLAN, но untagged — только для одного.
5. Не настроен firewall между VLAN
VLAN без firewall — это только L2-изоляция. На L3-уровне MikroTik по умолчанию маршрутизирует трафик между всеми подсетями. Гости смогут обращаться к ресурсам сотрудников по IP. Firewall обязателен для полноценной изоляции.
6. DHCP-сервер привязан к bridge вместо VLAN-интерфейса
DHCP-сервер должен быть привязан к конкретному VLAN-интерфейсу (vlan10-staff), а не к bridge1. Если привязать к bridge — клиенты из всех VLAN будут получать адреса из одного пула, что нарушает сегментацию.
7. Неправильный порядок firewall-правил
Правила в RouterOS обрабатываются сверху вниз. Если правило drop стоит перед правилом accept — трафик будет заблокирован. Всегда ставьте accept established,related первым, затем drop invalid, затем разрешающие правила, и drop в конце.
16. Полная конфигурация одним блоком
Для удобства — вся конфигурация VLAN одним скриптом. Выполняйте строго в указанном порядке:
[admin@MikroTik] ># 1. Bridge /interface/bridge add name=bridge1 vlan-filtering=no # 2. Порты /interface/bridge/port add bridge=bridge1 interface=ether1 pvid=1 add bridge=bridge1 interface=ether2 pvid=10 add bridge=bridge1 interface=ether3 pvid=10 add bridge=bridge1 interface=ether4 pvid=20 add bridge=bridge1 interface=ether5 pvid=30 # 3. Таблица VLAN /interface/bridge/vlan add bridge=bridge1 tagged=bridge1,ether1 untagged=ether2,ether3 vlan-ids=10 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether4 vlan-ids=20 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether5 vlan-ids=30 # 4. VLAN-интерфейсы /interface/vlan add name=vlan10-staff interface=bridge1 vlan-id=10 add name=vlan20-guests interface=bridge1 vlan-id=20 add name=vlan30-mgmt interface=bridge1 vlan-id=30 # 5. IP-адреса /ip/address add address=192.168.10.1/24 interface=vlan10-staff network=192.168.10.0 add address=192.168.20.1/24 interface=vlan20-guests network=192.168.20.0 add address=192.168.30.1/24 interface=vlan30-mgmt network=192.168.30.0 # 6. DHCP /ip/pool add name=pool-vlan10 ranges=192.168.10.100-192.168.10.254 add name=pool-vlan20 ranges=192.168.20.100-192.168.20.254 add name=pool-vlan30 ranges=192.168.30.100-192.168.30.254 /ip/dhcp-server/network add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1 add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=192.168.20.1 add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=192.168.30.1 /ip/dhcp-server add name=dhcp-vlan10 interface=vlan10-staff address-pool=pool-vlan10 lease-time=8h disabled=no add name=dhcp-vlan20 interface=vlan20-guests address-pool=pool-vlan20 lease-time=1h disabled=no add name=dhcp-vlan30 interface=vlan30-mgmt address-pool=pool-vlan30 lease-time=8h disabled=no /ip/dns set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4 # 7. Firewall /interface/list add name=VLAN-STAFF add name=VLAN-GUESTS add name=VLAN-MGMT /interface/list/member add interface=vlan10-staff list=VLAN-STAFF add interface=vlan20-guests list=VLAN-GUESTS add interface=vlan30-mgmt list=VLAN-MGMT /ip/firewall/filter add chain=forward action=accept connection-state=established,related add chain=forward action=drop connection-state=invalid add chain=forward action=accept in-interface-list=VLAN-MGMT add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-STAFF add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-MGMT add chain=forward action=accept in-interface-list=VLAN-GUESTS out-interface=ether1 add chain=forward action=drop in-interface-list=VLAN-GUESTS add chain=input action=accept connection-state=established,related add chain=input action=drop connection-state=invalid add chain=input action=accept in-interface-list=VLAN-MGMT add chain=input action=accept protocol=udp dst-port=67 add chain=input action=accept protocol=udp dst-port=53 add chain=input action=accept protocol=tcp dst-port=53 add chain=input action=drop in-interface-list=VLAN-GUESTS add chain=input action=drop in-interface-list=VLAN-STAFF /ip/firewall/nat add chain=srcnat action=masquerade out-interface=ether1 # 8. ПОСЛЕДНИЙ ШАГ — включение VLAN filtering /interface/bridge set bridge1 vlan-filtering=yes
После выполнения этого скрипта у вас будет полностью работающая VLAN-сегментация с тремя изолированными сегментами, DHCP-серверами, DNS и firewall.
Заключение
Bridge VLAN Filtering — это мощный и гибкий метод сегментации сети на MikroTik RouterOS 7.x. Ключевые правила, которые стоит запомнить:
- vlan-filtering=yes включается последним — после настройки всех портов, таблицы VLAN, IP-адресов и DHCP
- bridge1 должен быть tagged для каждого VLAN, в котором нужна маршрутизация
- PVID access-порта должен совпадать с VLAN, в котором порт указан как untagged
- Один порт — один untagged VLAN, но можно несколько tagged
- Firewall обязателен — без него VLAN дают только L2-изоляцию
- Safe Mode (
Ctrl+X) — ваша страховка при удалённой настройке
Правильно настроенные VLAN значительно повышают безопасность и управляемость сети. Потратьте время на планирование схемы VLAN до начала настройки — перенос устройств между VLAN потом займёт гораздо больше времени.
/interface/bridge add name=bridge1 vlan-filtering=no comment="Main VLAN bridge" /interface/bridge/port add bridge=bridge1 interface=ether1 pvid=1 add bridge=bridge1 interface=ether2 pvid=10 add bridge=bridge1 interface=ether3 pvid=10 add bridge=bridge1 interface=ether4 pvid=20 add bridge=bridge1 interface=ether5 pvid=30 /interface/bridge/vlan add bridge=bridge1 tagged=bridge1,ether1 untagged=ether2,ether3 vlan-ids=10 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether4 vlan-ids=20 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether5 vlan-ids=30 /interface/vlan add name=vlan10-staff interface=bridge1 vlan-id=10 add name=vlan20-guests interface=bridge1 vlan-id=20 add name=vlan30-mgmt interface=bridge1 vlan-id=30 /ip/address add address=192.168.10.1/24 interface=vlan10-staff network=192.168.10.0 add address=192.168.20.1/24 interface=vlan20-guests network=192.168.20.0 add address=192.168.30.1/24 interface=vlan30-mgmt network=192.168.30.0 /ip/pool add name=pool-vlan10 ranges=192.168.10.100-192.168.10.254 add name=pool-vlan20 ranges=192.168.20.100-192.168.20.254 add name=pool-vlan30 ranges=192.168.30.100-192.168.30.254 /ip/dhcp-server/network add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1 comment="Staff" add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=192.168.20.1 comment="Guests" add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=192.168.30.1 comment="Management" /ip/dhcp-server add name=dhcp-vlan10 interface=vlan10-staff address-pool=pool-vlan10 lease-time=8h disabled=no add name=dhcp-vlan20 interface=vlan20-guests address-pool=pool-vlan20 lease-time=1h disabled=no add name=dhcp-vlan30 interface=vlan30-mgmt address-pool=pool-vlan30 lease-time=8h disabled=no /ip/dns set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4 /interface/bridge set bridge1 vlan-filtering=yes /interface/list add name=VLAN-STAFF add name=VLAN-GUESTS add name=VLAN-MGMT /interface/list/member add interface=vlan10-staff list=VLAN-STAFF add interface=vlan20-guests list=VLAN-GUESTS add interface=vlan30-mgmt list=VLAN-MGMT /ip/firewall/filter add chain=forward action=accept connection-state=established,related comment="Allow established" add chain=forward action=drop connection-state=invalid comment="Drop invalid" add chain=forward action=accept in-interface-list=VLAN-STAFF out-interface-list=VLAN-STAFF comment="Staff internal" add chain=forward action=accept in-interface-list=VLAN-MGMT comment="Management to all" add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-STAFF comment="Block guests to staff" add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-MGMT comment="Block guests to mgmt" add chain=forward action=accept in-interface-list=VLAN-GUESTS out-interface=ether1 comment="Guests to internet only" add chain=forward action=drop in-interface-list=VLAN-GUESTS comment="Drop all other guest traffic" /ip/firewall/filter add chain=input action=accept connection-state=established,related comment="Allow established to router" add chain=input action=drop connection-state=invalid comment="Drop invalid to router" add chain=input action=accept in-interface-list=VLAN-MGMT comment="Management access to router" add chain=input action=accept protocol=udp dst-port=67 comment="Allow DHCP requests" add chain=input action=accept protocol=udp dst-port=53 comment="Allow DNS queries" add chain=input action=accept protocol=tcp dst-port=53 comment="Allow DNS queries TCP" add chain=input action=drop in-interface-list=VLAN-GUESTS comment="Block guests to router" add chain=input action=drop in-interface-list=VLAN-STAFF comment="Block staff to router (except DHCP/DNS)" /ip/firewall/nat add chain=srcnat action=masquerade out-interface=ether1 comment="NAT to internet" /ip/firewall/nat add chain=srcnat action=masquerade src-address=192.168.10.0/24 out-interface=ether1 comment="NAT staff" add chain=srcnat action=masquerade src-address=192.168.20.0/24 out-interface=ether1 comment="NAT guests" /interface/bridge print /interface/bridge/port print /interface/bridge/vlan print /interface/vlan print /ip/address print /ip/dhcp-server print /ip/dhcp-server/lease print /ping 192.168.10.100 /ping 192.168.20.100 /ping 192.168.30.100 /interface/monitor-traffic vlan10-staff,vlan20-guests,vlan30-mgmt once /interface/bridge/host print where bridge=bridge1 /interface/wifi/security add name=sec-staff authentication-types=wpa2-psk,wpa3-psk passphrase="StaffPass2024" add name=sec-guests authentication-types=wpa2-psk passphrase="GuestWiFi" /interface/wifi/configuration add name=cfg-staff ssid="Office-Staff" security=sec-staff add name=cfg-guests ssid="Office-Guests" security=sec-guests /interface/wifi set wifi1 configuration=cfg-staff disabled=no add master-interface=wifi1 configuration=cfg-guests name=wifi-guests disabled=no /interface/bridge/port add bridge=bridge1 interface=wifi1 pvid=10 add bridge=bridge1 interface=wifi-guests pvid=20 /interface/bridge/vlan set [find vlan-ids=10] untagged=ether2,ether3,wifi1 set [find vlan-ids=20] untagged=ether4,wifi-guests # 1. Bridge /interface/bridge add name=bridge1 vlan-filtering=no # 2. Порты /interface/bridge/port add bridge=bridge1 interface=ether1 pvid=1 add bridge=bridge1 interface=ether2 pvid=10 add bridge=bridge1 interface=ether3 pvid=10 add bridge=bridge1 interface=ether4 pvid=20 add bridge=bridge1 interface=ether5 pvid=30 # 3. Таблица VLAN /interface/bridge/vlan add bridge=bridge1 tagged=bridge1,ether1 untagged=ether2,ether3 vlan-ids=10 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether4 vlan-ids=20 add bridge=bridge1 tagged=bridge1,ether1 untagged=ether5 vlan-ids=30 # 4. VLAN-интерфейсы /interface/vlan add name=vlan10-staff interface=bridge1 vlan-id=10 add name=vlan20-guests interface=bridge1 vlan-id=20 add name=vlan30-mgmt interface=bridge1 vlan-id=30 # 5. IP-адреса /ip/address add address=192.168.10.1/24 interface=vlan10-staff network=192.168.10.0 add address=192.168.20.1/24 interface=vlan20-guests network=192.168.20.0 add address=192.168.30.1/24 interface=vlan30-mgmt network=192.168.30.0 # 6. DHCP /ip/pool add name=pool-vlan10 ranges=192.168.10.100-192.168.10.254 add name=pool-vlan20 ranges=192.168.20.100-192.168.20.254 add name=pool-vlan30 ranges=192.168.30.100-192.168.30.254 /ip/dhcp-server/network add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1 add address=192.168.20.0/24 gateway=192.168.20.1 dns-server=192.168.20.1 add address=192.168.30.0/24 gateway=192.168.30.1 dns-server=192.168.30.1 /ip/dhcp-server add name=dhcp-vlan10 interface=vlan10-staff address-pool=pool-vlan10 lease-time=8h disabled=no add name=dhcp-vlan20 interface=vlan20-guests address-pool=pool-vlan20 lease-time=1h disabled=no add name=dhcp-vlan30 interface=vlan30-mgmt address-pool=pool-vlan30 lease-time=8h disabled=no /ip/dns set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4 # 7. Firewall /interface/list add name=VLAN-STAFF add name=VLAN-GUESTS add name=VLAN-MGMT /interface/list/member add interface=vlan10-staff list=VLAN-STAFF add interface=vlan20-guests list=VLAN-GUESTS add interface=vlan30-mgmt list=VLAN-MGMT /ip/firewall/filter add chain=forward action=accept connection-state=established,related add chain=forward action=drop connection-state=invalid add chain=forward action=accept in-interface-list=VLAN-MGMT add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-STAFF add chain=forward action=drop in-interface-list=VLAN-GUESTS out-interface-list=VLAN-MGMT add chain=forward action=accept in-interface-list=VLAN-GUESTS out-interface=ether1 add chain=forward action=drop in-interface-list=VLAN-GUESTS add chain=input action=accept connection-state=established,related add chain=input action=drop connection-state=invalid add chain=input action=accept in-interface-list=VLAN-MGMT add chain=input action=accept protocol=udp dst-port=67 add chain=input action=accept protocol=udp dst-port=53 add chain=input action=accept protocol=tcp dst-port=53 add chain=input action=drop in-interface-list=VLAN-GUESTS add chain=input action=drop in-interface-list=VLAN-STAFF /ip/firewall/nat add chain=srcnat action=masquerade out-interface=ether1 # 8. ПОСЛЕДНИЙ ШАГ — включение VLAN filtering /interface/bridge set bridge1 vlan-filtering=yes