Вопрос или проблема
Я хочу, чтобы VPN автоматически подключался при запуске системы и переподключался каждый раз, когда сеть восстанавливается (после отключения по любой причине).
Команда для подключения: protonvpn-cli connect -f
Команда для отключения: protonvpn-cli disconnect
Создал файл с именем auto_vpn.service
в ~/.config/systemd/user
со следующим содержимым:
[Unit]
Description=Подключение к Proton-VPN
Requires=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes
[Install]
WantedBy=graphical-session.target
Затем запустил:
systemctl --user daemon-reload
systemctl --user start auto_vpn.service
systemctl --user enable auto_vpn.service
Теперь проблема в том, что служба работает. Но когда я перезагружаю ПК, служба не запускается (хотя она включена). Более того, я не уверен, перезапустится ли она, когда сеть подключится снова (после отключения по любой причине).
Хотя я не знаком со многими параметрами, которые можно использовать с systemd, вы можете попробовать изменить следующее, чтобы просто выполнить команду и оставить ее как есть.
Уберите BindsTo=network.service
, так как я не думаю, что это полезно. Я запускал подобные вещи без необходимости в этом.
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Но убедитесь, что запись с именем protonvpn-cli
находится в каталоге /usr/bin
. Она может находиться в других местах в зависимости от того, как вы ее установили.
В этом случае используйте whereis
, чтобы найти пакет.
Создайте файл с именем auto_vpn.service
в ~/.config/systemd/user
со следующим содержимым:
[Unit]
Description=Подключение к Proton-VPN
BindsTo=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes
[Install]
WantedBy=xsession.target
Теперь выполните:
systemctl --user daemon-reload
systemctl --user start auto_vpn.service
systemctl --user enable auto_vpn.service
Вот и все.
Ответ или решение
Автоматическое подключение к VPN при загрузке системы с использованием systemd
Если вы хотите настроить автоматическое подключение к VPN при старте системы и восстановление соединения каждый раз после его разрыва, вам потребуется создать службу в systemd. В данном руководстве мы рассмотрим, как это сделать с помощью команды protonvpn-cli
.
Шаг 1: Создание файла службы
-
Перейдите в пользовательскую директорию systemd:
В терминале выполните команду:mkdir -p ~/.config/systemd/user
-
Создайте файл службы:
Откройте текстовый редактор и создайте файл с именемauto_vpn.service
:nano ~/.config/systemd/user/auto_vpn.service
-
Добавьте следующий контент:
[Unit] Description=Connect to Proton-VPN After=graphical-session.target Wants=graphical-session.target [Service] Type=simple ExecStart=/usr/bin/protonvpn-cli connect -f ExecStop=/usr/bin/protonvpn-cli disconnect Restart=always RestartSec=30 StartLimitInterval=350 StartLimitBurst=10 RemainAfterExit=yes [Install] WantedBy=default.target
Шаг 2: Обновление и активация службы
После того как вы сохранили файл, выполните следующие команды для загрузки новой службы:
systemctl --user daemon-reload
systemctl --user start auto_vpn.service
systemctl --user enable auto_vpn.service
Настройка на автоматическое восстановление соединения
Чтобы ваш VPN автоматически переподключался при изменении сетевого состояния, используйте следующие шаги:
-
Создание зависимости от сетевых событий:
Вам следует добавитьBindsTo
в секцию[Unit]
, чтобы служба автоматически перезапускалась при изменении состояния сети.Для этого измените секцию
[Unit]
вашего файла, добавив следующую строку:BindsTo=network-online.target Requires=network-online.target
-
Использование
network-online.target
:
Убедитесь, что ваша служба будет запускаться только после того, как сеть станет доступной. Это поможет избежать попыток подключения, когда сеть временно недоступна.
Теперь ваш файл auto_vpn.service
должен выглядеть следующим образом:
[Unit]
Description=Connect to Proton-VPN
After=graphical-session.target
Wants=graphical-session.target
BindsTo=network-online.target
Requires=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes
[Install]
WantedBy=default.target
Завершение
Теперь, когда вы перезагрузите систему, служба будет автоматически запускаться и повторно подключаться к VPN при восстановлении сетевого соединения. Убедитесь в корректности пути к protonvpn-cli
, если вы установили его в другом месте.
Проверка статуса службы
Вы можете проверить статус работы вашей службы с помощью следующей команды:
systemctl --user status auto_vpn.service
Это поможет вам убедиться, что служба функционирует корректно и подключение к VPN осуществляется автоматически.