mikrotik-wiki.ru
Главная
Загрузка...

IPv6 на MikroTik — настройка и практика

RouterOS 7.xRouting13 мин130 мар. 2026 г.
TelegramVK

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-адреса несколькими способами:

  1. DHCPv6 + Prefix Delegation (PD) — самый распространённый. Маршрутизатор получает IPv6-адрес на WAN-интерфейс и делегированный префикс (обычно /48 или /56) для раздачи в LAN.

  2. SLAAC — маршрутизатор получает IPv6-адрес из Router Advertisement провайдера. Prefix Delegation при этом может идти через DHCPv6.

  3. Статическая настройка — провайдер выделяет фиксированный префикс и шлюз. Встречается реже.

  4. 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 есть два механизма:

ПараметрSLAACDHCPv6
Кто генерирует адресКлиент сам (из префикса 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 будет работать надёжно и безопасно.

[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
# Вариант 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
Routing / IPv6 на MikroTik — настройка и практика