Ok, he estado buscando en la web soluciones a este problema sin que las respuestas me funcionen. Espero que alguien pueda ayudarme. Solo estoy tratando de configurar el cliente OpenVPN.
Estoy corriendo CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
y acabo de cambiar a usar systemd
. El cambio se realizó sin problemas, pero ahora no puedo hacer que mi cliente OpenVPN aparezca usando systemd. He intentado seguir estos tutoriales de configuración, pero nada funciona.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- Y miró un montón de otras guías diferentes.
Puedo abrir el túnel desde la línea de comando con openvpn /etc/openvpn/vpn.conf
. Así que sé que el archivo de configuración es bueno, estaba funcionando bien con sysvinit, así que no me sorprende. Luego intento hacer un estado con el systemctl status [email protected]
resultado de:
$ sudo systemctl status [email protected]
[email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
Me di cuenta de que necesito hacer una configuración para los servicios. Quiero que se le solicite una contraseña así que seguí esta guía para crear una [email protected]
en /etc/systemd/system/
. Pero reiniciar el servicio OpenVPN aún no solicita una contraseña.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Los tutoriales de Fedora siguen los pasos para crear enlaces simbólicos, pero no crean ninguno de los archivos .service en los recorridos.
¿Qué pieza me estoy perdiendo? ¿Necesito crear un servicio [email protected]? Si es así, ¿dónde lo coloco exactamente? Siento que no debería ser tan difícil, pero parece que no puedo encontrar ninguna solución que funcione para mí. Me complace proporcionar más información que sea necesaria.
Solución
-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)
Enlace simbólico:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 [email protected] -> /lib/systemd/system/[email protected]
Solicitar contraseña
Todo funciona ahora, excepto que se le solicite una contraseña para conectarse. He intentado esta solución . Modifiqué el archivo desde arriba solo un poco, y agregué un script de Expect como en el ejemplo. Trabajando como un encanto! Mis archivos están abajo.
Líneas modificadas de lo anterior /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
Esperar guión /lib/systemd/system/openvpn_pw.exp
. Asegúrese de hacer lo siguiente:
chmod +x
en el guión- Han
telnet
instalado
Código del script de espera:
#!/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
Cabe señalar que la solución anterior registra su contraseña ingresada en texto sin formato en los siguientes registros /var/log/syslog
y/var/log/daemon.log
fuente
[email protected]
archivo?journalctl -b -m
descubra por qué OpenVPN salió. Uno de esos lugares debe contener los mensajes de error reales. (O inclusojournalctl -b -m _EXE=/usr/sbin/openvpn
debería dar solo mensajes OpenVPN).Respuestas:
Creo que la configuración de Debian OpenVPN con systemd está actualmente un poco rota. Para que funcione en mis máquinas tuve que:
Cree
Llamé a mi archivo/etc/systemd/system/[email protected]
(el directorio) y coloque en él un nuevo archivo con esto:local-after-ifup.conf
. Tiene que terminar con.conf
. (Este es el bit que actualmente está un poco roto).Crea un archivo en
Este es el error de Debian 741938 (corregido en 2.3.3-1)./etc/tmpfiles.d
(llamé el míolocal-openvpn.conf
) con el contenido:Cree un enlace simbólico en
multi-user.target.wants
(la forma más fácil essystemctl enable openvpn@CONF_NAME.service
) Por ejemplo, si lo tiene/etc/openvpn/foo.conf
, lo usaría[email protected]
.Si también tiene el script de inicio SysV que se muestra en systemd, desactívelo. Este es el error Debian 700888 (corregido en 2.3.3-1).
NOTA: 2.3.3-1 o posterior aún no se está probando , aunque es inestable.
fuente
/etc/init.d/openvpn
; systemd por defecto ejecuta aquellos como lo haría sysv init. Eso es loopenvpn.service
que tienes; necesitas deshabilitarlo (systemctl disable
). ¿Existe el archivo/lib/systemd/system/[email protected]
en su sistema?ln -s /lib/systemd/system/[email protected] /etc/systemd/system/multi-user.target.wants/[email protected]
/etc/init.d/openvpn script.
/etc/openvpn/
.Editar
/etc/default/openvpn
. Descomenta esto:Ejecutar
systemctl daemon-reload
.service openvpn start
.fuente
client.conf
, ahora con esto solo se ejecuta mi configuración única. ¡Gracias!Este tipo de archivo de unidad es un servicio instanciado; más detalles están disponibles aquí
El siguiente es el archivo de unidad para
openvpn
CentOS 7:y reside como
/usr/lib/systemd/system/openvpn@service
. El%i
en el archivo se reemplaza con la cadena después del@
nombre de la unidad.Como el archivo de configuración está en
/etc/openvpn/myopenvpn.conf
, el servicio se inicia con:fuente
/usr/lib/systemd/user/
nada más en el/usr/lib/systemd
nivel./lib/systemd/system/
? Parece que tengo ambos en mi sistema, con contenidos idénticos (¡y no son enlaces simbólicos!).Debe crear el archivo de servicio habilitándolo
openvpn@<configuration>.service
.Por ejemplo, si el archivo de configuración es
/etc/openvpn/client.conf
, el nombre del servicio es[email protected]
.Del Arch Wiki
fuente
/etc/openvpn/vpn.conf
systemctl start [email protected]
Tampoco funciona? Eso debería funcionar ...El openvpn @ .service ha evolucionado mucho entre Debians 8 y 9. El paquete original para Jessie, por ejemplo, no lo hace
systemctl reload openvpn@
. Para solucionar estos problemas, la versión Stretch introduce 10 nuevas directivas en el archivo systemd, que incluyenPIDFile=
hacer que la recarga vuelva a funcionar.Para los usuarios de estiramiento, sugeriría ir por el backport, y si no es posible hacer eso, por lo menos conseguir el systemd-archivo desde https://packages.debian.org/jessie-backports/openvpn y el extracto
debian/[email protected]
en/etc/systemd/system/[email protected]
y disfrutar de una mejor Funcionalidad y seguridad.fuente
La solución adecuada sería hacer uso de systemd's
systemd-ask-password
/ " Password Agents ", que proporciona una forma integrada de systemd para canalizar contraseñas / frases de acceso a los servicios.Necesitará OpenVPN 2.3.0 o posterior para hacer esto.
fuente
En una nueva instalación de Jessie_8.0.0 hice:
/etc/openvpn/cluster.conf
(más*.key
y*.crt
) de WheezyAUTOSTART="all"
en/etc/default/openvpn
- creo que esto no tuvo efecto/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart [email protected]
Ahora el túnel está arriba: veré qué sucederá después de un reinicio, pero no puedo reiniciar en este momento
fuente