DevGang
Авторизоваться

Установите 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 с помощью Homebrewbrew 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. Таким образом, вы не ставите под угрозу безопасность своей системы, запуская случайные изображения или сценарии.

Источник:

#Linux
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу