DHCP не работает в VLAN 1 на Mikrotik: решение проблемы
Решаем проблему с DHCP в VLAN 1 на Mikrotik CCR1036. Узнайте о конфликте native VLAN, настройке PVID и bridge vlan таблицы для корректной работы DHCP релея.
Почему клиенты не получают DHCP‑адреса в VLAN 1?
Ситуация:
- Настроен DHCP‑сервер на Windows
- Сеть состоит из маршрутизаторов Mikrotik CCR 1036 и управляемых коммутаторов
- Открыт новый филиал в соседнем здании
- Необходимо передать трафик с тегированием VLAN 3
- На другой стороне стоит такой же Mikrotik CCR 1036, который принимает тег и передает дальше в коммутаторы
Проблема:
DHCP‑клиенты не получают адреса в VLAN 1, в то время как на других VLAN все работает нормально.
Конфигурация Mikrotik:
spoiler/interface bridge
add name="bridge for sip"
add name="bridge local" vlan-filtering=yes
/interface vlan
add interface="bridge local" name=vlan1 vlan-id=1
add interface="bridge local" name=vlan37 vlan-id=37
add interface="bridge local" name=vlan120 vlan-id=120
/interface list
add name=WAN
add name=LAN
/port
set 0 name=serial0
/interface bridge port
add bridge="bridge local" interface=sfp-sfpplus1
add bridge="bridge local" interface=ether1
add bridge="bridge local" interface=sfp-sfpplus3
add bridge="bridge local" interface=sfp-sfpplus4
add bridge="bridge local" interface=sfp-sfpplus5
add bridge="bridge local" interface=sfp-sfpplus6
add bridge="bridge local" interface=sfp-sfpplus7
add bridge="bridge for sip" interface=sfp-sfpplus8
add bridge="bridge local" interface=sfp-sfpplus9
add bridge="bridge local" interface=sfp-sfpplus10
add bridge="bridge local" interface=sfp-sfpplus11
add bridge="bridge local" interface=sfp-sfpplus12
add bridge="bridge local" interface=sfp28-1
add bridge="bridge local" interface=sfp28-2
add bridge="bridge for sip" interface=sfp-sfpplus2
/ipv6 settings
set disable-ipv6=yes
/interface bridge vlan
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=37
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=120
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=1
/interface list member
add interface=sfp-sfpplus2 list=LAN
add interface=sfp-sfpplus3 list=LAN
add interface=sfp-sfpplus4 list=LAN
add interface=sfp-sfpplus5 list=LAN
add interface=sfp-sfpplus6 list=LAN
add interface=sfp-sfpplus7 list=LAN
add interface=sfp-sfpplus8 list=LAN
add interface=sfp-sfpplus9 list=LAN
add interface=sfp-sfpplus10 list=LAN
add interface=sfp-sfpplus11 list=LAN
add interface=sfp-sfpplus12 list=LAN
add interface=sfp28-1 list=LAN
add interface=sfp28-2 list=LAN
add interface=ether1 list=WAN
add interface=sfp-sfpplus1 list=LAN
/interface ovpn-server server
add mac-address=FE:5C:71:DA:42:55 name=ovpn-server1
/ip address
add address=192.168.22.220/22 interface=vlan1 network=192.168.22.0
add address=192.168.11.1/24 interface="bridge for sip" network=192.168.11.0
add address=192.168.37.43/26 interface=vlan37 network=192.168.37.0
/ip dhcp-client
add default-route-tables=main interface=vlan1
add default-route-tables=main interface=vlan120
/ip dhcp-relay
add dhcp-server=192.168.22.10,192.168.22.11 disabled=no interface=vlan1 local-address=192.168.22.220 local-address-as-src-ip=yes name=sww
add dhcp-server=192.168.22.10,192.168.22.11 disabled=no interface=vlan120 local-address=10.127.120.31 name="sww net"
/ip dns
set servers=192.168.22.11,192.168.22.10
/ip firewall nat
add action=masquerade chain=srcnat out-interface="bridge local" src-address=192.168.11.0/24
/ip ipsec profile
set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5
/ip service
set ftp disabled=yes
set ssh disabled=yes
set telnet disabled=yes
set www disabled=yes
set api disabled=yes
set api-ssl disabled=yes
/system clock
set time-zone-name=Europe/Moscow
/system identity
set name=SWW
/system ntp client
set enabled=yes
/system ntp client servers
add address=1.ru.pool.ntp.org
add address=2.ru.pool.ntp.org
add address=3.ru.pool.ntp.org
/system routerboard settings
set enter-setup-on=delete-key
Что может быть причиной проблемы и как ее исправить?
Наиболее вероятной причиной проблемы является некорректная настройка обработки VLAN 1 в режиме vlan-filtering=yes, так как VLAN 1 часто используется как native/untagged VLAN, что создает конфликт с требованием тегирования в bridge vlan таблице.
Содержание
- Основные причины проблемы DHCP в VLAN 1
- Конфликт с native VLAN
- Неправильная настройка bridge vlan таблицы
- Проблемы с DHCP relay
- Решение и рекомендуемая конфигурация
- Дополнительные проверки
Основные причины проблемы DHCP в VLAN 1
Проблема с DHCP в VLAN 1 на Mikrotik CCR1036 при включенном vlan-filtering связана с несколькими ключевыми аспектами:
-
VLAN 1 как default/native VLAN: В большинстве сетей VLAN 1 используется как untagged/native VLAN. Однако при включенном vlan-filtering все трафик должен явно разрешаться в bridge vlan таблице.
-
Отсутствие PVID настроек: В вашей конфигурации bridge порты не имеют настроек PVID (Port VLAN ID), что критично для правильной работы с untagged трафиком.
-
Конфликт тегирования: В текущей конфигурации VLAN 1 добавлен как tagged member, что не соответствует его роли как native VLAN.
Конфликт с native VLAN
Как отмечено в документации Mikrotik, при использовании vlan-filtering необходимо явно обрабатывать native VLAN:
“VID=1 is used as default in many places and can thus cause unexpected behaviour. Bridge port ether2 needs to have pvid setting as well.”
Решение: Необходимо настроить порты, которые должны принимать untagged трафик для VLAN 1, с правильным PVID:
/interface bridge port
set [ find bridge="bridge local" interface=ether1 ] pvid=1
set [ find bridge="bridge local" interface=sfp-sfpplus1 ] pvid=1
Неправильная настройка bridge vlan таблицы
В текущей конфигурации VLAN 1 добавлен как tagged member, что не соответствует его роли как native VLAN. Правильная настройка должна включать как tagged, так и untagged порты:
/interface bridge vlan
# Для VLAN 1 - native VLAN, некоторые порты untagged
add bridge="bridge local" untagged="ether1,sfp-sfpplus1" tagged="bridge local" vlan-ids=1
# Для других VLAN - только tagged
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=37
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=120
Проблемы с DHCP relay
Настройка DHCP‑релея в вашей конфигурации может быть некорректна:
-
Интерфейс relay: DHCP relay настроен на vlan1 интерфейсе, но при vlan-filtering трафик может не доходить до этого интерфейса.
-
Local-address: Параметр local-address указан как 192.168.22.220, который находится в той же подсети, что и DHCP серверы.
Рекомендуемая настройка DHCP relay:
/ip dhcp-relay
add dhcp-server=192.168.22.10,192.168.22.11 disabled=no interface=vlan1 local-address=192.168.22.220 local-address-as-src-ip=yes name=sww
Решение и рекомендуемая конфигурация
Полная последовательность действий для исправления проблемы:
1. Настройка PVID для портов
/interface bridge port
set [ find bridge="bridge local" interface=ether1 ] pvid=1
set [ find bridge="bridge local" interface=sfp-sfpplus1 ] pvid=1
2. Корректировка bridge vlan таблицы
/interface bridge vlan
remove [ find bridge="bridge local" vlan-ids=1 ]
add bridge="bridge local" untagged="ether1,sfp-sfpplus1" tagged="bridge local" vlan-ids=1
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=37
add bridge="bridge local" tagged="sfp-sfpplus1,sfp-sfpplus3,sfp-sfpplus4,sfp-sfpplus5,sfp-sfpplus6,bridge local" vlan-ids=120
3. Проверка DHCP relay
Убедитесь, что DHCP relay настроен правильно и интерфейс vlan1 имеет IP‑адрес в той же подсети, что и DHCP серверы.
4. Проверка firewall rules
Проверьте, нет ли firewall правил, блокирующих DHCP трафик (порты 67–68 UDP).
Дополнительные проверки
-
Проверка connectivity: Убедитесь, что вы можете пропинговать DHCP серверы с Mikrotik.
-
Проверка DHCP запросов: Используйте сниффер для проверки, достигают ли DHCP запросы сервера.
-
Проверка коммутаторов: Убедитесь, что коммутаторы настроены корректно и передают трафик VLAN 1 как untagged на соответствующих портах.
-
Проверка версии RouterOS: Некоторые версии RouterOS имели проблемы с DHCP в VLAN 1 – обновите до последней стабильной версии.
Заключение
Основная проблема DHCP в VLAN 1 на Mikrotik CCR1036 при включенном vlan-filtering заключается в неправильной настройке обработки native VLAN. Ключевые решения:
- Настроить PVID = 1 для портов, принимающих untagged трафик.
- Исправить bridge vlan таблицу, добавив untagged порты для VLAN 1.
- Убедиться в корректности настройки DHCP relay.
- Проверить отсутствие блокировок на firewall.
После внесения этих изменений DHCP клиенты в VLAN 1 должны успешно получать адреса от Windows DHCP сервера.