WireGuard - тот протокол, с которого стоит начинать почти всем. Он компактный, почти мгновенно переподключается при переходе с Wi-Fi на мобильный интернет, а вся конфигурация умещается в полтора десятка строк текста. Этот материал про практику: как занести конфигурацию на каждую платформу, как держать наготове несколько серверов, чтобы переключение занимало два касания, как читать конфиг и как чинить три поломки, на которые приходится почти каждое сообщение "не подключается".
Если вы купили здесь приватный VPN, туннель WireGuard уже лежит на странице заказа. Откройте её восьмисимвольным магическим кодом, который выдан после оплаты (он выглядит как AB12-CDEF). Аккаунта и пароля нет, а значит, магический код - единственный способ вернуться, поэтому сохраните его до того, как закроете вкладку. Тот же код открывает страницу заказа для британского номера или туристического пакета данных, купленных тем же заказом.
Сначала официальное приложение
Ставьте официальный клиент WireGuard, а не перепакованную сборку. Это эталонная реализация, открытый код, и своего слоя с аккаунтом он не добавляет.
- iPhone и iPad: "WireGuard" в App Store от WireGuard Development Team.
- Android: "WireGuard" в Google Play или то же приложение из F-Droid, если телефон живёт без сервисов Google. Собираются из одного исходника.
- Windows и macOS: установщики с wireguard.com. На macOS версия из App Store - тот же клиент, который сам обновляется, обычно так проще.
- Linux: пакет
wireguard-toolsиз репозитория дистрибутива, дальшеwg-quick upс файлом.
При первом запуске туннеля приложение попросит разрешение добавить конфигурацию VPN. Этот запрос выдаёт операционная система, а не приложение, и обойти его нельзя: чтобы перенаправить трафик, VPN обязан установить сетевой профиль.
Два пути импорта: QR и файл
Любой клиент WireGuard принимает одну и ту же конфигурацию в двух видах. Берите тот, что подходит устройству.
Сканирование QR, для телефонов
Откройте страницу заказа на компьютере, чтобы QR был на втором экране, затем на телефоне запустите WireGuard, нажмите плюс, выберите создать из QR-кода и наведите камеру. Приложение попросит имя туннеля. Называйте по локации, а не "VPN": туннелей у вас будет несколько, и список из VPN 1 по VPN 4 не помогает никому.
Не сканируйте QR с того же экрана, на котором вы его читаете. Если телефон - ваше единственное устройство, скачайте файл .conf и идите по пути с файлом.
Импорт файла, везде
Скачайте файл .conf со страницы заказа, дальше:
- iOS: сохраните в "Файлы", откройте WireGuard, плюс, создать из файла или архива, выберите его.
- Android: плюс, импорт из файла или архива. Zip с несколькими туннелями импортируется целиком за раз.
- Windows: слева внизу импортировать туннели из файла или просто перетащите файл в окно.
- macOS: плюс слева внизу, затем импортировать туннели из файла.
Относитесь к файлу как к паролю. В нём приватный ключ, и любой, у кого он есть, может пользоваться вашим подключением. После импорта удалите его из папки загрузок.
Что означает каждая строка конфигурации
Конфигурация WireGuard - это два блока. [Interface] описывает вашу сторону, [Peer] - сервер. Чтобы подключиться, понимать это не обязательно, но знание строк превращает диагностику из угадывания в чтение.
| Строка | Блок | Что делает |
|---|---|---|
PrivateKey | Interface | Ваш секретный ключ. Ни файл, ни его скриншот никому не передавайте. |
Address | Interface | Приватный IP устройства внутри туннеля, не ваш публичный адрес. |
DNS | Interface | Резолвер, который используется при поднятом туннеле, чтобы запросы имён не уходили провайдеру. |
MTU | Interface | Максимальный размер пакета в туннеле. Единственная строка, которую стоит править руками. |
PublicKey | Peer | Идентичность сервера. Если она неверна, handshake отклоняется молча. |
PresharedKey | Peer | Необязательный дополнительный симметричный ключ поверх handshake. |
AllowedIPs | Peer | Что маршрутизируется в туннель. 0.0.0.0/0, ::/0 означает всё. |
Endpoint | Peer | Адрес сервера и UDP-порт, куда шлёт ваше устройство. |
PersistentKeepalive | Peer | Каждые несколько секунд шлёт крошечный пакет, чтобы роутеры и мобильные сети держали путь открытым. |
Две из них определяют повседневное поведение. AllowedIPs со значением 0.0.0.0/0, ::/0 - это полный туннель: через VPN идёт всё. Более узкие значения дают раздельное туннелирование, когда внутрь уходят только отдельные диапазоны. PersistentKeepalive не даёт мобильной сети тихо уронить простаивающий туннель, поэтому жалоба "работает, а через десять минут встаёт" чаще про keepalive, чем про сервер.
Несколько туннелей и переключение между ними
Один доступ работает на каждом сервере из нашего списка, в десятках стран, так что держать один туннель незачем. Импортируйте три или четыре: ближний ради скорости, один в стране, в которой нужно появляться, и один совсем в другом месте на случай, когда сеть начинает капризничать.
Любой клиент WireGuard держит активным один туннель за раз. Включение второго автоматически выключает первый, так что переключение - это один тумблер. Заметки по платформам:
- iOS и Android: список туннелей и есть главный экран. Долгое нажатие переименовывает или удаляет. На Android можно вынести плитку быстрых настроек для последнего туннеля.
- Windows: туннели идут слева. Приложение живёт и в трее, так что переключаться можно не открывая окно.
- macOS: значок в строке меню показывает все туннели, переключение - два клика откуда угодно.
Давайте туннелям имена с городом и протоколом, например "Berlin WG". Вы это оцените, когда рядом появятся ещё и профили OpenVPN.
On-demand и always-on
Автоматики на каждой платформе разное количество, и названия различаются до неприличия.
| Платформа | Функция | Где находится |
|---|---|---|
| iOS и macOS | On-Demand: включаться на Wi-Fi, на мобильной сети или везде, кроме перечисленных сетей | Редактирование туннеля в приложении WireGuard, раздел On-Demand |
| Android | Постоянный VPN и блокировка соединений без VPN | Системные настройки, Сеть, VPN, шестерёнка рядом с WireGuard |
| Windows | Блокировка трафика вне туннеля, kill switch при AllowedIPs, покрывающем всё | Редактирование туннеля в приложении WireGuard |
| Linux | Включить сервис wg-quick для интерфейса, чтобы поднимался при загрузке | systemd, юнит wg-quick@ |
Список исключений в iOS - действительно полезная вещь. Добавьте домашний Wi-Fi как исключение, и туннель будет сам подниматься везде остальном, а вы про него забудете. На Android именно "блокировать соединения без VPN" реально удерживает трафик в те секунды, когда связь потерялась и ещё не вернулась. Включайте, если это для вас важно, понимая, что пока туннель лежит, интернета на телефоне не будет вовсе.
Диагностика в разумном порядке
Handshake не происходит вообще
Приложение показывает туннель активным, но "последний handshake" не появляется и трафик не идёт. Значит, ваши пакеты не доходят до endpoint или ответ не возвращается. Идите по списку:
- Проверьте часы устройства. Handshake WireGuard содержит метку времени. Устройство с сильно сбитыми часами получает отказ. Поставьте дату и время на автоматические.
- Попробуйте другую сеть. Переключитесь с Wi-Fi на мобильный интернет. Если там подключается, значит блокирует Wi-Fi, и правки конфига ничего не изменят.
- Попробуйте другой сервер. Один endpoint может быть недоступен по вашему маршруту, пока остальные работают. Ровно ради этого вы импортировали несколько туннелей.
- Убедитесь, что один конфиг не запущен дважды. WireGuard узнаёт вас по ключу, а не по устройству. Если один и тот же туннель активен сразу на двух устройствах, маршрут сервера для этого ключа следует за последним пришедшим handshake, и оба соединения ведут себя странно. На каждое устройство - своя конфигурация.
- Импортируйте файл заново. Конфиг, перепечатанный руками со скриншота, почти всегда содержит битый ключ. Импортируйте файл, а не перенабирайте.
Если handshake не проходит ни на одном сервере, вот тогда и стоит написать в поддержку с магическим кодом. Наша политика возврата покрывает сервис, который после диагностики не подключается ни на одном сервере. Один медленный сервер она не покрывает, потому что там решение - сменить сервер.
Подключилось, но сайты не открываются
Handshake прошёл, проверка IP показывает локацию VPN, но имена не резолвятся. Это почти всегда DNS.
- Проверьте, есть ли в конфиге строка
DNS. Без неё устройство продолжает пользоваться прежним резолвером, что и раскрывает ваши запросы, и часто просто не работает внутри туннеля. - На Android посмотрите Частный DNS в системных настройках. Если там задано конкретное имя хоста, оно может конфликтовать с резолвером туннеля. Поставьте "Автоматически" или "Выкл." и проверьте снова.
- На macOS и Windows после смены настроек DNS отключитесь и подключитесь ещё раз. Обе системы кэшируют упорно.
- Если дома стоит блокировщик рекламы на уровне сети, он может перехватывать порт 53 и путать картину. Проверьте на мобильном интернете, чтобы это исключить.
Подключилось, но тяжёлые страницы и загрузки виснут
Это проблема MTU, и из трёх она чаще всего диагностируется неверно. Признак характерный: handshake проходит, мелкие запросы идут, а потом большая загрузка или страница с множеством элементов зависает и уходит в таймаут. Некоторые мобильные сети и часть домашних подключений заворачивают ваш трафик в дополнительный слой, и внутри каждого пакета остаётся меньше места, чем предполагал WireGuard.
Лечится одной строкой. Отредактируйте туннель и в [Interface] уменьшите MTU. Если значения нет вовсе, попробуйте сначала 1420, потом 1380, потом 1280, переподключаясь после каждой правки. Меньшие значения немного стоят в скорости, а 1280 - безопасный нижний предел для IPv6, поэтому останавливайтесь на первом рабочем значении, а не опускайтесь сразу до дна.
Сеть полностью блокирует UDP
WireGuard говорит только по UDP. Режима TCP у него нет, и настройки, которая его создала бы, тоже нет. Часть корпоративных и университетских сетей, часть отельных порталов и некоторые операторы пропускают только TCP на портах 80 и 443. В таких сетях WireGuard не заработает при любой конфигурации туннеля.
Что делать вместо этого, по порядку:
- OpenVPN поверх TCP 443. На странице заказа лежат профили
.ovpnв вариантах UDP и TCP. Вариант TCP на порту 443 на уровне портов выглядит как обычное шифрованное соединение с веб-сервером, и большинству строгих корпоративных сетей этого достаточно. Он медленнее WireGuard, и в такой сети этот размен оправдан. - VLESS. Если сеть не просто фильтрует порты, а разбирает трафик, следующим стоит пробовать поток VLESS внутри TLS. Это более длинная тема со своими клиентами, и у неё отдельное руководство: что пробовать, когда WireGuard заблокирован.
Одно замечание про eSIM
Во время установки eSIM выключайте VPN. Загрузка профиля eSIM должна дойти до оператора напрямую, и туннель на пути - известная причина установки, зависшей на "Активация". Сначала поставьте eSIM, убедитесь, что есть сигнал, потом поднимайте туннель. То же касается комплекта, где VPN и eSIM приходят на одну страницу заказа.
Что делать дальше
Если туннель поднялся, сделайте сейчас две мелочи и сэкономите себе испорченный вечер потом. Импортируйте второй и третий сервер, чтобы переключение было тумблером, а не проектом, и положите магический код туда, где он останется и через полгода: это единственный путь назад к странице заказа, и восстанавливать нечего, аккаунта нет.
Если вы ещё выбираете, на странице VPN перечислено, что именно выдаётся, и сроки планов от 7 до 365 дней, а страница статуса открывает существующий заказ по магическому коду. Если вы здесь не потому, что что-то сломалось, а потому что вас блокирует сеть, переходите сразу к руководству по VLESS.
