6. IPv6 через WireGuard (Route64) Так как далеко не все провайдеры предоставляют полноценный IPv6, одним из самых удобных вариантов остаётся получение IPv6 через туннель.
В данной конфигурации используется WireGuard-туннель до Route64.
Преимущества такого подхода:
- полноценный глобальный IPv6
- простая настройка
- минимальный overhead
- хорошая стабильность
- WireGuard значительно проще классических 6in4/SIT туннелей
Создание WireGuard-интерфейса- Код: выделить все
/interface wireguard
add comment="route64 IPv6 over WG" listen-port=13830 mtu=1412 name=wg-ipv6
Описание:
- listen-port — UDP-порт WireGuard
- mtu=1412 — уменьшенный MTU для избежания фрагментации
- name=wg-ipv6 — отдельный интерфейс под IPv6
Настройка peer- Код: выделить все
/interface wireguard peers
add allowed-address=::/1,8000::/1 client-allowed-address=::/0 comment="to server route64" \
endpoint-address=118.91.187.67 endpoint-port=20041 interface=wg-ipv6 persistent-keepalive=15s public-key="3e+..."
Что здесь важно:
- allowed-address=::/1,8000::/1 — split default route для IPv6
- endpoint-address — адрес WireGuard сервера
- persistent-keepalive=15s — поддержание NAT-сессии
- client-allowed-address=::/0 — разрешение полного IPv6-маршрута
Почему используется ::/1 и 8000::/1В RouterOS такой способ часто применяется вместо прямого `::/0`.
Причины:
- избежание конфликтов маршрутизации
- более предсказуемая работа policy routing
- корректная установка default route через WG
Фактически:
- ::/1 — первая половина IPv6 пространства
- 8000::/1 — вторая половина
Вместе они эквивалентны `::/0`.
IPv6-адрес на WireGuard интерфейсе- Код: выделить все
/ipv6 address
add address=2a11:6c7:f04:189::2 advertise=no comment="My address tunnel Route64" interface=wg-ipv6
Параметр `advertise=no` отключает RA-анонсы на туннельном интерфейсе.
Маршрут по умолчанию- Код: выделить все
/ipv6 route
add comment="To Route64" disabled=no distance=1 dst-address=::/0 gateway=wg-ipv6
После этого весь IPv6-трафик начинает уходить через WireGuard.
IPv6 в LANПрефикс локальной сети уже был назначен bridge-интерфейсу на этапе IP-адресации. После появления default route через WireGuard клиенты автоматически получают полноценную IPv6-связность.
Теперь клиенты LAN:
- получают глобальные IPv6-адреса
- могут работать без NAT
- имеют полноценную IPv6-связность
Router AdvertisementНастройка ND:
- Код: выделить все
/ipv6 nd
set [ find default=yes ] advertise-dns=yes interface=bridge1 mtu=1412
Что это даёт:
- автоматическая раздача IPv6 клиентам
- передача DNS через RA
- единый MTU для всей IPv6 сети
Почему MTU=1412 важенWireGuard добавляет служебные заголовки.
Если оставить стандартный MTU 1500:
- появляется фрагментация
- часть сайтов может открываться нестабильно
- возможны проблемы с PMTU
Поэтому MTU уменьшается:
- на WG интерфейсе
- в Router Advertisement
- для всей IPv6 LAN
РезюмеНа данном этапе:
- маршрутизатор получил глобальный IPv6
- IPv6 работает через WireGuard
- LAN получает IPv6 автоматически
- клиенты имеют полноценный dual-stack доступ
WireGuard и IPv6 через Route64В данной конфигурации IPv6-подключение организовано через туннель WireGuard от Route64.
Подобная схема особенно удобна:
- если провайдер не выдаёт IPv6
- если native IPv6 нестабилен
- если требуется быстрое и предсказуемое подключение
- для домашних лабораторий
В RouterOS WireGuard работает стабильно и значительно проще в сопровождении, чем:
- 6to4
- GRE
- IPIP
- HE tunnelbroker
Создание WireGuard-интерфейсаСоздаём интерфейс:
- Код: выделить все
/interface wireguard
add comment="route64 IPv6 over WG" \
listen-port=13830 \
mtu=1412 \
name=wg-ipv6
Здесь:
- listen-port — UDP-порт WireGuard
- mtu=1412 — уменьшенный MTU для избежания фрагментации
- name=wg-ipv6 — отдельный интерфейс под IPv6-трафик
Настройка peerДобавляем peer провайдера:
- Код: выделить все
/interface wireguard peers
add allowed-address=::/1,8000::/1 \
client-allowed-address=::/0 comment="to server route64" \
endpoint-address=118.91.187.67 endpoint-port=20041 \
interface=wg-ipv6 name=peer2 \
persistent-keepalive=15s public-key="3e+....="
Почему используются ::/1 и 8000::/1Это распространённый приём для IPv6 через WireGuard.
Вместо:
- Код: выделить все
::/0
используются две половины IPv6-пространства:
- Код: выделить все
::/1
8000::/1
Это позволяет:
- корректно обрабатывать default route
- избежать некоторых конфликтов маршрутизации
- обойти ограничения отдельных клиентов и реализаций WG
Persistent Keepalive- Код: выделить все
persistent-keepalive=15s
Нужен для:
- NAT
- CGNAT
- нестабильных провайдеров
- удержания туннеля активным
Особенно полезно:
- в домашних сетях
- за NAT
- при мобильных подключениях
IPv6-адрес на WireGuard-интерфейсеНазначаем адрес туннелю:
- Код: выделить все
/ipv6 address
add address=2a11:6c7:f04:189::2 \
advertise=no \
comment="My address tunnel Route64" \
interface=wg-ipv6
Параметр:
- Код: выделить все
advertise=no
важен потому, что:
- туннельный интерфейс не должен участвовать в RA
- префикс объявляется только в LAN
- WireGuard здесь является transport-интерфейсом
Маршрут IPv6 по умолчаниюДобавляем default route:
- Код: выделить все
/ipv6 route
add comment="To Route64" \
disabled=no distance=1 \
dst-address=::/0 gateway=wg-ipv6 \
routing-table=main \
scope=30 target-scope=10
Теперь весь IPv6-трафик отправляется через WireGuard-туннель.
MTU и MSSДля IPv6 через WireGuard проблема MTU особенно критична.
Без корректировки MSS возможны:
- подвисания HTTPS
- обрывы крупных TCP-сессий
- частично открывающиеся сайты
- нестабильная работа QUIC
В конфигурации используется mangle:
- Код: выделить все
/ipv6 firewall mangle
add action=change-mss \
chain=forward comment="force MSS" \
new-mss=1320 out-interface=wg-ipv6 \
protocol=tcp tcp-flags=syn
Это принудительно уменьшает MSS TCP-соединений.
Подобная практика для IPv6-over-WireGuard фактически стала стандартной.
Router Advertisement (RA)Для LAN включаем IPv6 ND:
- Код: выделить все
/ipv6 nd
set [ find default=yes ] advertise-dns=yes interface=bridge1 mtu=1412
Здесь:
- клиенты автоматически получают IPv6-префикс
- раздаётся DNS через RA
- передаётся корректный MTU
Последний пункт крайне важен:
если MTU не объявить через RA — часть клиентов продолжит использовать 1500 и получит проблемы с фрагментацией.
Старый HE tunnelbroker (отключённый)В конфигурации также остался старый HE-туннель:
- Код: выделить все
/interface 6to4
add comment="HE IPv6 Tunnel" disabled=yes local-address=213.141.132.190 mtu=1280 name=sit1 remote-address=216.66.87.102
и связанные маршруты/адреса.
Он сохранён:
- как резерв
- для сравнения
- как пример альтернативного IPv6-подключения
Но основная рабочая схема сейчас построена именно на WireGuard.
РезюмеНа данном этапе:
- поднят WireGuard-туннель
- IPv6 получен через Route64
- LAN получает IPv6 через RA
- настроен IPv6 default route
- исправлены проблемы MTU/MSS
- HE tunnelbroker выведен из эксплуатации