Ok, então eu tenho procurado na web por soluções para esse problema, sem respostas que parecem funcionar para mim. Espero que alguém possa me ajudar. Estou apenas tentando configurar o cliente OpenVPN.
Estou correndo CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
e acabei de usar systemd
. A mudança foi suave o suficiente, mas agora não consigo fazer meu cliente OpenVPN usar o systemd. Tentei seguir esses tutoriais de configuração, mas nada funciona.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- E olhou para um monte de outros guias diferentes.
Eu posso abrir o túnel na linha de comando openvpn /etc/openvpn/vpn.conf
. Então, eu sei que o arquivo de configuração é bom, estava funcionando com o sysvinit, então não estou surpreso. Em seguida, tento apenas fazer um status systemctl status [email protected]
resultando em:
$ sudo systemctl status [email protected]
[email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
Percebi que preciso fazer algumas configurações para os serviços. Quero ser solicitada uma senha assim que eu segui este guia para criar uma [email protected]
no /etc/systemd/system/
. Mas reiniciar o serviço OpenVPN ainda não solicita uma senha.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Os tutoriais do Fedora seguem as etapas de criação de links simbólicos, mas não criam nenhum arquivo .service nas orientações.
Que peça estou faltando? Preciso criar um [email protected]? Se sim, onde exatamente eu o coloco? Sinto que não deve ser tão difícil, mas não consigo encontrar nenhuma solução que funcione para mim. Fico feliz em fornecer mais informações necessárias.
Solução
-rw-r--r-- 1 root root 319 Aug 7 10:42 [email protected]
[Unit]
Description=OpenVPN connection to %i
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
[Install]
WantedBy=multi-user.target
[email protected] (END)
Link simbólico:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 [email protected] -> /lib/systemd/system/[email protected]
Solicitar senha
Tudo está funcionando agora, exceto por ser solicitada uma senha para conectar-se. Eu tentei esta solução . Ajustei o arquivo de cima um pouco e adicionei um script Expect como no exemplo. Trabalhando como um encanto! Meus arquivos estão abaixo.
Linhas modificadas acima /lib/systemd/system/[email protected]
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --management localhost 5559 --management-query-passwords --management-forget-disconnect --config /etc/openvpn/%i.conf
ExecStartPost=/usr/bin/expect /lib/systemd/system/openvpn_pw.exp
Espere script /lib/systemd/system/openvpn_pw.exp
. Certifique-se de fazer o seguinte:
chmod +x
no script.- ter
telnet
instalado
Código do script expect:
#!/usr/bin/expect
set pass [exec /bin/systemd-ask-password "Please insert Private Key password: "]
spawn telnet 127.0.0.1 5559
expect "Enter Private Key Password:"
send "password 'Private Key' $pass\r"
expect "SUCCESS: 'Private Key' password entered, but not yet verified"
send "exit\r"
expect eof
Observe que a solução acima registra sua senha digitada em texto sem formatação nos seguintes logs /var/log/syslog
e/var/log/daemon.log
fonte
[email protected]
arquivo?journalctl -b -m
descubra por que o OpenVPN saiu. Um desses lugares deve conter as mensagens de erro reais. (Ou mesmojournalctl -b -m _EXE=/usr/sbin/openvpn
deve fornecer apenas mensagens OpenVPN).Respostas:
Eu acho que a configuração do Debian OpenVPN com systemd está atualmente um pouco quebrada. Para fazê-lo funcionar em minhas máquinas, tive que:
Crie
Liguei para o meu arquivo/etc/systemd/system/[email protected]
(o diretório) e coloque nele um novo arquivo com isso:local-after-ifup.conf
. Precisa terminar com.conf
. (Este é o bit que está um pouco quebrado no momento.)Crie um arquivo em
Este é o bug Debian 741938 (corrigido em 2.3.3-1)./etc/tmpfiles.d
(eu chamei meulocal-openvpn.conf
) com o conteúdo:Crie um link simbólico
multi-user.target.wants
(da maneira mais fácilsystemctl enable openvpn@CONF_NAME.service
). Por exemplo, se você tiver/etc/openvpn/foo.conf
, você usaria[email protected]
.Se você também tiver o script init do SysV aparecendo no systemd, desative-o. Este é o bug do Debian 700888 (corrigido em 2.3.3-1).
NOTA: 2.3.3-1 ou posterior ainda não está em teste , embora esteja instável.
fonte
/etc/init.d/openvpn
; O systemd, por padrão, executa aqueles como o sysv init faria. É isso queopenvpn.service
você tem; você precisa desativá-lo (systemctl disable
). O arquivo/lib/systemd/system/[email protected]
existe no seu sistema?ln -s /lib/systemd/system/[email protected] /etc/systemd/system/multi-user.target.wants/[email protected]
/etc/init.d/openvpn script.
/etc/openvpn/
.Edit
/etc/default/openvpn
. Remova o comentário:Corra
systemctl daemon-reload
.service openvpn start
.fonte
client.conf
, agora com isso minha única configuração é executada. Obrigado!Esse tipo de arquivo de unidade é um serviço instanciado - mais detalhes estão disponíveis aqui
A seguir está o arquivo da unidade
openvpn
no CentOS 7:e reside como
/usr/lib/systemd/system/openvpn@service
. O%i
arquivo é substituído pela sequência após o@
nome da unidade.Como o arquivo de configuração está
/etc/openvpn/myopenvpn.conf
, o serviço é iniciado com:fonte
/usr/lib/systemd/user/
mais nada no/usr/lib/systemd
nível./lib/systemd/system/
? Parece que tenho os dois no meu sistema, com conteúdo idêntico (e eles não são links simbólicos!).Você precisa criar o arquivo de serviço ativando
openvpn@<configuration>.service
.Por exemplo, se o arquivo de configuração for
/etc/openvpn/client.conf
, o nome do serviço será[email protected]
.A partir do Arch Wiki
fonte
/etc/openvpn/vpn.conf
systemctl start [email protected]
não funciona? Isso deve funcionar ... #O openvpn @ .service evoluiu bastante entre os Debians 8 e 9. O pacote original para Jessie, por exemplo, falha
systemctl reload openvpn@
. Para corrigi-los, a versão Stretch introduz 10 novas diretivas no arquivo systemd, inclusivePIDFile=
para fazer o recarregamento funcionar novamente.Para os usuários do estiramento, eu sugiro ir para o backport, e se não for possível fazer isso, pelo menos, obter o arquivo systemd de https://packages.debian.org/jessie-backports/openvpn e extrato
debian/[email protected]
em/etc/systemd/system/[email protected]
e desfrutar de uma melhor funcionalidade e segurança.fonte
A solução adequada seria usar os
systemd-ask-password
" agentes de senha " do systemd , que fornecem uma maneira integrada do sistema de canalizar senhas / frases de acesso aos serviços.Você precisará do OpenVPN 2.3.0 ou mais recente para fazer isso.
fonte
Em uma nova instalação do Jessie_8.0.0, eu fiz:
/etc/openvpn/cluster.conf
(mais*.key
e*.crt
) do wheezyAUTOSTART="all"
em/etc/default/openvpn
- Eu acho que isso não teve efeito/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart [email protected]
Agora o túnel está aberto - verei o que acontecerá após uma reinicialização, mas não posso reinicializar neste momento
fonte