Установите Cloudflare WARP на любой дистрибутив Linux благодаря Distrobox
В настоящее время Cloudflare WARP можно установить на Ubuntu, Debian, RHEL и CentOS. Поддерживаются не многие дистрибутивы Linux.
Cloudflare WARP — очень популярный бесплатный VPN. Он быстрый, поскольку работает в глобальной сети Cloudflare через соединение WireGuard. Нет ограничений на использование полосы пропускания. Но он не может подделать ваше местоположение и не очень хорошо работает с торрентами, поскольку не поддерживает переадресацию портов.
Однако мы можем настроить WARP в Docker, точнее, в Drocker Distrobox, а затем проксировать соединение хоста с контейнером через порт SOCKS5. Этот метод принесет пользу, например, неподдерживаемым системам, таким как Arch или openSUSE. Кроме того, неизменяемые операционные системы, такие как Fedora Silverblue и openSUSE MicroOS, смогут легко использовать WARP-соединение.
1. Установите Distrobox
Distrobox — это менеджер контейнеров, предназначенный для тесной интеграции с хостом. По сравнению с Docker и Podman его намного проще использовать, поскольку большинство вещей настраиваются вне системы. Тем не менее, он по-прежнему использует Docker или Podman за сценой.
Например, чтобы установить Distrobox на openSUSE Tumbleweed:
sudo zypper install distrobox
В очень старом дистрибутиве с точечным выпуском, например, в текущем Ubuntu LTS, вы можете установить последнюю версию Distrobox с помощью Homebrew: brew install distrobox
.
В Tumbleweed это автоматически запустит Docker.
Однако я предпочитаю Podman, поэтому я устанавливаю Podman с помощью sudo zypper install podman
, а затем в ~/.config/distrobox/distrobox.conf
, я говорю Distrobox использовать вместо него Podman:
container_manager="podman"
2. Создайте контейнер Distrobox
Во-первых, нам нужно решить, какой образ ОС мы будем использовать для контейнера. Список поддерживаемых контейнеров смотрите здесь. Я рекомендую последнюю версию официального образа Ubuntu с Docker Hub. Итак, я создаю контейнер:
distrobox create -i docker.io/library/ubuntu:latest -n cfw-dbx -H ~/distrobox/cfw-dbx --unshare-netns --additional-packages "systemd libpam-systemd" -I --additional-flags "-p 127.0.0.1:1080:1080"
distrobox create
используется для создания контейнера Distrobox.-i
используется для указания изображения, которое мы хотим использовать для контейнера.-n
используется для указания имени контейнера. В этом случае я используюcfw-dbx
.-H
используется для отделения контейнера$HOME
от хоста (я не хочу, чтобы файлы конфигурации контейнера, которые могут быть временными, смешивались с конфигурациями моей системы). В этом случае я указываю, что мой хост~/distrobox/cfw-dbx
будет моим контейнером$HOME
. Все конфиги контейнера будут находиться в этой папке.--unshare-netns
используется для отделения контейнерного интернета от хоста. Таким образом, интернет-конфигурации контейнера не будут конфликтовать с хостом.--additional-packages "systemd libpam-systemd"
используется для добавления необходимых пакетов для сервисовsystemd
в контейнер.-I
используется, чтобы сообщить Distrobox о создании контейнера инициализации. По сути, это позволяет контейнеру иметь свои собственные сервисыsystemd
, отделенные от хоста, что требуется клиенту WARP.--additional-flags "-p 127.0.0.1:1080:1080"
используется для добавления флагов Docker/Podman, которые недоступны в Distrobox. В этом случае необходимо сопоставить порт SOCKS5 прокси-сервера (1080) на хосте с тем же портом внутри контейнера (позже мы настроим прокси-сервер WARP для использования этого порта).
После процесса создания войдите в контейнер:
distrobox enter cfw-dbx
Вы можете просто выйти из контейнера, используя командуexit
внутри контейнера. Однако контейнер по-прежнему будет работать в фоновом режиме. Чтобы остановить контейнер:distrobox stop <container name>
.
3. Установите клиент Cloudflare WARP в контейнер
Чтобы выполнить инструкцию без каких-либо проблем, нам необходимо установить эти пакеты:
sudo apt install curl lsb-release
4. Включите службу WARP
Во-первых, нам нужно включить службу WARP. В противном случае мы вообще не сможем использовать warp-cli
какое-либо соединение:
sudo systemctl enable --now warp-svc.service
5. Зарегистрируйте клиента
warp-cli registration new
6. Включите фильтрацию вредоносных программ (необязательно)
Это совершенно необязательно, но полезно знать, что WARP по умолчанию использует 1.1.1.1
в качестве преобразователя DNS. Я всегда использую версию 1.1.1.2
, которая аналогична версии 1.1.1.1
+ фильтр вредоносных программ на уровне DNS.
warp-cli dns families malware
7. Включите режим прокси и настройте порт прокси
Поскольку мы хотим перенаправить все интернет-соединения хоста на WARP-туннель этого контейнера, нам необходимо включить режим прокси и настроить порт прокси (SOCKS5 — порт 1080).
warp-cli mode proxy
warp-cli proxy port 1080
8. Подключитесь к WARP
warp-cli connect
После этого мы можем покинуть контейнер. Это одноразовая установка. Нам больше никогда не придется входить в этот контейнер. Выйдите из контейнера, выполнив команду exit
.
exit
9. Перенаправить соединение нашего хоста
Найдите настройки прокси-сервера вашего хоста. Например, в GNOME измените прокси-сервер на ручной режим, затем укажите IP-адрес локального хоста (127.0.0.1) и порт SOCKS5 (1080), как показано на скриншотах ниже:
10. Проверьте соединение WARP
Мы можем проверить WARP-соединение, используя URL-адрес трассировки (в нашем случае, с терминала хоста):
curl https://www.cloudflare.com/cdn-cgi/trace/ | grep warp
Если вы успешно настроили WARP, это должно вернуть:
warp=on
Вы можете проверить свои текущие преобразователи IP и DNS, которые теперь должны измениться на Cloudflare, на dnscheck.tools.
11. Автоматическое подключение к WARP при запуске системы и аварийный выключатель
Обычно вы можете подключиться к WARP в контейнере, просто войдя в контейнер, поскольку мы уже включили службу WARP внутри контейнера. А чтобы отключиться от WARP, мы можем либо остановить контейнер, либо закрыть прокси хоста.
Однако, если мы хотим автоматически подключаться к WARP при загрузке (фактически, после того, как мы вошли в свою учетную запись), это так же просто. Все, что нам нужно сделать, это запустить контейнер при загрузке с использованием пользовательской службы systemd
.
Вот содержимое файла пользовательской службы:
[Unit]
Description=Start cfw-dbx container for Cloudflare WARP connection.
[Service]
Type=oneshot
ExecStartPre=-bash -c "until systemctl is-active network-online.target; do sleep 1; done"
ExecStart=-bash -c "distrobox enter cfw-dbx"
ExecStop=-bash -c "distrobox stop cfw-dbx"
Restart=on-failure
RestartSec=2s
RemainAfterExit=yes
[Install]
WantedBy=default.target
- Пожалуйста, измените имя контейнера в соответствии с именем вашего контейнера. Мой
cfw-dbx
. - Я деформирую команды в оболочке
bash
, чтобы их можно было выполнить без проблем. - Доступность сети проверяется в
ExecStartPre
используяnetwork-online.target
. Поскольку нашему контейнеру необходимо, чтобы подключение к Интернету работало, бессмысленно запускать контейнер до того, как система будет успешно подключена к сети. - Я использую
Restart=on-failure
, поэтому мне не нужно точно определять, какие службы, сокеты и т. д. Мне придется подождать, прежде чем я смогу запустить командуdistrobox enter
. Команда просто будет выполняться до успеха. Поскольку это пользовательская служба, она запускается, когда пользователь входит в свою учетную запись. Следовательно, это не связано с порядком загрузки системы. Обратите внимание, я используюRestartSec=2s
для предотвращения спама из собственного служебного файла. RemainAfterExit=yes
необходимо, так как контейнер должен продолжать работать, чтобы соединение продолжало работать.[Install]
тоже необходимо. В противном случае мы не сможем включить услугу.
Сохраните этот служебный файл как <container-name>.service
(во избежание путаницы). Например, в моем случае это cfw-dbx.service
. Затем поместите файл в ~/.config/systemd/user
.
Перезагрузите пользовательский сервис с помощью:
systemctl --user daemon-reload
Включите службу с помощью:
systemctl --user enable cfw-dbx.service
Теперь наше WARP-соединение будет автоматически запускаться при загрузке вместе с контейнером.
И часть аварийного выключателя. Если вы не отключите системный прокси, вы вообще не сможете подключиться к Интернету без работающего контейнера. Другими словами, вы можете переключаться между WARP-соединением и обычным интернетом с помощью переключателя прокси.
Альтернативы
Почему я рекомендую вам всем установить это вместо всех других альтернатив?
Что ж, этот метод использует официальный образ Ubuntu в качестве основы для нашего контейнера. Он также использует официальный клиент WARP от Cloudflare. Таким образом, вы не ставите под угрозу безопасность своей системы, запуская случайные изображения или сценарии.