Долгое время пользовался ssh-туннелем для «разблокировки» некоторых сетевых ресурсов, доступ к которым был ограничен для IP Российского диапазона (ну, драйверы там скачать с сайта производителя, и т.п.).
Но — всему приходит конец. Моему терпению — тоже. Надоело постоянно переключать потребителей на работу через прокси (privoxy), чтобы завернуть трафик в socks-прокси туннеля. TOR стали прикручивать, что привело к очень долгому поиску мостов. И лень моя победила (в очередной раз).
Очевидно — нужен был способ попроще, да ещё — без особых затрат. Ставить VPN сервер (в том или ином виде) на VPS — хотелось ещё меньше, чем кидать туннель. Всякие платные прокси (типа Mullvad) — они удобны, позволяют выбрать «точку выхода», но — надо изыскивать возможность их оплатить. Бесплатные — обычно, работают так себе.
Тут я вспомнил, что есть же CloudFlare и его WARP, причем — в бесплатной версии, да со всей мощью клаудфлэровских серверов, да без ограничений скорости, да ещё и — должен, теоретически, работать через нативный клиент WireGuard. «Надо попробовать» — подумал Штирлиц.
Настройка WARP в Linux
В целом, процесс достаточно понятный, на современных системах — проблем быть не должно (на современных — это где Network Manager поддерживает Wire Guard, иначе — можно и через консоль поднимать/гасить интерфейс VPN, но это менее удобно).
- Сгенерировать конфиг для WARP — консольной утилитой или онлайн-генератором на её базе. Ещё есть неофициальный CLI, мне он не пригодился.
- Полученный конфиг можно сунуть в
/etc/wireguard/
и попробовать поднять черезsystemctl start wg-quick@название-конфига.conf
. Но вряд ли это заработает, конфиг придется править.
Конфиг WireGuard для WARP
А чтобы не править его, передергивая интерфейс вручную из консоли, — проще сразу добавить в Network Manager. Подобрать рабочие настройки там, затем — перенести в конфиг. И получить основной (через графический интерфейс) и резервный (из консоли) способы работы с WARP. Чем и займёмся.
Настройка Network Manager
Тут всё тоже несложно: ПКМ на аплете менеджера — Соединения VPN — Настроить VPN — WireGuard — ‘+’ (добавить новое соединение).
Дальше настроить по картинке (скопировать значения из файла конфига):
Но вот адрес для Endpoint придется поподбирать — на разных провайдерах работают разные IP. Я прошелся по адресам с 162.159.193.0
по 162.159.193.10
, пока не нашел работающий.
В целом — соединение уже должно работать (надо только Address
в Параметры IPv4
вписать, как ниже показано), проверить можно через 2ip.ru. Вот такая картина у меня:
Подключается не всегда с первого раза, бывает, нужно несколько раз вкл/выкл VPN.
Google DNS и Wire Guard WARP
Но радость была бы не полной, если бы не ещё одна чудесная возможность WireGuard — он позволяет для соединения легко поменять адрес DNS сервера. Это не защитит от утечки DNS на сто процентов, но позволяет обойти блок, выставляемый на некоторых ресурсах на основе географической принадлежности DNS сервера (а клаудфлэровский 1.1.1.1
определялся, как находящийся в Москве).
В настройки IPv4 надо вписать гугловый DNS, в настройки IPv6 — можно по аналогии (IPv6-адрес DNS ищется в гугле же), а можно и обойтись только IPv4.
Ещё один неплохой вариант — использовать один из адресов DNS от OpenNIC. Это даст возможность доступа к доменным зонам .lib
и .coin
, в которых имеют зеркала некоторые популярные, но блокируемые, сайты.
Итого
Вот теперь «разблокировка» должна работать нормально.
Из плюсов — VPN включается сразу на уровне системы, приложения ходят через него. Не надо, как в случае с ssh-туннелем, заворачивать приложения для работы через туннель.
Второй плюс — ровно тем же способом можно включить WARP на Android. Клиент WireGuard под Android есть (ставил из F-Droid), надо только поправить сгенерированный конфиг по аналогии (как в заметке), затем — импортировать его в клиенте на телефоне. Всё!
Следующим шагом — можно настроить подключение WARP на роутере, чтобы всю внутреннюю сеть пускать в интернет через VPN. Я на своём Keenetic планирую так и сделать, но это «уже совсем другая история». 🙂