Я хочу запустить клиент 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
и т.п.