Estou querendo rodar um cliente OpenVPN em uma máquina Debian. Eu posso ver que o serviço está em execução:
# 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)
E eu posso iniciar o OpenVPN através do daemon para que ele seja executado em segundo plano
# sudo openvpn --config /etc/openvpn/client.conf --daemon
Posso confirmar que está funcionando conforme o esperado por meio do registro e da verificação do meu IP da WAN.
No entanto, posso interromper o serviço 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)
Mas o daemon ainda está sendo executado em segundo plano e ainda estou conectado à VPN e ainda estou obtendo um endereço IP de VPN público.
Então, qual é a diferença entre o serviço e o daemon? Eles não são dependentes um do outro?
Meu objetivo é ter o OpenVPN rodando em segundo plano quando o computador for inicializado e continuar rodando indefinidamente. Eu ia apenas configurar o serviço para ser executado na inicialização, mas as ações acima agora estão me confundindo sobre como fazer isso ...
Atualização: Aqui está este arquivo:/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
Um 'serviço' neste contexto é uma interface para controlar daemons, iniciar, parar, recarregar etc. Um serviço openvpn é apenas uma instância de openvpn sob o controle de systemd.
Parece que você não ativou uma configuração de serviço openvpn para client.conf. O Systemd pode controlar várias instâncias do openvpn de forma independente. Estes são nomeados individualmente openvpn@<config>.service onde <config> é o nome do arquivo .conf, por exemplo
[email protected]
. Depois de criar a configuração, você precisa habilitá-la como um serviçoO
/lib/systemd/system/[email protected]
é um arquivo de modelo que usa argumentos passados para executar uma instância especificada.Para controlar uma instância específica, você emite comandos systemctl normalmente
etc.