Почему WireGuard подключается, но интернет пропадает
Ситуация, когда туннель WireGuard устанавливается, handshake проходит, но интернет на клиенте не работает, знакома многим. Это одна из самых частых проблем при самостоятельной настройке VPN. Причины могут быть разными: от банально забытого форвардинга на сервере до блокировок со стороны провайдера. В этой статье мы разберем все основные сценарии и дадим пошаговые инструкции по их устранению.
Важно понимать, что WireGuard — это протокол, который создает зашифрованный туннель между вашим устройством и сервером. Сам по себе он не гарантирует доступ в интернет. Для этого сервер должен быть настроен как шлюз: уметь принимать трафик из туннеля, перенаправлять его во внешнюю сеть и возвращать ответы обратно. Если хотя бы один из этих этапов нарушен, интернет через VPN работать не будет.
В России добавляется еще один фактор — блокировки со стороны ТСПУ (технических средств противодействия угрозам). Чистый WireGuard может детектироваться и блокироваться на уровне провайдера, особенно на мобильных сетях. Поэтому решение проблемы часто требует не только технической настройки, но и использования специальных модификаций протокола.
Первичная диагностика: определяем точку обрыва
Прежде чем менять что-либо в конфигурации, нужно точно определить, на каком участке теряется связь. Это сэкономит время и избавит от хаотичных действий. Подключитесь к VPN и выполните три последовательные проверки с клиента:
- Пинг внутреннего адреса сервера (например,
ping -c2 10.0.0.1). Если он не проходит, проблема в самом туннеле или в настройках AllowedIPs. - Пинг внешнего IP-адреса (например,
ping -c2 8.8.8.8). Если внутренний адрес пингуется, а внешний нет, значит трафик доходит до сервера, но не выходит наружу. Это указывает на проблемы с форвардингом или NAT. - Пинг доменного имени (например,
ping -c2 google.com). Если IP пингуется, а имя не резолвится, проблема в DNS.
Эти три точки — туннель, выход в интернет и DNS — являются основными ветками диагностики. Определив, на какой из них происходит обрыв, вы сразу будете знать, куда копать. Например, если не пингуется только внешний IP, нет смысла менять DNS-настройки — нужно смотреть в сторону сервера.
Также полезно проверить, какой внешний IP-адрес видит клиент при подключении. Если он совпадает с адресом вашего домашнего провайдера, значит трафик идет в обход туннеля. Это верный признак неправильных AllowedIPs.
Причина 1: не включен IP-форвардинг на сервере
IP-форвардинг — это функция ядра операционной системы, которая позволяет серверу пересылать пакеты, пришедшие из одного интерфейса, в другой. Без него сервер просто отбрасывает трафик клиентов, и они не могут выйти в интернет.
Проверить состояние форвардинга можно командой:
sysctl net.ipv4.ip_forwardЕсли вывод показывает 0, форвардинг отключен. Включить его временно можно так:
sysctl -w net.ipv4.ip_forward=1Чтобы настройка сохранилась после перезагрузки, добавьте строку в файл /etc/sysctl.conf:
net.ipv4.ip_forward = 1На большинстве дистрибутивов Linux это работает. На других системах, например на FreeBSD, параметр называется иначе (net.inet.ip.forwarding), но принцип тот же.
После включения форвардинга проверьте пинг внешнего IP с клиента. Если он начал проходить — половина дела сделана. Если нет, переходите к настройке NAT.
Причина 2: отсутствует NAT-маскарадинг
Даже с включенным форвардингом трафик не вернется к клиенту, если на сервере не настроен NAT (Network Address Translation). Пакеты клиента имеют внутренние IP-адреса VPN-подсети (например, 10.0.0.2). Когда они уходят в интернет, ответы не могут найти обратную дорогу, потому что маршрутизаторы в интернете не знают, как доставить пакет на адрес 10.0.0.2.
Решение — маскарадинг (MASQUERADE). Это правило iptables, которое подменяет исходный адрес пакета на адрес внешнего интерфейса сервера. Ответы приходят на сервер, а он уже знает, какому клиенту их передать.
Типичное правило выглядит так:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADEЗдесь eth0 — внешний сетевой интерфейс сервера, а 10.0.0.0/24 — подсеть вашей VPN. Убедитесь, что имя интерфейса указано правильно. Проверить его можно командой ip route | grep default — в выводе будет строка вида default via ... dev eth0.
Лучше всего добавлять это правило в конфигурацию WireGuard в секции [Interface] с помощью директив PostUp и PostDown. Тогда правило будет создаваться при поднятии туннеля и удаляться при его остановке. Это удобно и исключает забытые правила после перезагрузки.
Форвардинг и NAT работают в паре: первый разрешает пересылку, второй обеспечивает возврат ответов. Настроив оба, вы получите рабочий выход в интернет через VPN.
Причина 3: неверные AllowedIPs на клиенте
AllowedIPs — это параметр в конфигурации клиента, который определяет, какие IP-адреса должны направляться в туннель. Если он задан слишком узко, через VPN будет идти только часть трафика, и может показаться, что интернет не работает, хотя туннель функционирует.
Для полного туннеля (когда весь трафик клиента идет через VPN) в секции [Peer] клиента должно быть указано:
AllowedIPs = 0.0.0.0/0Это значение означает «весь IPv4-трафик — в туннель». Если там стоит только внутренняя подсеть (например, 10.0.0.0/24), то в туннель уйдет лишь трафик до самого сервера, а весь остальной интернет-трафик пойдет напрямую через вашего провайдера. В результате вы будете видеть свой домашний IP, а не IP сервера, и решите, что VPN не работает.
Если вам нужен раздельный туннель (например, только для доступа к определенным ресурсам), вы можете указать конкретные подсети. Но для большинства случаев, когда требуется полная анонимность или обход блокировок, нужно именно 0.0.0.0/0.
Также обратите внимание, что на некоторых клиентах (например, на iOS) может потребоваться указать ::/0 для IPv6, если вы используете IPv6-адресацию.
Причина 4: проблемы с DNS через туннель
Если по IP-адресу все пингуется, а сайты по именам не открываются, значит проблема в DNS. При полном туннеле клиент должен использовать DNS-сервер, доступный через VPN. Если этого не сделать, запросы на разрешение имен будут уходить напрямую вашему провайдеру, который может их блокировать или подменять.
Решение — добавить строку DNS в секцию [Interface] конфигурации клиента:
DNS = 1.1.1.1Вы можете использовать любой DNS-сервер, который доступен с вашего VPN-сервера. Популярные варианты: 1.1.1.1 (Cloudflare), 8.8.8.8 (Google), 9.9.9.9 (Quad9). Убедитесь, что выбранный сервер действительно доступен с сервера, иначе запросы будут уходить в никуда.
На некоторых платформах (например, на iOS) DNS-настройка может автоматически заполняться при импорте конфигурации, но это не всегда работает корректно. Поэтому проверяйте этот параметр вручную.
Симптом «по IP работает, по имени нет» почти всегда лечится именно строкой DNS в конфиге клиента. После добавления перезапустите VPN-соединение и проверьте резолвинг имен.
Блокировки ТСПУ: почему WireGuard не работает в России
В России к техническим проблемам добавляется еще одна — блокировки со стороны ТСПУ (технических средств противодействия угрозам). Это система, которая внедрена на сетях операторов связи и способна детектировать и блокировать VPN-трафик по сигнатурам.
Чистый WireGuard в большинстве случаев в России не работает стабильно. На мобильных операторах (МТС, МегаФон, Билайн, Tele2) он блокируется практически гарантированно. На домашних провайдерах (Ростелеком, Дом.ру, МГТС) ситуация мягче, но в некоторых регионах и в определенные дни также возможны сбои.
Признаки блокировки: туннель подключается, но трафик не идет, или соединение устанавливается, но через несколько секунд обрывается. Иногда помогает переключение между мобильным и домашним интернетом, но это не решение.
Для обхода блокировок был создан форк AmneziaWG. Это модификация WireGuard, которая добавляет junk-пакеты и рандомизацию заголовков перед handshake. Внешне трафик становится неотличим от случайного UDP-трафика, и ТСПУ не может его детектировать. Производительность практически идентична оригинальному WireGuard.
Если вы находитесь в России и вам нужен стабильный VPN, лучше сразу использовать AmneziaWG или другие обфусцированные протоколы, такие как VLESS, Shadowsocks или Hysteria2.
Как проверить, что VPN полностью работает
После внесения изменений важно убедиться, что VPN действительно работает, а не просто «поднят». Вот несколько простых проверок:
- Проверка внешнего IP: выполните команду
curl -s https://api.ipify.orgили зайдите на сайт 2ip.ru. Если вы видите IP-адрес вашего VPN-сервера, а не адрес вашего домашнего провайдера, значит трафик идет через туннель. - Проверка DNS: выполните
curl -sI https://google.com | head -n1. Если вы получили ответHTTP/2 200, значит DNS работает. - Проверка утечек: можно использовать сервисы для проверки утечек DNS и WebRTC. Убедитесь, что ваш реальный IP нигде не светится.
- Проверка скорости: зайдите на Speedtest и сравните скорость с и без VPN. Падение скорости до 10-20% от исходной — это нормально, но если скорость падает в разы, возможно, проблема в сервере или в настройках MTU.
Если внешний IP все еще ваш домашний, значит трафик идет в обход туннеля. Вернитесь к проверке AllowedIPs и убедитесь, что они установлены как 0.0.0.0/0.
Эти проверки однозначно показывают, что VPN не просто «поднят», а действительно пропускает и маршрутизирует ваш интернет.
Профилактика и стабильная работа WireGuard
Чтобы VPN работал стабильно и без сюрпризов, следуйте нескольким простым правилам:
- Настройте сервер правильно с первого раза: включите форвардинг, добавьте NAT-маскарадинг через PostUp/PostDown, проверьте имя внешнего интерфейса.
- Используйте актуальные клиенты: официальные приложения WireGuard, AmneziaVPN, Hiddify Next и другие регулярно обновляются и содержат исправления для обхода блокировок.
- Для России используйте AmneziaWG: если вы находитесь в РФ, не тратьте время на чистый WireGuard — сразу переходите на AmneziaWG или другие обфусцированные протоколы.
- Проверяйте конфигурацию на разных сетях: то, что работает на домашнем интернете, может не работать на мобильном. Тестируйте VPN на разных провайдерах.
- Следите за обновлениями: технологии блокировок постоянно совершенствуются, поэтому важно быть в курсе последних рекомендаций.
Также стоит помнить, что использование VPN для обхода блокировок в России не запрещено для частных лиц, но сервисы, предоставляющие VPN, могут быть ограничены. Поэтому самостоятельная настройка на собственном сервере — это легальный и надежный способ.
Вопросы и ответы
Туннель WireGuard поднят, handshake есть, а интернета нет. Почему?
Чаще всего на сервере не включен IP-форвардинг или не настроен NAT-маскарадинг. Трафик доходит до сервера, но не выходит наружу, или ответы не возвращаются клиенту. Проверьте sysctl net.ipv4.ip_forward — должно быть 1. Затем убедитесь, что в iptables есть правило MASQUERADE для вашей VPN-подсети. Также проверьте AllowedIPs на клиенте — для полного туннеля должно быть 0.0.0.0/0.
Как пустить весь трафик клиента через WireGuard?
В конфигурации клиента в секции [Peer] задайте AllowedIPs = 0.0.0.0/0. Это означает, что весь IPv4-трафик будет направляться в туннель. Если вам нужен и IPv6, добавьте ::/0. Узкое значение, например 10.0.0.0/24, направит в туннель только трафик до сервера, а остальной интернет-трафик пойдет напрямую.
По IP пингуется, а сайты не открываются. Что не так?
Скорее всего, не работает DNS через туннель. Добавьте строку DNS = 1.1.1.1 (или другой доступный DNS-сервер) в секцию [Interface] конфигурации клиента. Убедитесь, что выбранный DNS-сервер доступен с вашего VPN-сервера. После изменения перезапустите VPN-соединение.
WireGuard не работает на мобильном интернете, но работает дома. Почему?
Скорее всего, ваш мобильный оператор блокирует WireGuard через ТСПУ. Чистый WireGuard легко детектируется по сигнатуре handshake. Решение — использовать AmneziaWG (форк WireGuard с обфускацией) или другие протоколы, такие как VLESS, Shadowsocks. Также можно попробовать переключаться между разными операторами, но это ненадежно.
Что такое AmneziaWG и чем он лучше обычного WireGuard?
AmneziaWG — это форк WireGuard от российской команды Amnezia, который добавляет junk-пакеты и рандомизацию заголовков перед handshake. Это делает трафик неотличимым от случайного UDP-трафика, что позволяет обходить ТСПУ и DPI российских провайдеров. Производительность практически идентична оригинальному WireGuard, а настройка не сложнее.
Как проверить, что мой VPN действительно работает?
Выполните команду curl -s https://api.ipify.org — если вы видите IP вашего VPN-сервера, а не домашний, значит трафик идет через туннель. Также проверьте DNS: curl -sI https://google.com | head -n1 — должен быть ответ HTTP/2 200. Можно использовать сервисы проверки утечек DNS и WebRTC.
Что делать, если после настройки WireGuard интернет пропал полностью?
Проверьте, не блокирует ли ваш файрвол трафик. Убедитесь, что на сервере разрешен форвардинг и NAT. Также проверьте, не конфликтуют ли маршруты. Если вы используете полный туннель, весь трафик идет через VPN, и если сервер не настроен как шлюз, интернет пропадет. Временно отключите VPN и проверьте, восстанавливается ли доступ.