Быстрый старт network Обновлено 8 linux, windows, macos, android, ios, router

WireGuard IPv6: когда добавлять адреса и как не потерять IPv4

Правильная настройка IPv6 в WireGuard требует внимания к деталям: от выбора подсети до маршрутов и DNS. Разбираем сценарий, когда IPv6 необходим, и как избежать типичных ошибок.

ipv6dual-stackмаршрутизацияdnsконфигурация
Содержание
КороткоWireGuard поддерживает IPv6 наравне с IPv4. Добавляйте IPv6-адреса в конфигурацию, если ваш провайдер поддерживает IPv6, но не забывайте про IPv4-маршруты и DNS. Используйте dual stack, чтобы не потерять связь с IPv4-ресурсами. Проверяйте маршруты и настройки DNS после изменений.

WireGuard изначально проектировался как современный VPN-протокол, который должен работать и с IPv4, и с IPv6. Однако на практике многие пользователи сталкиваются с вопросом: когда и как добавлять IPv6-адреса в конфигурацию, и как при этом не потерять доступ к IPv4-ресурсам. В этой статье мы разберем типичный сценарий, когда IPv6 необходим, и покажем, как настроить dual stack без ошибок.

Если вы используете WireGuard для доступа к домашней сети или для обхода блокировок, скорее всего, ваш провайдер уже выдал вам IPv6-адрес. Но просто добавить IPv6 в конфигурацию недостаточно: нужно правильно настроить маршруты, DNS и убедиться, что IPv4-трафик продолжает работать. Мы рассмотрим все шаги и предостережем от распространенных ошибок.

Когда добавлять IPv6-адреса в WireGuard

Добавлять IPv6 в WireGuard стоит в следующих случаях:

  • Ваш интернет-провайдер поддерживает IPv6, и вы хотите использовать его для доступа к ресурсам, доступным только по IPv6.
  • Вы хотите обеспечить связь между устройствами в вашей сети, которые используют IPv6-адреса (например, в домашней IoT-сети).
  • Вы хотите использовать IPv6 для обхода блокировок, так как некоторые сайты могут быть доступны только по IPv6.
  • Вы хотите использовать преимущества IPv6, такие как отсутствие NAT и более простую маршрутизацию.

Однако не забывайте, что большинство сайтов и сервисов по-прежнему работают по IPv4. Поэтому важно настроить dual stack — одновременную работу обоих протоколов, чтобы не потерять доступ к IPv4-ресурсам.

Пошаговый сценарий настройки dual stack

Рассмотрим конкретный пример: у вас есть сервер WireGuard с IPv4-адресом 203.0.113.10 и IPv6-адресом 2001:db8::10. Клиент имеет IPv4-адрес 192.168.1.100 и IPv6-адрес fd00::100. Нам нужно настроить туннель так, чтобы клиент мог обращаться к ресурсам и по IPv4, и по IPv6.

Шаг 1: Настройка сервера

В конфигурации сервера (/etc/wireguard/wg0.conf) добавьте оба адреса в секцию [Interface]:

[Interface]
Address = 10.0.0.1/24, fd00::1/64
ListenPort = 51820
PrivateKey = [приватный ключ сервера]

Затем для каждого клиента добавьте в секцию [Peer] разрешенные IP-адреса, включая IPv4 и IPv6 подсети, которые клиент должен маршрутизировать:

[Peer]
PublicKey = [публичный ключ клиента]
AllowedIPs = 10.0.0.2/32, fd00::2/128

Если вы хотите, чтобы клиент мог ходить в интернет через VPN, добавьте маршруты по умолчанию:

AllowedIPs = 0.0.0.0/0, ::/0

Но будьте осторожны: в этом случае весь трафик пойдет через VPN, и если на сервере нет IPv6-связности, клиент потеряет IPv6-доступ. Лучше ограничить маршруты только нужными подсетями.

Шаг 2: Настройка клиента

В конфигурации клиента укажите свои адреса и маршруты:

[Interface]
Address = 10.0.0.2/24, fd00::2/64
PrivateKey = [приватный ключ клиента]
DNS = 10.0.0.1, fd00::1

В секции [Peer] укажите адреса сервера (и IPv4, и IPv6, если сервер доступен по обоим):

[Peer]
PublicKey = [публичный ключ сервера]
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.0.0.0/24, fd00::/64

Если вы хотите использовать IPv6 для доступа к интернету, добавьте ::/0 в AllowedIPs, но только если сервер имеет IPv6-связность.

Шаг 3: Настройка DNS

DNS — важный аспект. Если вы используете DNS-серверы, которые поддерживают IPv6, укажите их в конфигурации. Например:

DNS = 2001:4860:4860::8888, 8.8.8.8

Это позволит клиенту резолвить и IPv4, и IPv6 адреса. Если ваш VPN-сервер предоставляет собственный DNS, убедитесь, что он отвечает по обоим протоколам.

Шаг 4: Проверка маршрутов

После применения конфигурации проверьте таблицу маршрутизации на клиенте:

ip route show
ip -6 route show

Вы должны увидеть маршруты через туннель для IPv4 и IPv6 подсетей. Если что-то не так, проверьте, что AllowedIPs заданы корректно.

Самостоятельная проверка результата

Чтобы убедиться, что IPv6 работает, выполните следующие команды на клиенте:

  1. Проверьте связь с сервером по IPv6: ping6 2001:db8::1
  2. Проверьте связь с внешним IPv6-ресурсом, например: ping6 google.com
  3. Проверьте, что IPv4-связь не потеряна: ping 8.8.8.8
  4. Проверьте DNS: nslookup google.com — должен вернуть и IPv4, и IPv6 адреса.

Если ping6 не проходит, проверьте маршруты и убедитесь, что на сервере включен IPv6 forwarding. Для этого выполните на сервере:

sysctl net.ipv6.conf.all.forwarding=1

Чтобы сделать это постоянным, добавьте в /etc/sysctl.conf:

net.ipv6.conf.all.forwarding=1

Ограничения и безопасность

При использовании IPv6 в WireGuard есть несколько ограничений и моментов безопасности:

  • Потеря IPv4-связности: если вы настроите маршрут по умолчанию ::/0 на сервер, у которого нет IPv6-связности, клиент не сможет достучаться до IPv6-ресурсов. Поэтому всегда проверяйте, что сервер имеет рабочий IPv6.
  • Утечки DNS: если DNS-запросы идут через IPv4, а туннель использует IPv6, может возникнуть утечка. Убедитесь, что DNS-серверы доступны по обоим протоколам.
  • Firewall: не забывайте настраивать правила межсетевого экрана для IPv6. Многие забывают, что iptables по умолчанию работает только с IPv4, а для IPv6 нужен ip6tables.
  • Приватные подсети: используйте уникальные локальные адреса (ULA) из диапазона fd00::/8 для внутренней сети, чтобы избежать конфликтов.
  • Endpoint: если сервер доступен по динамическому IPv6, рассмотрите использование DDNS для обновления Endpoint.

Также помните, что некоторые провайдеры используют CGNAT для IPv4, что может создавать проблемы с входящими подключениями. В этом случае IPv6 может стать спасением, но требует правильной настройки. Подробнее о CGNAT читайте в нашей статье.

Если у вас возникли проблемы с подключением, проверьте, не блокирует ли ваш провайдер протокол WireGuard. В этом случае может помочь использование нестандартного порта. А если клиент не пингуется, читайте статью о диагностике.

Не забывайте о безопасности: никогда не используйте публичные или сгенерированные на непроверенных сайтах конфигурации. Подробнее о рисках читайте в статье о бесплатных конфигах.

Заключение

Настройка IPv6 в WireGuard — это несложный процесс, если понимать основы. Главное — правильно выбрать подсети, настроить маршруты и DNS. Используйте dual stack, чтобы не потерять IPv4-связность. Проверяйте результат и не забывайте о безопасности. Следуя этому руководству, вы сможете настроить WireGuard с IPv6 без проблем.

Мини-чеклист

  • Проверьте, поддерживает ли ваш провайдер IPv6 и есть ли у вас IPv6-адрес.
  • Добавьте IPv6-адреса в секцию Interface на сервере и клиенте.
  • Укажите корректные AllowedIPs для IPv4 и IPv6 подсетей.
  • Настройте DNS-серверы, поддерживающие IPv6, и проверьте резолвинг.
  • Проверьте маршруты и связность после изменений (ping, ping6).

Частые ошибки

  • Забывают добавить IPv6-адрес в Address на клиенте или сервере.
  • Указывают маршрут по умолчанию ::/0 без проверки IPv6-связности сервера.
  • Не настраивают ip6tables, оставляя IPv6-трафик незащищенным.
  • Используют глобальные IPv6-адреса вместо ULA для внутренней сети.
  • Не проверяют DNS на предмет утечек при использовании dual stack.

FAQ

Можно ли использовать WireGuard только с IPv6, без IPv4?

Да, можно, если у вас есть IPv6-связность на всех устройствах. Однако учтите, что большинство сайтов и сервисов до сих пор работают по IPv4, поэтому для полного доступа к интернету вам все равно понадобится IPv4 или NAT64.

Как добавить IPv6-адрес в существующую конфигурацию WireGuard?

Просто добавьте IPv6-адрес в поле Address через запятую, например: Address = 10.0.0.2/24, fd00::2/64. Также не забудьте добавить соответствующие маршруты в AllowedIPs.

Что делать, если после настройки IPv6 пропал доступ к IPv4-ресурсам?

Проверьте маршруты: убедитесь, что у вас остались маршруты для IPv4 (например, 0.0.0.0/0). Если вы использовали AllowedIPs с ::/0, но не добавили 0.0.0.0/0, то IPv4-трафик не пойдет через туннель.

Нужно ли настраивать DNS для IPv6 отдельно?

Да, желательно указать DNS-серверы, которые поддерживают IPv6, чтобы клиент мог резолвить IPv6-адреса. Это можно сделать в поле DNS конфигурации клиента.

Хотите перейти сразу к рабочему доступу?

Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.

Получить доступ

Дальше по теме

Связанные статьи