IPv6 на MikroTik — настройка и практика
IPv6 на MikroTik — настройка и практическое применение
IPv6 в 2026 году — это уже не экспериментальная технология, а повседневная необходимость. Пул IPv4-адресов IANA исчерпан ещё в 2011 году, региональные регистраторы (RIPE, ARIN, APNIC) раздали последние блоки, и получить новые IPv4-адреса можно только на вторичном рынке по ценам от 30-50 долларов за адрес. Крупнейшие провайдеры (Ростелеком, МТС, мобильные операторы) уже выдают IPv6-префиксы абонентам. Google сообщает, что более 45% мирового трафика идёт через IPv6. В этом руководстве настроим полноценный dual-stack (IPv4 + IPv6) на MikroTik: получим IPv6-префикс от провайдера, раздадим адреса клиентам через SLAAC или DHCPv6 и защитим сеть IPv6-firewall.
Описание
IPv6-адресация: основы
IPv6-адрес состоит из 128 бит (против 32 бит у IPv4) и записывается в шестнадцатеричном формате через двоеточия: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Ведущие нули можно опустить, группу нулей заменить на :: (один раз): 2001:db8:85a3::8a2e:370:7334.
Типы IPv6-адресов, которые вы встретите на MikroTik:
-
Link-Local (fe80::/10) — автоматически назначается на каждый интерфейс. Работает только в пределах L2-сегмента (как 169.254.x.x в IPv4, но реально используется). Необходим для работы Neighbor Discovery Protocol (NDP).
-
Global Unicast Address (GUA, 2000::/3) — глобально маршрутизируемый адрес, аналог публичного IPv4. Провайдер выдаёт префикс (обычно /48 или /64), вы формируете адреса из этого префикса.
-
Unique Local Address (ULA, fc00::/7, практически fd00::/8) — аналог приватных IPv4-адресов (192.168.x.x, 10.x.x.x). Не маршрутизируются в интернете. Используются для внутренних сервисов.
-
Multicast (ff00::/8) — групповые адреса. Broadcast в IPv6 не существует — его заменяет multicast. Например, ff02::1 — все узлы на линке, ff02::2 — все маршрутизаторы на линке.
Как получить IPv6 от провайдера
Провайдер может выдать IPv6-адреса несколькими способами:
-
DHCPv6 + Prefix Delegation (PD) — самый распространённый. Маршрутизатор получает IPv6-адрес на WAN-интерфейс и делегированный префикс (обычно /48 или /56) для раздачи в LAN.
-
SLAAC — маршрутизатор получает IPv6-адрес из Router Advertisement провайдера. Prefix Delegation при этом может идти через DHCPv6.
-
Статическая настройка — провайдер выделяет фиксированный префикс и шлюз. Встречается реже.
-
6to4 / Tunnel Broker — если провайдер не даёт нативный IPv6, можно получить его через туннель (Hurricane Electric, например). Не рекомендуется для production.
Neighbor Discovery Protocol (NDP)
NDP — ключевой протокол IPv6, заменяющий ARP, DHCP (частично) и ICMP Redirect из IPv4. Работает через ICMPv6 и включает:
- Router Solicitation (RS) — клиент запрашивает информацию о маршрутизаторе
- Router Advertisement (RA) — маршрутизатор объявляет префикс, шлюз, флаги
- Neighbor Solicitation (NS) — аналог ARP Request
- Neighbor Advertisement (NA) — аналог ARP Reply
Критически важно: ICMPv6 нельзя блокировать полностью в firewall. Без ICMPv6 IPv6-сеть не работает. Минимум нужно разрешить типы 133, 134, 135, 136 (NDP) и 128, 129 (echo request/reply).
SLAAC vs DHCPv6
Для раздачи IPv6-адресов клиентам в LAN есть два механизма:
| Параметр | SLAAC | DHCPv6 |
|---|---|---|
| Кто генерирует адрес | Клиент сам (из префикса RA + EUI-64 или random) | DHCPv6-сервер |
| Нужен RA | Да (обязательно) | Да (с флагом Managed) |
| Выдаёт DNS | Через RDNSS в RA (не все клиенты поддерживают) | Да (стандартно) |
| Логирование/контроль | Сложнее (адреса генерируются клиентами) | Легче (адреса в lease table) |
| Поддержка клиентами | Все ОС | Все ОС (Android — только для DNS) |
| Рекомендация | Для домашних/малых сетей | Для корпоративных сетей |
Важный нюанс: Android не поддерживает DHCPv6 для получения адреса. Android получает IPv6-адрес только через SLAAC. Поэтому если в сети есть Android-устройства (смартфоны, планшеты) — SLAAC обязателен.
Рекомендованная конфигурация для большинства случаев: SLAAC для адресов + DHCPv6 для DNS. В RouterOS это реализуется через Router Advertisement с флагом other (O-flag).
Настройка
Шаг 1: получение IPv6 от провайдера через DHCPv6 Client
Предполагаем, что WAN-интерфейс — ether1, LAN — bridge.
[admin@MikroTik] ># Включаем IPv6 пакет (обычно включён по умолчанию в ROS 7) /system/package/print where name=ipv6 # Создаём DHCPv6 Client на WAN-интерфейсе # request=prefix — запрашиваем Prefix Delegation # pool-name — имя пула, куда будет помещён делегированный префикс /ipv6/dhcp-client/add interface=ether1 request=address,prefix \ pool-name=ipv6-pool add-default-route=yes \ comment="IPv6 from ISP" # Проверяем, что клиент получил адрес и префикс /ipv6/dhcp-client/print detail
Если провайдер выдаёт только адрес без Prefix Delegation, замените request=address,prefix на request=address. В этом случае потребуется настроить IPv6-адресацию в LAN вручную или использовать ULA.
Шаг 2: назначение IPv6-адреса на LAN-интерфейс
[admin@MikroTik] ># Вариант A: автоматически из делегированного пула (рекомендуется) # from-pool берёт подсеть из полученного от провайдера префикса /ipv6/address/add interface=bridge from-pool=ipv6-pool \ comment="IPv6 LAN from delegated prefix" # Вариант B: статический ULA-адрес (если провайдер не даёт PD) /ipv6/address/add interface=bridge \ address=fd00:abcd:1234::1/64 \ comment="IPv6 ULA for LAN" # Вариант C: статический GUA (если провайдер выдал фиксированный /48) /ipv6/address/add interface=bridge \ address=2001:db8:1234:1::1/64 \ comment="IPv6 GUA for LAN"
При использовании from-pool RouterOS автоматически возьмёт /64 подсеть из делегированного префикса и назначит ::1 адрес на интерфейс.
Шаг 3: раздача IPv6 клиентам через SLAAC (Router Advertisement)
[admin@MikroTik] ># Настраиваем Router Advertisement на LAN-интерфейсе # managed-address-configuration=no — адреса через SLAAC (не DHCPv6) # other-configuration=yes — DNS и другие параметры через DHCPv6 /ipv6/nd/set [find interface=bridge] \ managed-address-configuration=no \ other-configuration=yes \ advertise-dns=yes \ dns=2001:4860:4860::8888,2606:4700:4700::1111 \ ra-interval=3m20s-10m \ ra-lifetime=30m # Проверяем настройки ND /ipv6/nd/print detail
Флаги в Router Advertisement:
- M-flag (managed-address-configuration) = yes → клиенты получают адрес через DHCPv6
- O-flag (other-configuration) = yes → клиенты получают DNS/NTP через DHCPv6
- A-flag — в каждом префиксе RA, разрешает SLAAC
Рекомендация: M=no, O=yes — SLAAC для адресов, DHCPv6 для DNS. Это работает со всеми клиентами, включая Android.
Шаг 4: DHCPv6 Server для DNS (опционально)
Если нужно раздавать DNS через DHCPv6 (в дополнение к RDNSS в RA):
[admin@MikroTik] ># Создаём DHCPv6 Server на LAN /ipv6/dhcp-server/add name=dhcpv6-lan interface=bridge \ address-pool=ipv6-pool \ comment="DHCPv6 for DNS distribution" # Проверяем /ipv6/dhcp-server/print
Шаг 5: IPv6 Firewall
Это самый критичный шаг. В IPv4 устройства за NAT "спрятаны" — NAT непреднамеренно выступает как firewall. В IPv6 NAT обычно не используется, и каждое устройство в LAN имеет глобально маршрутизируемый адрес. Без firewall все устройства в LAN доступны из интернета напрямую.
[admin@MikroTik] ># === IPv6 Firewall: INPUT chain === /ipv6/firewall/filter # Принять established/related add chain=input action=accept connection-state=established,related \ comment="Accept established/related" # Отбросить invalid add chain=input action=drop connection-state=invalid \ comment="Drop invalid" # Разрешить ICMPv6 (ОБЯЗАТЕЛЬНО для работы IPv6!) add chain=input action=accept protocol=icmpv6 \ comment="Accept ICMPv6 (required for IPv6)" # Разрешить DHCPv6 Client (UDP 546) на WAN add chain=input action=accept protocol=udp dst-port=546 \ in-interface=ether1 \ comment="Accept DHCPv6 replies from ISP" # Разрешить из LAN add chain=input action=accept in-interface=bridge \ comment="Accept from LAN" # Отбросить всё остальное на input add chain=input action=drop \ comment="Drop all other input" # === IPv6 Firewall: FORWARD chain === # Принять established/related add chain=forward action=accept connection-state=established,related \ comment="Accept established/related forward" # Отбросить invalid add chain=forward action=drop connection-state=invalid \ comment="Drop invalid forward" # Разрешить ICMPv6 (необходимо для Path MTU Discovery, ping и т.д.) add chain=forward action=accept protocol=icmpv6 \ comment="Accept ICMPv6 forward" # Разрешить из LAN в WAN (любой трафик) add chain=forward action=accept \ in-interface=bridge out-interface=ether1 \ comment="Allow LAN to WAN" # Отбросить всё из WAN в LAN (ЭТО ЗАЩИТА!) add chain=forward action=drop in-interface=ether1 \ comment="Drop WAN to LAN (protect LAN hosts)"
Без последнего правила drop in-interface=ether1 любой хост в интернете сможет подключиться к вашим устройствам в LAN по IPv6-адресу. Это критическая уязвимость.
Шаг 6: DNS для IPv6
[admin@MikroTik] ># Настраиваем DNS-сервер с IPv6 upstream /ip/dns/set allow-remote-requests=yes \ servers=2001:4860:4860::8888,2606:4700:4700::1111,8.8.8.8,1.1.1.1 # Проверяем разрешение AAAA-записей /ip/dns/cache/print where type=AAAA
Полная конфигурация: dual-stack за один скрипт
[admin@MikroTik] ># === IPv6 Dual-Stack Configuration === # WAN: ether1, LAN: bridge # Предполагается: IPv4 уже настроен и работает # 1. DHCPv6 Client на WAN /ipv6/dhcp-client/add interface=ether1 request=address,prefix \ pool-name=ipv6-pool add-default-route=yes # 2. IPv6-адрес на LAN из делегированного пула /ipv6/address/add interface=bridge from-pool=ipv6-pool # 3. Router Advertisement (SLAAC + DNS) /ipv6/nd/set [find interface=bridge] \ managed-address-configuration=no \ other-configuration=yes \ advertise-dns=yes \ dns=2001:4860:4860::8888,2606:4700:4700::1111 # 4. IPv6 Firewall /ipv6/firewall/filter add chain=input action=accept connection-state=established,related add chain=input action=drop connection-state=invalid add chain=input action=accept protocol=icmpv6 add chain=input action=accept protocol=udp dst-port=546 in-interface=ether1 add chain=input action=accept in-interface=bridge add chain=input action=drop add chain=forward action=accept connection-state=established,related add chain=forward action=drop connection-state=invalid add chain=forward action=accept protocol=icmpv6 add chain=forward action=accept in-interface=bridge out-interface=ether1 add chain=forward action=drop in-interface=ether1 # 5. DNS с IPv6 /ip/dns/set allow-remote-requests=yes \ servers=2001:4860:4860::8888,2606:4700:4700::1111,8.8.8.8,1.1.1.1
Настройка ULA (Unique Local Addresses) для внутренних сервисов
Если провайдер не выдаёт IPv6, или нужны стабильные внутренние адреса (не зависящие от провайдера):
[admin@MikroTik] ># ULA-префикс: fd00:abcd:1234::/48 (замените на свой уникальный) # Для генерации уникального ULA: https://unique-local-ipv6.com # Адрес на LAN /ipv6/address/add interface=bridge address=fd00:abcd:1234:1::1/64 # Router Advertisement для ULA /ipv6/nd/set [find interface=bridge] \ managed-address-configuration=no \ other-configuration=no # Клиенты получат ULA-адрес через SLAAC # Маршрутизация ULA в интернет НЕ работает (только локальная связь)
NAT66 (когда нужен, а когда — нет)
В IPv6 NAT обычно не нужен. Каждое устройство получает глобальный адрес и доступно напрямую (защита — через firewall). Но есть редкие случаи, когда NAT66 полезен:
[admin@MikroTik] ># NAT66: замена source-адреса IPv6 (аналог src-nat в IPv4) # Используется ТОЛЬКО если провайдер не даёт Prefix Delegation # и выделяет только один /128 или /64 адрес на WAN /ipv6/firewall/nat/add chain=srcnat action=masquerade \ out-interface=ether1 \ comment="NAT66 - only if ISP doesn't provide PD"
NAT66 не рекомендуется, потому что:
- Ломает end-to-end connectivity — главное преимущество IPv6
- Усложняет диагностику
- Мешает протоколам, встраивающим адреса в payload (SIP, FTP)
- Если провайдер даёт Prefix Delegation — NAT66 не нужен
Проверка
Проверка получения IPv6 от провайдера
[admin@MikroTik] ># Состояние DHCPv6 Client /ipv6/dhcp-client/print detail # Должно быть status=bound, prefix — делегированный префикс # IPv6-адреса на интерфейсах /ipv6/address/print # На ether1: адрес от провайдера (GUA) # На bridge: адрес из делегированного пула (GUA) + link-local (fe80::) # IPv6-маршруты /ipv6/route/print # Должен быть default route (dst-address=::/0) через провайдера # DNS-разрешение IPv6 /resolve ipv6.google.com # Должен вернуть IPv6-адрес (2a00:1450:...)
Проверка раздачи IPv6 клиентам
[admin@MikroTik] ># Таблица Neighbor Discovery (аналог ARP) /ipv6/neighbor/print # Должны быть видны клиенты с GUA и link-local адресами # Проверка Router Advertisement /ipv6/nd/print detail # advertise-dns, managed-address-configuration, other-configuration # DHCPv6 Server bindings (если используется) /ipv6/dhcp-server/binding/print
Проверка связности IPv6
[admin@MikroTik] ># Ping IPv6-адреса /ping 2001:4860:4860::8888 count=5 # Должен отвечать # Ping по имени хоста (должен разрешить AAAA) /ping ipv6.google.com count=5 # Traceroute IPv6 /tool/traceroute address=2001:4860:4860::8888 # Проверка с клиентского ПК (Windows) # ping -6 ipv6.google.com # Или зайдите на https://test-ipv6.com — должен показать 10/10
Проверка IPv6 Firewall
[admin@MikroTik] ># Статистика firewall rules /ipv6/firewall/filter/print stats # Проверяем, что drop-правило на WAN→LAN считает пакеты # (значит, firewall работает и блокирует входящие) /ipv6/firewall/filter/print stats where chain=forward action=drop # Проверяем connection table IPv6 /ipv6/firewall/connection/print
Типичные ошибки
1. Забыли настроить IPv6 Firewall — сеть полностью открыта
Самая опасная ошибка. В IPv4 NAT случайно выполняет функцию firewall — входящие соединения не проходят через NAT. В IPv6 NAT обычно нет, и без firewall каждый хост в LAN доступен из интернета по глобальному адресу.
[admin@MikroTik] ># Проверьте: есть ли правила в IPv6 firewall /ipv6/firewall/filter/print # Если пусто — СРОЧНО добавьте хотя бы минимальную защиту: /ipv6/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=bridge out-interface=ether1 add chain=forward action=drop in-interface=ether1 \ comment="CRITICAL: block WAN to LAN"
Без этого правила любой сканер в интернете найдёт ваши устройства за минуты и попытается подключиться к открытым сервисам (SMB, RDP, SSH, принтеры, IoT-устройства).
2. Заблокировали весь ICMPv6 — IPv6 перестал работать
В IPv4 блокировка ICMP — спорная, но допустимая практика. В IPv6 это катастрофа. ICMPv6 необходим для:
- Neighbor Discovery (замена ARP) — типы 133, 134, 135, 136
- Path MTU Discovery — тип 2 (Packet Too Big)
- Multicast Listener Discovery — типы 130, 131, 132
- Echo Request/Reply — типы 128, 129
[admin@MikroTik] ># Неправильно: блокировать весь ICMPv6 /ipv6/firewall/filter/add chain=input action=drop protocol=icmpv6 # РЕЗУЛЬТАТ: IPv6 полностью перестанет работать через несколько минут # Правильно: разрешить ICMPv6 (или хотя бы необходимые типы) /ipv6/firewall/filter/add chain=input action=accept protocol=icmpv6 \ comment="Accept all ICMPv6" # Если хотите ограничить — разрешите минимум эти типы: /ipv6/firewall/filter add chain=input action=accept protocol=icmpv6 icmp-options=128:0 \ comment="Echo Request" add chain=input action=accept protocol=icmpv6 icmp-options=129:0 \ comment="Echo Reply" add chain=input action=accept protocol=icmpv6 icmp-options=133:0 \ comment="Router Solicitation" add chain=input action=accept protocol=icmpv6 icmp-options=134:0 \ comment="Router Advertisement" add chain=input action=accept protocol=icmpv6 icmp-options=135:0 \ comment="Neighbor Solicitation" add chain=input action=accept protocol=icmpv6 icmp-options=136:0 \ comment="Neighbor Advertisement" add chain=input action=accept protocol=icmpv6 icmp-options=2:0 \ comment="Packet Too Big (Path MTU)"
3. RA Flood — слишком частые Router Advertisement
По умолчанию RouterOS отправляет RA с интервалом 3m20s-10m. Если поставить слишком малый интервал (например, каждые 3 секунды), это вызовет:
- Повышенную нагрузку на CPU маршрутизатора
- Излишний multicast-трафик в LAN
- Некоторые клиенты (особенно IoT) начинают нестабильно работать
[admin@MikroTik] ># Неправильно: слишком частые RA /ipv6/nd/set [find interface=bridge] ra-interval=3s-10s # Правильно: стандартный интервал /ipv6/nd/set [find interface=bridge] ra-interval=3m20s-10m # Для быстрого подключения новых клиентов можно уменьшить минимум: /ipv6/nd/set [find interface=bridge] ra-interval=30s-3m
4. Privacy Extensions — клиенты меняют адреса
Современные ОС (Windows, macOS, Linux, iOS, Android) используют Privacy Extensions (RFC 4941): они генерируют временные случайные IPv6-адреса вместо стабильных EUI-64. Это затрудняет:
- Отслеживание клиентов в логах (адрес меняется)
- Создание firewall-правил по IPv6-адресу клиента
- DNS-записи для внутренних серверов
Решения:
[admin@MikroTik] ># Вариант 1: DHCPv6 для серверов (фиксированные адреса) # Серверы получают стабильный DHCPv6-адрес, рабочие станции — SLAAC с Privacy # Вариант 2: использовать ULA для внутренних сервисов # ULA-адрес стабильный и не зависит от провайдера /ipv6/address/add interface=bridge address=fd00:abcd:1234:1::1/64 # На сервере (Linux): отключить Privacy Extensions для ULA # sudo sysctl -w net.ipv6.conf.eth0.use_tempaddr=0
5. DHCPv6 Client не получает Prefix Delegation
Провайдер может не поддерживать PD, или настройка DHCPv6 Client неправильная:
[admin@MikroTik] ># Проверяем статус DHCPv6 Client /ipv6/dhcp-client/print detail # status должен быть "bound" или "requesting" # Если status=stopped — проверяем интерфейс # Если status=requesting долгое время — провайдер не отвечает # Попробуйте запросить только prefix (без address) /ipv6/dhcp-client/set [find interface=ether1] request=prefix # Или только address (без prefix) /ipv6/dhcp-client/set [find interface=ether1] request=address # Некоторые провайдеры требуют определённый prefix-hint /ipv6/dhcp-client/set [find interface=ether1] \ prefix-hint=::/56
Если провайдер точно не поддерживает IPv6, варианты:
- Tunnel Broker (Hurricane Electric — tunnelbroker.net)
- ULA для внутренней IPv6-сети (без выхода в IPv6-интернет)
- Ждать, пока провайдер внедрит IPv6
6. Двойной NAT66 — необоснованное использование
Некоторые администраторы по привычке из IPv4-мира включают NAT66 даже при наличии Prefix Delegation. Это ломает логику IPv6:
[admin@MikroTik] ># Неправильно: NAT66 при наличии Prefix Delegation /ipv6/firewall/nat/add chain=srcnat action=masquerade out-interface=ether1 # РЕЗУЛЬТАТ: потерян end-to-end connectivity, усложнена диагностика # Правильно: без NAT66, защита через firewall # Убедитесь, что NAT66 не включён: /ipv6/firewall/nat/print # Должно быть пусто (или только специфические правила) # Если правило есть — удалите /ipv6/firewall/nat/remove [find chain=srcnat action=masquerade]
7. Не настроили IPv6 DNS — клиенты не могут резолвить AAAA-записи
Клиенты получили IPv6-адреса, но не знают IPv6 DNS-серверы:
[admin@MikroTik] ># Проверяем, раздаётся ли DNS через RA /ipv6/nd/print detail # advertise-dns=yes, dns=<адреса> # Или через DHCPv6 /ipv6/dhcp-server/print detail # Настраиваем DNS в RA /ipv6/nd/set [find interface=bridge] \ advertise-dns=yes \ dns=2001:4860:4860::8888,2606:4700:4700::1111
Мониторинг IPv6
[admin@MikroTik] ># Все IPv6-адреса на роутере /ipv6/address/print # Таблица маршрутизации IPv6 /ipv6/route/print # Neighbor table (аналог ARP) /ipv6/neighbor/print # DHCPv6 Client статус /ipv6/dhcp-client/print detail # DHCPv6 Server bindings /ipv6/dhcp-server/binding/print # IPv6 Firewall connections /ipv6/firewall/connection/print # IPv6 Firewall статистика /ipv6/firewall/filter/print stats # Трафик на интерфейсе (включая IPv6) /interface/monitor-traffic ether1 interval=2 # DNS cache с AAAA-записями /ip/dns/cache/print where type=AAAA
IPv6 — это не просто "ещё один протокол". Это полноценная замена IPv4 с собственными правилами безопасности, адресации и маршрутизации. Главное правило при настройке IPv6 на MikroTik: всегда настраивайте firewall. В IPv4 мире NAT случайно защищал внутреннюю сеть, в IPv6 такой "бесплатной" защиты нет. Без правил в /ipv6/firewall/filter ваша сеть будет открыта для всего интернета, и это не преувеличение — это факт, подтверждённый тысячами инцидентов. Настройте firewall, разрешите ICMPv6, проверьте на test-ipv6.com — и ваш dual-stack будет работать надёжно и безопасно.
# Включаем IPv6 пакет (обычно включён по умолчанию в ROS 7) /system/package/print where name=ipv6 # Создаём DHCPv6 Client на WAN-интерфейсе # request=prefix — запрашиваем Prefix Delegation # pool-name — имя пула, куда будет помещён делегированный префикс /ipv6/dhcp-client/add interface=ether1 request=address,prefix \ pool-name=ipv6-pool add-default-route=yes \ comment="IPv6 from ISP" # Проверяем, что клиент получил адрес и префикс /ipv6/dhcp-client/print detail # Вариант A: автоматически из делегированного пула (рекомендуется) # from-pool берёт подсеть из полученного от провайдера префикса /ipv6/address/add interface=bridge from-pool=ipv6-pool \ comment="IPv6 LAN from delegated prefix" # Вариант B: статический ULA-адрес (если провайдер не даёт PD) /ipv6/address/add interface=bridge \ address=fd00:abcd:1234::1/64 \ comment="IPv6 ULA for LAN" # Вариант C: статический GUA (если провайдер выдал фиксированный /48) /ipv6/address/add interface=bridge \ address=2001:db8:1234:1::1/64 \ comment="IPv6 GUA for LAN" # Настраиваем Router Advertisement на LAN-интерфейсе # managed-address-configuration=no — адреса через SLAAC (не DHCPv6) # other-configuration=yes — DNS и другие параметры через DHCPv6 /ipv6/nd/set [find interface=bridge] \ managed-address-configuration=no \ other-configuration=yes \ advertise-dns=yes \ dns=2001:4860:4860::8888,2606:4700:4700::1111 \ ra-interval=3m20s-10m \ ra-lifetime=30m # Проверяем настройки ND /ipv6/nd/print detail # Создаём DHCPv6 Server на LAN /ipv6/dhcp-server/add name=dhcpv6-lan interface=bridge \ address-pool=ipv6-pool \ comment="DHCPv6 for DNS distribution" # Проверяем /ipv6/dhcp-server/print # === IPv6 Firewall: INPUT chain === /ipv6/firewall/filter # Принять established/related add chain=input action=accept connection-state=established,related \ comment="Accept established/related" # Отбросить invalid add chain=input action=drop connection-state=invalid \ comment="Drop invalid" # Разрешить ICMPv6 (ОБЯЗАТЕЛЬНО для работы IPv6!) add chain=input action=accept protocol=icmpv6 \ comment="Accept ICMPv6 (required for IPv6)" # Разрешить DHCPv6 Client (UDP 546) на WAN add chain=input action=accept protocol=udp dst-port=546 \ in-interface=ether1 \ comment="Accept DHCPv6 replies from ISP" # Разрешить из LAN add chain=input action=accept in-interface=bridge \ comment="Accept from LAN" # Отбросить всё остальное на input add chain=input action=drop \ comment="Drop all other input" # === IPv6 Firewall: FORWARD chain === # Принять established/related add chain=forward action=accept connection-state=established,related \ comment="Accept established/related forward" # Отбросить invalid add chain=forward action=drop connection-state=invalid \ comment="Drop invalid forward" # Разрешить ICMPv6 (необходимо для Path MTU Discovery, ping и т.д.) add chain=forward action=accept protocol=icmpv6 \ comment="Accept ICMPv6 forward" # Разрешить из LAN в WAN (любой трафик) add chain=forward action=accept \ in-interface=bridge out-interface=ether1 \ comment="Allow LAN to WAN" # Отбросить всё из WAN в LAN (ЭТО ЗАЩИТА!) add chain=forward action=drop in-interface=ether1 \ comment="Drop WAN to LAN (protect LAN hosts)" # Настраиваем DNS-сервер с IPv6 upstream /ip/dns/set allow-remote-requests=yes \ servers=2001:4860:4860::8888,2606:4700:4700::1111,8.8.8.8,1.1.1.1 # Проверяем разрешение AAAA-записей /ip/dns/cache/print where type=AAAA # === IPv6 Dual-Stack Configuration === # WAN: ether1, LAN: bridge # Предполагается: IPv4 уже настроен и работает # 1. DHCPv6 Client на WAN /ipv6/dhcp-client/add interface=ether1 request=address,prefix \ pool-name=ipv6-pool add-default-route=yes # 2. IPv6-адрес на LAN из делегированного пула /ipv6/address/add interface=bridge from-pool=ipv6-pool # 3. Router Advertisement (SLAAC + DNS) /ipv6/nd/set [find interface=bridge] \ managed-address-configuration=no \ other-configuration=yes \ advertise-dns=yes \ dns=2001:4860:4860::8888,2606:4700:4700::1111 # 4. IPv6 Firewall /ipv6/firewall/filter add chain=input action=accept connection-state=established,related add chain=input action=drop connection-state=invalid add chain=input action=accept protocol=icmpv6 add chain=input action=accept protocol=udp dst-port=546 in-interface=ether1 add chain=input action=accept in-interface=bridge add chain=input action=drop add chain=forward action=accept connection-state=established,related add chain=forward action=drop connection-state=invalid add chain=forward action=accept protocol=icmpv6 add chain=forward action=accept in-interface=bridge out-interface=ether1 add chain=forward action=drop in-interface=ether1 # 5. DNS с IPv6 /ip/dns/set allow-remote-requests=yes \ servers=2001:4860:4860::8888,2606:4700:4700::1111,8.8.8.8,1.1.1.1 # ULA-префикс: fd00:abcd:1234::/48 (замените на свой уникальный) # Для генерации уникального ULA: https://unique-local-ipv6.com # Адрес на LAN /ipv6/address/add interface=bridge address=fd00:abcd:1234:1::1/64 # Router Advertisement для ULA /ipv6/nd/set [find interface=bridge] \ managed-address-configuration=no \ other-configuration=no # Клиенты получат ULA-адрес через SLAAC # Маршрутизация ULA в интернет НЕ работает (только локальная связь) # NAT66: замена source-адреса IPv6 (аналог src-nat в IPv4) # Используется ТОЛЬКО если провайдер не даёт Prefix Delegation # и выделяет только один /128 или /64 адрес на WAN /ipv6/firewall/nat/add chain=srcnat action=masquerade \ out-interface=ether1 \ comment="NAT66 - only if ISP doesn't provide PD" # Состояние DHCPv6 Client /ipv6/dhcp-client/print detail # Должно быть status=bound, prefix — делегированный префикс # IPv6-адреса на интерфейсах /ipv6/address/print # На ether1: адрес от провайдера (GUA) # На bridge: адрес из делегированного пула (GUA) + link-local (fe80::) # IPv6-маршруты /ipv6/route/print # Должен быть default route (dst-address=::/0) через провайдера # DNS-разрешение IPv6 /resolve ipv6.google.com # Должен вернуть IPv6-адрес (2a00:1450:...) # Таблица Neighbor Discovery (аналог ARP) /ipv6/neighbor/print # Должны быть видны клиенты с GUA и link-local адресами # Проверка Router Advertisement /ipv6/nd/print detail # advertise-dns, managed-address-configuration, other-configuration # DHCPv6 Server bindings (если используется) /ipv6/dhcp-server/binding/print # Ping IPv6-адреса /ping 2001:4860:4860::8888 count=5 # Должен отвечать # Ping по имени хоста (должен разрешить AAAA) /ping ipv6.google.com count=5 # Traceroute IPv6 /tool/traceroute address=2001:4860:4860::8888 # Проверка с клиентского ПК (Windows) # ping -6 ipv6.google.com # Или зайдите на https://test-ipv6.com — должен показать 10/10 # Статистика firewall rules /ipv6/firewall/filter/print stats # Проверяем, что drop-правило на WAN→LAN считает пакеты # (значит, firewall работает и блокирует входящие) /ipv6/firewall/filter/print stats where chain=forward action=drop # Проверяем connection table IPv6 /ipv6/firewall/connection/print # Проверьте: есть ли правила в IPv6 firewall /ipv6/firewall/filter/print # Если пусто — СРОЧНО добавьте хотя бы минимальную защиту: /ipv6/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=bridge out-interface=ether1 add chain=forward action=drop in-interface=ether1 \ comment="CRITICAL: block WAN to LAN" # Неправильно: блокировать весь ICMPv6 /ipv6/firewall/filter/add chain=input action=drop protocol=icmpv6 # РЕЗУЛЬТАТ: IPv6 полностью перестанет работать через несколько минут # Правильно: разрешить ICMPv6 (или хотя бы необходимые типы) /ipv6/firewall/filter/add chain=input action=accept protocol=icmpv6 \ comment="Accept all ICMPv6" # Если хотите ограничить — разрешите минимум эти типы: /ipv6/firewall/filter add chain=input action=accept protocol=icmpv6 icmp-options=128:0 \ comment="Echo Request" add chain=input action=accept protocol=icmpv6 icmp-options=129:0 \ comment="Echo Reply" add chain=input action=accept protocol=icmpv6 icmp-options=133:0 \ comment="Router Solicitation" add chain=input action=accept protocol=icmpv6 icmp-options=134:0 \ comment="Router Advertisement" add chain=input action=accept protocol=icmpv6 icmp-options=135:0 \ comment="Neighbor Solicitation" add chain=input action=accept protocol=icmpv6 icmp-options=136:0 \ comment="Neighbor Advertisement" add chain=input action=accept protocol=icmpv6 icmp-options=2:0 \ comment="Packet Too Big (Path MTU)" # Неправильно: слишком частые RA /ipv6/nd/set [find interface=bridge] ra-interval=3s-10s # Правильно: стандартный интервал /ipv6/nd/set [find interface=bridge] ra-interval=3m20s-10m # Для быстрого подключения новых клиентов можно уменьшить минимум: /ipv6/nd/set [find interface=bridge] ra-interval=30s-3m # Вариант 1: DHCPv6 для серверов (фиксированные адреса) # Серверы получают стабильный DHCPv6-адрес, рабочие станции — SLAAC с Privacy # Вариант 2: использовать ULA для внутренних сервисов # ULA-адрес стабильный и не зависит от провайдера /ipv6/address/add interface=bridge address=fd00:abcd:1234:1::1/64 # На сервере (Linux): отключить Privacy Extensions для ULA # sudo sysctl -w net.ipv6.conf.eth0.use_tempaddr=0 # Проверяем статус DHCPv6 Client /ipv6/dhcp-client/print detail # status должен быть "bound" или "requesting" # Если status=stopped — проверяем интерфейс # Если status=requesting долгое время — провайдер не отвечает # Попробуйте запросить только prefix (без address) /ipv6/dhcp-client/set [find interface=ether1] request=prefix # Или только address (без prefix) /ipv6/dhcp-client/set [find interface=ether1] request=address # Некоторые провайдеры требуют определённый prefix-hint /ipv6/dhcp-client/set [find interface=ether1] \ prefix-hint=::/56 # Неправильно: NAT66 при наличии Prefix Delegation /ipv6/firewall/nat/add chain=srcnat action=masquerade out-interface=ether1 # РЕЗУЛЬТАТ: потерян end-to-end connectivity, усложнена диагностика # Правильно: без NAT66, защита через firewall # Убедитесь, что NAT66 не включён: /ipv6/firewall/nat/print # Должно быть пусто (или только специфические правила) # Если правило есть — удалите /ipv6/firewall/nat/remove [find chain=srcnat action=masquerade] # Проверяем, раздаётся ли DNS через RA /ipv6/nd/print detail # advertise-dns=yes, dns=<адреса> # Или через DHCPv6 /ipv6/dhcp-server/print detail # Настраиваем DNS в RA /ipv6/nd/set [find interface=bridge] \ advertise-dns=yes \ dns=2001:4860:4860::8888,2606:4700:4700::1111 # Все IPv6-адреса на роутере /ipv6/address/print # Таблица маршрутизации IPv6 /ipv6/route/print # Neighbor table (аналог ARP) /ipv6/neighbor/print # DHCPv6 Client статус /ipv6/dhcp-client/print detail # DHCPv6 Server bindings /ipv6/dhcp-server/binding/print # IPv6 Firewall connections /ipv6/firewall/connection/print # IPv6 Firewall статистика /ipv6/firewall/filter/print stats # Трафик на интерфейсе (включая IPv6) /interface/monitor-traffic ether1 interval=2 # DNS cache с AAAA-записями /ip/dns/cache/print where type=AAAA