WireGuard: обход белых списков провайдера — рабочие методы
Провайдер блокирует WireGuard через белый список? Разбираем рабочие методы обхода: смена портов, TCP-обёртки, маскировка под TLS и SSH.
Содержание
Как понять, что WireGuard блокирует белый список
Белый список провайдера пропускает только трафик на известные порты и протоколы (обычно 80/443 TCP, иногда 53 UDP). WireGuard по умолчанию использует UDP-порт 51820 — это не входит ни в один белый список. Если после запуска интерфейса WireGuard нет handshake, а обычный доступ к сайтам работает — вероятно, пакеты UDP на нестандартный порт просто отбрасываются.
Порядок диагностики: сначала проверьте доступность порта с другого устройства (например, nc -u -z server_ip 51820). Если порт недоступен, но другие UDP-порты (к примеру, 53) открыты, значит, действует фильтрация. Затем проверьте, не блокирует ли провайдер сам протокол WireGuard по DPI (deep packet inspection). Для этого временно переключите сервер на другой UDP-порт, например 443. Если соединение установилось — дело только в порте. Если нет — требуется маскировка трафика.
Метод 1: перенос WireGuard на разрешённый UDP-порт
Самый простой способ — изменить порт прослушивания на сервере и клиенте. Часто провайдеры пропускают все UDP-пакеты на порт 53 (DNS) или 443 (QUIC). Используйте эти порты. На сервере в /etc/wireguard/wg0.conf укажите:
[Interface]
Address = 10.0.0.1/24
ListenPort = 443
PrivateKey = <server_private>На клиенте в конфигурации [Peer] поменяйте Endpoint на vpn.example.com:443. После этого перезапустите службу WireGuard. Проверьте подключение. Этот метод работает, если блокировка только по порту, но не по DPI.
Метод 2: TCP-обёртка udp2raw
Если UDP-порт 443 тоже блокируется, но TCP-соединения на 80/443 разрешены, поможет утилита udp2raw. Она превращает UDP-трафик WireGuard в TCP. Установите udp2raw на сервере и на клиенте (скачайте с GitHub, проверьте версию). На сервере запустите:
udp2raw -s -l 0.0.0.0:443 -r 127.0.0.1:51820 -k "пароль" --raw-mode faketcpЭто заставит сервер принимать TCP-пакеты на порт 443 и пересылать их локальному WireGuard (порт 51820). На клиенте укажите вместо стандартного Endpoint TCP-порт:
Endpoint = vpn.example.com:443И запустите клиентский udp2raw:
udp2raw -c -l 0.0.0.0:3333 -r vpn.example.com:443 -k "пароль" --raw-mode faketcpЗатем настройте клиент WireGuard на Endpoint = 127.0.0.1:3333. Убедитесь, что у вас открыт порт 443 на сервере и нет конфликта с веб-сервером. Проверьте для своей версии udp2raw — синтаксис может отличаться.
Метод 3: маскировка под TLS с wstunnel
wstunnel оборачивает UDP в WebSocket, который затем передаётся по HTTPS (порт 443). Это эффективно против DPI, так как трафик выглядит как обычный запрос к веб-серверу. Скачайте wstunnel на сервер и клиент. На сервере:
wstunnel server --restrict-http 127.0.0.1:51820 wss://0.0.0.0:443На клиенте:
wstunnel client -L 'udp://127.0.0.1:51820:127.0.0.1:51820' wss://vpn.example.com:443Теперь клиент WireGuard должен использовать Endpoint = 127.0.0.1:51820. Либо можно настроить wstunnel для проброса конкретного порта. Проверьте, что сервер разрешает входящие HTTPS-соединения. Если у вас уже есть веб-сервер, используйте другой порт (например, 8443) и убедитесь, что он не блокируется.
Метод 4: WireGuard поверх SSH
Если разрешён только SSH (порт 22), можно построить туннель: поднимаете WireGuard между двумя машинами, а затем пробрасываете его через SSH. Но это сложнее — обычно используют обычный SSH-туннель для проброса трафика, а не сам WireGuard. Однако если вы хотите сохранить шифрование WireGuard, можно использовать socat для перенаправления UDP в TCP. Например, на сервере:
socat TCP-LISTEN:433,fork UDP:127.0.0.1:51820На клиенте — обратное:
socat UDP-LISTEN:51820,fork TCP:server_ip:433Затем на клиенте WireGuard укажите Endpoint = 127.0.0.1:51820. Этот способ обходит блокировку только если разрешён TCP-порт 433 (или любой другой). SSH-туннель здесь не обязателен, но можно комбинировать.
Как повысить устойчивость обхода
Ни один метод не гарантирует 100% работу, если провайдер применяет DPI. Чтобы повысить устойчивость:
- Меняйте порты каждые несколько дней.
- Используйте комбинацию TCP-обёртки и TLS, например wstunnel.
- Настройте резервные серверы в разных подсетях.
- Проверяйте актуальность конфигураций для вашей версии WireGuard и обёрток.
Перед настройкой всегда тестируйте маскировку с помощью ping или настройте логи WireGuard для диагностики.
Мини-чеклист
- Определите, блокирует ли провайдер только UDP-порт 51820 или сам протокол WireGuard (тест с портом 443).
- Если помогает смена порта — используйте UDP 53 или 443, проверьте, что порт не занят.
- При DPI используйте udp2raw или wstunnel, тщательно проверьте синтаксис для вашей версии.
- Настройте клиент WireGuard на локальный порт обёртки (например, 127.0.0.1:51820) и проверьте handshake.
Частые ошибки
- Не изменять порт на клиенте — если сервер слушает 443, а клиент всё ещё шлёт на 51820, connection не будет.
- Забыть про firewall — нужно открыть выбранные порты и на сервере, и на клиенте.
- Использовать устаревшие версии udp2raw/wstunnel, которые несовместимы с текущей ОС.
- Пытаться обойти белый список без предварительной диагностики, наугад меняя конфиги.
Источники и документация
FAQ
Будет ли работать WireGuard, если просто поменять порт на 443 UDP?
Часто да, если провайдер блокирует только нестандартные UDP-порты. Но если используется DPI, блокировка сохранится, потребуется TCP-обёртка или TLS.
Что такое udp2raw и чем он отличается от обычного TCP-туннеля?
udp2raw преобразует UDP-пакеты в TCP и отправляет их на указанный порт, при этом эмулирует TCP-сессию, что позволяет обойти простые фильтры. Такой трафик выглядит как обычный TCP, но содержит внутри WireGuard.
Можно ли одновременно использовать wstunnel и WireGuard без изменения конфигурации WireGuard?
Да, wstunnel работает как прокси: на клиенте он слушает локальный UDP-порт и пересылает данные на сервер по HTTPS. Вы меняете только Endpoint в конфиге WireGuard на 127.0.0.1:порт, который слушает wstunnel. Сам конфиг WireGuard остаётся почти без изменений.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ