Назад | Перейти на главную страницу

В чем разница между сервисом OpenVPN и демоном OpenVPN?

Я хочу запустить клиент OpenVPN на машине Debian. Я вижу, что служба работает:

# sudo service openvpn status
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
   Active: active (exited) since Thu 2017-12-28 19:01:14 UTC; 1h 8min ago
  Process: 19416 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 19416 (code=exited, status=0/SUCCESS)

И я могу запустить OpenVPN через демон, чтобы он работал в фоновом режиме

# sudo openvpn --config /etc/openvpn/client.conf --daemon

Я могу подтвердить, что он работает, как ожидалось, с помощью журнала, а также проверки моего WAN IP.

Однако я могу остановить службу OpenVPN ...

# sudo service openvpn stop
# sudo service openvpn status
● openvpn.service - OpenVPN service
   Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Thu 2017-12-28 20:10:00 UTC; 37s ago
  Process: 19416 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 19416 (code=exited, status=0/SUCCESS)

Но демон все еще работает в фоновом режиме, и я все еще подключен к VPN, и я все еще получаю общедоступный IP-адрес VPN.

Так в чем же разница между сервисом и демоном? Они не зависят друг от друга?

Моя цель состоит в том, чтобы OpenVPN работал в фоновом режиме при загрузке компьютера и чтобы он продолжал работать бесконечно. Я просто собирался настроить запуск службы при загрузке, но приведенные выше действия теперь сбивают меня с толку, как это сделать ...

Обновление: вот этот файл: /lib/systemd/system/openvpn.service

# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target

«Сервис» в этом контексте - это интерфейс для управления демонами, запуском, остановкой, перезагрузкой и т. Д. Сервис openvpn - это просто экземпляр openvpn под управлением systemd.


Похоже, вы не включили конфигурацию службы openvpn для client.conf. Systemd может независимо управлять несколькими экземплярами openvpn. Они называются индивидуально openvpn @ <config> .service, где <config> - это имя файла .conf, например. openvpn@client.service. После того, как вы создали конфигурацию, вам необходимо включить ее как службу

systemctl enable openvpn@client.service
Created symlink /etc/systemd/system/multi-user.target.wants/openvpn@client.service → /lib/systemd/system/openvpn@.service.

В /lib/systemd/system/openvpn@.service - это файл шаблона, который использует переданные аргументы для запуска указанного экземпляра.

Для управления конкретным экземпляром вы запускаете команды systemctl как обычно

systemctl status openvpn@client
systemctl start openvpn@client
systemctl stop openvpn@client

и т.п.