Коротко: Обновите поле Endpoint в клиентском конфиге WireGuard, указав актуальный внешний IP сервера. Если сервер находится за NAT нового роутера — настройте проброс UDP-порта 51820. При динамическом IP обязательно включите PersistentKeepalive = 25, а при блокировке портов провайдером — попробуйте порт 443 или используйте DynDNS.
После смены провайдера VPN-туннель WireGuard часто перестаёт работать, хотя настройки никто не трогал. Ключ проблемы почти всегда кроется в изменении сетевых параметров на стороне клиента или сервера. Разберём по шагам, как быстро вернуть соединение в строй.
Что понадобится
- Доступ к конфигурационному файлу WireGuard на клиентском устройстве
- Знание текущего внешнего IP-адреса сервера или способ его получить (DynDNS, curl ifconfig.me)
- Доступ к настройкам роутера (если сервер находится за NAT нового провайдера)
- Права администратора на изменение сетевых настроек
Почему WireGuard не подключается после смены провайдера
Смена интернет-провайдера почти всегда означает получение нового публичного IP-адреса, а часто — и установку другого роутера. WireGuard критически зависит от того, что указано в директиве Endpoint на обоих концах туннеля. Если адрес изменился, а в конфиге остался старый, пакеты просто не доходят.
Вторая распространённая причина — новый роутер или сетевое окружение не пропускают UDP-трафик на порт 51820 к серверу. Маршрутизаторы по умолчанию блокируют входящие соединения, пока явно не настроен проброс. Кроме того, некоторые провайдеры используют Carrier-Grade NAT (CGNAT), при котором у абонента нет выделенного публичного IP, и входящие соединения извне невозможны.
Реже проблема кроется в файрволе на самом сервере или клиенте: после смены адаптера сетевой профиль мог смениться на «общедоступный», что меняет правила брандмауэра.
Шаг 1: Обновление Endpoint в клиентской конфигурации
Самая частая причина — изменился внешний IP того узла, который выступает сервером (то есть имеет публичный адрес). Клиентский профиль указывает Endpoint = старый_адрес:51820, и после смены провайдера сервер недоступен по этому адресу.
- Узнайте новый внешний IP сервера, выполнив на нём команду curl ifconfig.me или посмотрев в веб-интерфейсе роутера.
- Если сервер использует динамический IP и настроен DynDNS, обновлять Endpoint вручную не потребуется — достаточно, чтобы доменное имя разрешалось в актуальный адрес.
- Откройте конфигурационный файл WireGuard на клиенте (обычно /etc/wireguard/wg0.conf или приложение с графическим интерфейсом).
- Найдите секцию [Peer] и строку Endpoint.
- Замените старый IP-адрес на новый актуальный, например: Endpoint = 203.0.113.5:51820.
- Сохраните изменения и перезапустите интерфейс командой wg-quick down wg0 и затем wg-quick up wg0 (в графических клиентах — кнопка «Подключить»).
Важно: Если вы используете доменное имя в Endpoint, а не IP, этот шаг пропускается, но убедитесь, что DNS-запись обновлена.
Шаг 2: Настройка проброса портов на новом роутере
Если сервер WireGuard находится за роутером с NAT, после смены провайдера вы, скорее всего, получили новый маршрутизатор или изменились его настройки. Проброс порта 51820 (UDP) с внешнего интерфейса на внутренний IP сервера необходимо настраивать заново.
В веб-интерфейсе роутера ищите раздел «Переадресация портов», «Port Forwarding» или «Виртуальный сервер». Создайте правило: внешний порт — 51820, внутренний порт — 51820, протокол — UDP, внутренний IP — адрес вашего WireGuard-сервера в локальной сети (например, 192.168.1.100).
- Войдите в настройки роутера нового провайдера.
- Найдите раздел проброса портов (Port Forwarding).
- Добавьте новое правило: сервис — WireGuard или произвольное имя, протокол UDP, внешний порт 51820, внутренний порт 51820, внутренний IP-адрес сервера WireGuard.
- Сохраните правило и перезагрузите роутер, если требуется.
- На сервере временно отключите локальный брандмауэр для теста или добавьте разрешающее правило для UDP 51820.
Важно: Если провайдер выдал адрес из диапазона CGNAT (100.64.0.0/10), проброс портов работать не будет — нужен публичный IP или VPS с пробросом трафика.
Шаг 3: Включение PersistentKeepalive для динамических IP
При частой смене внешнего адреса (динамический IP) без keepalive туннель «зависает»: сервер всё ещё считает пир доступным по старому адресу. Постоянная отправка keepalive-пакетов вынуждает обновить информацию о маршруте.
В секции [Peer] клиентского конфига добавьте (или раскомментируйте) строку PersistentKeepalive = 25. Это заставит отправлять пакет каждые 25 секунд. Значение можно подобрать индивидуально, но 25 секунд — рабочий компромисс.
- Рекомендуемое значение для большинства домашних подключений — 25 секунд.
- Keepalive генерирует небольшой трафик, но критически важен, если один из пиров находится за NAT с меняющимся IP.
- Откройте конфиг того пира, который находится за NAT с динамическим IP (обычно клиент).
- В секции [Peer] добавьте строку PersistentKeepalive = 25.
- Сохраните и перезапустите интерфейс WireGuard.
Важно: Keepalive нужен на той стороне, которая инициирует соединение и может менять адрес. На серверной стороне с постоянным IP он, как правило, не нужен.
Шаг 4: Обход блокировки UDP-портов провайдером
Некоторые интернет-провайдеры намеренно блокируют нестандартные UDP-порты, чтобы препятствовать VPN. WireGuard по умолчанию использует порт 51820, который легко идентифицируется. Если после обновления Endpoint и настройки проброса handshake не устанавливается, попробуйте сменить порт.
Смените порт в конфигурации сервера и клиента: в секции [Interface] сервера укажите ListenPort = 443, а в клиентском Endpoint — адрес_сервера:443. Порт 443 (обычно HTTPS) редко блокируется, и трафик WireGuard маскируется под обычный веб-серфинг.
- На сервере в конфигурационном файле измените ListenPort с 51820 на 443.
- В клиентском конфиге замените порт в Endpoint на 443 (например, Endpoint = 203.0.113.5:443).
- Перезапустите интерфейсы на обеих сторонах.
- Убедитесь, что проброс порта на роутере теперь настроен на порт 443.
Важно: Смена порта может не помочь, если провайдер использует глубокий анализ пакетов (DPI), однако в бытовых сценариях это редкость.
Проверка handshake и завершающая диагностика
После внесения изменений проверьте, что туннель действительно устанавливается. Выполните команду wg show на сервере и клиенте. В выводе ищите строку «latest handshake» — она должна показывать время последнего успешного рукопожатия, а не быть пустой.
Также полезно запустить пинг внутреннего IP удалённой стороны, например ping 10.7.0.2, если ваша схема адресации использует подобные адреса. Если пинг проходит — туннель работает. Если нет — проверьте, что разрешённые IP-адреса (AllowedIPs) включают адрес удалённой сети и не пересекаются с локальными подсетями, вызывая конфликт маршрутизации.
- Команда wg show отображает last handshake и объём переданных данных.
- Пинг до внутреннего адреса второго пира подтверждает обмен трафиком.
- На сервере выполните wg show.
- Убедитесь, что для нужного пира есть запись «latest handshake: X seconds ago».
- На клиенте выполните пинг внутреннего IP сервера: ping 10.7.0.1.
- Если пинга нет, проверьте файрволы на обоих устройствах и корректность AllowedIPs.
Важно: Отсутствие handshake при верном Endpoint и пробросе портов часто говорит о блокировке на уровне провайдера или о том, что публичный IP сервера на самом деле не принадлежит вам (CGNAT).
Проверка результата
- Сверьте актуальный внешний IP сервера с тем, что указан в Endpoint клиентского конфига.
- Проверьте состояние handshake командой wg show на обеих сторонах.
- Убедитесь, что на роутере нового провайдера настроен проброс UDP-порта 51820 (или того, что используется) к внутреннему IP WireGuard-сервера.
- Временно отключите брандмауэр на сервере и клиенте для проверки, не блокирует ли он WireGuard.
Частые ошибки и нюансы
- Забывают обновить Endpoint только на одной стороне, в то время как адрес изменился на обеих.
- Пробрасывают порт TCP вместо UDP — WireGuard работает исключительно по UDP.
- В качестве внутреннего IP при пробросе указывают адрес клиента вместо адреса сервера.
- Не учитывают, что провайдер использует CGNAT, и пытаются настроить проброс, который заведомо не сработает.
Проверить проблему WireGuard
Введите ошибку, симптом или часть конфигурации: handshake, AllowedIPs, DNS, MTU, Endpoint.
FAQ
Может ли новый провайдер намеренно блокировать WireGuard?
Да, некоторые провайдеры блокируют протоколы VPN и нестандартные UDP-порты. Попробуйте сменить порт на 443 (HTTPS) или 53 (DNS), которые редко фильтруются. Если используется блокировка по сигнатурам трафика, простой смены порта может быть недостаточно.
Нужно ли генерировать новые ключи после смены провайдера?
Нет, криптографические ключи WireGuard не зависят от сетевого адреса. Достаточно обновить Endpoint и настроить проброс. Повторная генерация ключей потребуется, только если вы подозреваете их компрометацию.
Как быстро узнать новый внешний IP моего сервера?
Зайдите на сервер через локальную консоль или SSH и выполните curl ifconfig.me или curl icanhazip.com. Можно также посмотреть в веб-интерфейсе роутера на странице статуса WAN-подключения.
Почему после обновления Endpoint рукопожатия всё равно нет?
Скорее всего, не настроен проброс порта на роутере или активный брандмауэр блокирует UDP-пакеты. Проверьте, что правило перенаправляет трафик на правильный внутренний IP сервера, и временно отключите локальный брандмауэр для теста.
Можно ли использовать доменное имя вместо IP в Endpoint?
Да, это рекомендуемый подход при динамическом IP. Настройте Dynamic DNS для сервера и укажите домен в Endpoint: Endpoint = myvpn.example.com:51820. При смене адреса достаточно обновить DNS-запись, перезагружать WireGuard не потребуется.
Что такое PersistentKeepalive и когда его ставить?
Эта опция заставляет пир отправлять пустые пакеты для поддержания соединения и обновления информации о маршруте, если один из узлов находится за NAT с меняющимся IP. Рекомендуется ставить на стороне, которая инициирует соединение, значение 25 секунд.
Итог
В подавляющем большинстве случаев отказ WireGuard после смены провайдера связан с изменившимся сетевым адресом или настройками трансляции. Последовательная проверка Endpoint, проброса портов и включение keepalive позволяют восстановить VPN-соединение за несколько минут. Если же вы столкнулись с CGNAT или жёсткой блокировкой UDP, рассмотрите аренду VPS с публичным IP в качестве транзитного узла WireGuard.