好的,所以我一直在网上搜索此问题的解决方案,但似乎没有任何答案对我有用。希望有人可以帮助我。我只是想配置 OpenVPN 客户端。
我正在跑步CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux,我刚刚切换到使用systemd. 转换进行得足够顺利,但现在我无法使用 systemd 启动我的 OpenVPN 客户端,我尝试按照这些配置教程进行操作,但没有任何效果。
我可以从命令行使用openvpn /etc/openvpn/vpn.conf. 所以我知道配置文件很好,它与 sysvinit 一起工作得很好,所以我并不感到惊讶。然后我尝试只做一个状态,systemctl status openvpn@vpn.service结果是:
$ sudo systemctl status openvpn@vpn.service
openvpn@vpn.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
Run Code Online (Sandbox Code Playgroud)
我意识到我需要为服务做一些设置。我想被提示输入密码,所以我按照本指南创建了一个openvpn@.servicein /etc/systemd/system/. 但是重新启动 OpenVPN 服务仍然不会提示输入密码。
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Run Code Online (Sandbox Code Playgroud)
Fedora 教程完成了创建符号链接的步骤,但不会在演练中创建任何 .service 文件。
我错过了什么片段?我需要创建一个 openvpn@vpn.service 吗?如果是这样,我应该把它放在哪里?我觉得这不应该这么困难,但我似乎找不到任何适合我的解决方案。我很乐意提供更多需要的信息。
-rw-r--r-- …Run Code Online (Sandbox Code Playgroud) 我正在开发基于 debian 的系统,并且仍在学习systemctl 与 service,但我正在尝试将我的openvpn配置用作解决此问题的用例。
在我当前的设置中,我真的很困惑如何openvpn在启动时启动以及如何管理它们。
在启动时,这些是openvpn已启动的进程:
> ps aux | ag 'openvpn'
nobody 952 0.0 0.0 5800 1108 ? Ss 13:29 0:00 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.conf
root 1537 0.0 0.1 6088 2544 ? Ss 13:30 0:00 /usr/sbin/openvpn --daemon --auth-nocache --config /root/.vpn_conf/pia.ovpn
Run Code Online (Sandbox Code Playgroud)
我仍然不知道是什么控制这些在启动时启动。
第一个 proc 是服务器(我希望禁用它),另一个是我希望保留并继续使用的客户端。
我的理解是可以systemctl用来列出所有服务:
> systemctl list-unit-files --type=service | ag 'openvpn'
openvpn.service disabled
openvpn@.service disabled
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么区别?这两个服务是否控制上述过程?如果它们被禁用,为什么它们仍然在启动时启动?
如果我尝试使用service来获取 的状态openvpn …
我正在使用 debian stable 的服务器上运行多个 openvpn 实例;以及一些客户端作为服务器实例。现在,当这些实例之一失败时,systemd 似乎会杀死并重新启动整个进程组:
5 月 27 日 12:09:44 tritone systemd[1]:openvpn@client_uk.service:主进程退出,代码=退出,状态=1/FAILURE 5 月 27 日 12:09:44 tritone systemd[1]:单元 openvpn@client_uk.service 进入失败状态。 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 连接到 client_rhode... 5 月 27 日 12:10:01 tritone systemd[1]:启动 OpenVPN 连接到 client_uk... 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 连接到 client_ukraine... 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 连接到 server_udp... 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 服务... 5 月 27 日 12:10:01 tritone systemd[1]:启动 OpenVPN …
我有一个 Debian 8 Jessie 服务器,我需要连接到我的家庭网络,我在家里的 pfSense 2.2 盒子上使用 OpenVPN 服务器。我在旧的 Debian 版本下做得很好,所以我猜我错过了 systemd 如何控制服务的新东西......
我有我需要的一切/etc/openvpn/,一个合理的简单设置:
client
dev tun
proto udp
remote home.dynamic-domain.com 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-tun
persist-key
ca /etc/openvpn/ca.crt
cert /etc/openvpn/hostname.crt
key /etc/openvpn/hostname.key
tls-auth /etc/openvpn/tls.key 1
cipher "AES-256-CBC"
comp-lzo
verb 3
Run Code Online (Sandbox Code Playgroud)
并且相关的证书/密钥存在且正确。
手动调出配置效果很好:
~# openvpn --config /etc/openvpn/servervpn.conf
Sat Jun 27 13:26:08 2015 OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 1 2014
Sat Jun 27 13:26:08 2015 library …Run Code Online (Sandbox Code Playgroud) 因此,我一直在查看基于 Debian 9 的服务器上的 openvpn 配置,发现了一些我无法在 openvpn 守护程序的 systemd 单元文件中解释的内容。守护进程本身正在启动并正常工作,但我不知道为什么......让我解释一下:)
所以我已经安装了 openvpn 并在/etc/openvpn/server.conf文件中进行了正确的配置。到目前为止没有任何问题。
但是,显然有两个 systemd 单元正在为 openvpn 运行,即openvpn.service和openvpn@server.service。后者似乎是实际接受传入的 vpn 连接的一种,而前者似乎根本没有做太多事情。它显然只是为了启动后者,我想......
检查/etc/systemd/system/multi-user.target.wants/目录中是否有 openvpn 相关文件只显示 openvpn.service 文件,其中的源文件是指向 /lib/systemd/system 中类似命名文件的符号链接。这个文件的内容是:
# 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
Run Code Online (Sandbox Code Playgroud)
嗯不错。所以这只运行/bin/true。那么究竟是什么启动了openvpn@server守护进程呢?我知道这个单元文件是/lib/systemd/openvpn@.service但我在我的系统上找不到任何线索来确切地运行这个单元文件。(我期待在/etc/systemd/system下找到一个符号链接,但没有。)这个文件的内容是:
[Unit]
Description=OpenVPN connection to %i
PartOf=openvpn.service …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Ubuntu 远程服务器上运行 OpenVPN。我一直在关注这个教程。截至目前,我正处于第 3 步之前,尝试获取“VPN '服务器'正在运行”消息。然而,当我跑步时
service openvpn start
service openvpn status
Run Code Online (Sandbox Code Playgroud)
我得到:
“活动(已退出),代码=已退出,状态=0/成功”响应。
我尝试检查日志:
vim /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
但没有看到任何可疑的东西:
这种行为背后的原因可能是什么?
[Unit]
Description=Simple Openvpn tunnel
[Service]
Type=simple
ExecStart=/usr/sbin/openvpn --config /etc/vpn/config/myclient.ovpn --daemon
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我有这项服务,我也可以启用它,但启动不起作用。状态给了我这个:
? openvpn.service - Simple Openvpn tunnel
Loaded: loaded (/etc/systemd/system/openvpn.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2017-12-08 09:24:32 CET; 3s ago
Process: 29772 ExecStart=/usr/sbin/openvpn --config /etc/vpn/config/client-0-130.ovpn --daemon (code=exited, status=1/FAILURE)
Main PID: 29772 (code=exited, status=1/FAILURE)
Dec 08 09:24:32 s20699657 systemd[1]: Started Simple Openvpn tunnel.
Dec 08 09:24:32 s20699657 systemd[1]: openvpn.service: Main process exited, code=exited, status=1/FAILURE
Dec 08 09:24:32 s20699657 systemd[1]: openvpn.service: Unit entered failed state. …Run Code Online (Sandbox Code Playgroud)