WireGuard Interface Address: как выбрать подсеть для сервера
Правильный выбор подсети для WireGuard-интерфейса — залог стабильной работы VPN. Разбираем, как избежать конфликтов с локальной сетью и назначить адреса для сервера и клиентов.
Содержание
При настройке WireGuard-сервера важно правильно выбрать адрес интерфейса. От него зависит маршрутизация, отсутствие конфликтов с локальной сетью и простота дальнейшего расширения. В этой статье разберём, как выбрать подсеть для WireGuard-интерфейса, и на что обратить внимание до внесения изменений в конфигурацию.
Роль address в конфигурации WireGuard
В конфигурации WireGuard у каждого интерфейса есть параметр Address. Он задаёт внутренний IP-адрес, который получает этот интерфейс в VPN-сети. Это адрес уровня L3, и он используется для обмена пакетами между пирами. В отличие от реальных IP-адресов, которые могут меняться, адреса WireGuard-интерфейсов должны быть стабильными и уникальными внутри VPN.
Как выбрать подсеть для WireGuard-сервера
Основное правило — избегать пересечения с диапазонами, которые уже используются в вашей локальной сети или на маршрутизаторе. Для приватных сетей обычно применяются диапазоны из RFC 1918:
- 10.0.0.0/8 (10.0.0.0 – 10.255.255.255)
- 172.16.0.0/12 (172.16.0.0 – 172.31.255.255)
- 192.168.0.0/16 (192.168.0.0 – 192.168.255.255)
Если ваша локальная сеть использует одну из этих подсетей, выберите другую. Например, при домашнем роутере с адресом 192.168.1.1/24 для WireGuard можно взять 10.44.0.0/24. Также следует учитывать, что сервер и клиенты должны быть в одной подсети или использовать /32 для адресов клиентов при маршрутизации.
Пошаговый выбор и настройка
- Определите, какие подсети уже заняты в вашей инфраструктуре. Проверьте адресацию на роутере, внутренних серверах и в облачных VPC. Для этого можно выполнить
ip routeили просмотреть конфигурацию DHCP. - Выберите свободную приватную подсеть. Рекомендуется использовать /24 для небольших установок — это даёт 254 адреса, чего достаточно для большинства сценариев. Если планируете много клиентов, возьмите /22 или /16, но помните о возможных конфликтах при подключении к другим сетям.
- Назначьте серверу адрес из выбранной подсети. Например, для сети 10.88.88.0/24 серверу обычно задают 10.88.88.1/24.
- Каждому клиенту назначьте уникальный статический адрес внутри этой подсети, например 10.88.88.2/32, 10.88.88.3/32 и так далее.
В конфигурации WireGuard на сервере в секции [Interface] указывается:
[Interface]
Address = 10.88.88.1/24
На клиенте:
[Interface]
Address = 10.88.88.2/32
Пример настройки сервера и клиента
Рассмотрим простой сценарий. Допустим, вы выбрали подсеть 10.11.12.0/24. Сервер получает адрес 10.11.12.1/24, клиент — 10.11.12.2/32.
Серверная часть /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = (приватный ключ сервера)
Address = 10.11.12.1/24
ListenPort = 51820
[Peer]
PublicKey = (публичный ключ клиента)
AllowedIPs = 10.11.12.2/32
Клиентский конфиг client.conf:
[Interface]
PrivateKey = (приватный ключ клиента)
Address = 10.11.12.2/32
[Peer]
PublicKey = (публичный ключ сервера)
Endpoint = ваш-сервер.ru:51820
AllowedIPs = 0.0.0.0/0, ::/0
Обратите внимание, что для клиента Address указывается с префиксом /32, чтобы маршрутизировать только его собственный адрес. Если вы хотите, чтобы весь трафик шёл через VPN, в AllowedIPs у клиента можно указать 0.0.0.0/0, а у сервера — только адреса клиентов.
IPv6 и выбор подсети
Если вы используете IPv6, выберите уникальный локальный адрес (fc00::/7) или глобальный префикс, выделенный вашим провайдером. Для WireGuard часто используют fd00::/64. Убедитесь, что адрес сервера и клиентов не пересекается с другими вашими IPv6-сетями. В конфигурации IPv6-адреса указываются так же, как и IPv4, например Address = fd00::1/64.
Как проверить корректность выбора
После настройки проверьте, что интерфейс поднялся и получил нужный адрес: ip addr show wg0. Затем с сервера выполните ping 10.11.12.2, а с клиента — ping 10.11.12.1. Если пинг проходит, значит адресация выбрана верно. Также убедитесь, что нет конфликтов с локальным маршрутом: если в локальной сети есть устройство с таким же адресом, трафик будет уходить не туда.
Мини-чеклист
- Проверьте, что выбранная подсеть не пересекается с локальной сетью и используемыми VPN.
- Назначьте серверу адрес с префиксом /24 или /64 (в зависимости от типа сети).
- Для клиентов используйте адреса с /32 или /128.
- Убедитесь, что параметр AllowedIPs на сервере включает только адреса клиентов.
Частые ошибки
- Использование одной и той же подсети в локальной сети и WireGuard.
- Указание /24 в Address на клиенте (это приводит к созданию маршрута к целой подсети, что нежелательно).
- Забыть про IPv6, если он используется.
- Выбор слишком маленькой подсети для большого числа клиентов (например, /30 для более чем 2 клиентов).
Источники и документация
FAQ
Можно ли использовать публичный IP-адрес в качестве адреса интерфейса WireGuard?
Не рекомендуется, так как это создаст конфликт с реальным публичным адресом. Для VPN используйте приватные диапазоны из RFC 1918.
Почему у клиента Address /32, а у сервера /24?
/24 на сервере автоматически создаёт маршрут ко всей подсети, что удобно. /32 у клиента указывает только на сам клиент, оставляя маршрутизацию остального трафика через AllowedIPs.
Что делать, если подсеть WireGuard пересекается с сетью офиса?
Выберите другой диапазон, например, если в офисе 10.0.0.0/8, возьмите 192.168.44.0/24. Также можно изменить адрес сети на одной из сторон.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ