Qual é a diferença entre o serviço OpenVPN e o daemon OpenVPN?

1

Eu estou querendo executar um cliente OpenVPN em uma máquina Debian. Eu posso ver que o serviço está sendo executado:

# 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 começar 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 ele está sendo executado como esperado por meio do registro, bem como verificar meu IP da WAN.

No entanto, posso parar 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 recebendo 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 uns dos outros?

Meu objetivo é que o OpenVPN seja executado em segundo plano quando o computador é inicializado e para que ele continue sendo executado indefinidamente. Eu estava indo apenas para definir o serviço para ser executado na inicialização, mas as ações acima estão agora me confundindo sobre como realizar isso ...

Atualização: aqui está o 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
    
por Jake Wilson 28.12.2017 / 21:20

1 resposta

4

Um 'serviço' neste contexto é uma interface para controlar daemons, iniciar, parar, recarregar, etc. Um serviço openvpn é apenas uma instância do openvpn sob o controle do 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 como openvpn @ < config > .service, onde < config > é o nome do arquivo .conf, por exemplo %código%. Depois de criar a configuração, você precisa ativá-la como um serviço

systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].

O [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 como normal

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

etc.

    
por 28.12.2017 / 22:22