因此,我一直在查看基于 Debian 9 的服务器上的 openvpn 配置,并在 openvpn 守护进程的 systemd 单元文件中发现了一些我无法解释的内容。守护进程本身正在启动并正常工作,但我不明白为什么......让我解释一下:)
所以我已经安装了 openvpn 并在中进行了正确的配置/etc/openvpn/server.conf文件。到目前为止没有任何问题。
然而,显然有两个 systemd 单元正在为 openvpn 运行,即开放VPN服务和[电子邮件受保护]。后者似乎是真正接受传入 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
嗯不错。所以这只运行/bin/true。那么到底是什么开始了openvpn@服务器守护进程?我知道这个的单元文件是/lib/systemd/[电子邮件受保护]但我在我的系统上找不到任何线索来说明究竟是什么运行了这个单元文件。 (我希望在下面找到一个符号链接/etc/systemd/系统某处,但没有。)该文件的内容是:
[Unit]
Description=OpenVPN connection to %i
PartOf=openvpn.service
ReloadPropagatedFrom=openvpn.service
Before=systemd-user-sessions.service
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
[Service]
PrivateTmp=true
KillMode=mixed
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid
PIDFile=/run/openvpn/%i.pid
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
ProtectSystem=yes
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
[Install]
WantedBy=multi-user.target
所以这个单元文件比 openvpn.service 文件有更多的内容。但是什么开始了它呢?我注意到部分=openvpn.service上面文件中的一部分,但是在手册页中查找它的含义并没有让我变得更明智。
我会继续搜索,因为我只想知道是什么让这件事发生!
如果您对这个特定单元文件如何运行或启动它有任何线索,请告诉我:)
答案1
你需要知道两件事:
- 还有几个无证的systemd 保存单元文件的目录。
- Debian 和 Ubuntu 提供发电机其中
/lib/systemd/system-generators/openvpn-generator
将“想要”符号链接放入这些未记录的目录之一,每个*.conf
文件对应/etc/openvpn
.
符号链接导致openvpn.service
其行为像一个目标,并且“想要”所有的各种模板实例化;正如服务单元开头的评论所解释的那样。
请注意,Debian 和 Ubuntu 与 OpenVPN 人们的观点不一致他们自己systemd 的供应,这是在 Arch、CentOS、Fedora 等上使用的。 Debian 和 Ubuntu 完全取代了 OpenVPN 本身提供的所有功能,以及它们自己的 systemd 功能。因此,在阅读 doco 时,至少要注意 doco 假设您拥有的操作系统。
OpenVPN 的人们习惯提供[email protected]
模板单元,但不提供生成器或openvpn.service
目标即服务。为此,人们必须使用普通的 systemd 机制显式地启用和禁用自己,并且它们是“通缉的”openvpn@name
直接地通过multi-user.target
,而不是通过中介目标即服务。
OpenVPN 的人们如今提供不同的[email protected]
模板[email protected]
,继续不提供生成器或openvpn.service
目标即服务,并期望您使用普通的 systemd 机制显式启用和禁用自己来执行此操作。文件也已移出和移入和。openvpn-service@name
openvpn-client@name
*.conf
/etc/openvpn
/etc/openvpn/client
/etc/openvpn/server
进一步阅读
- 乔纳森·德博因·波拉德 (2016)。 ”
systemd.unit
手册页中缺少系统搜索路径“。systemd
doco勘误表。常见答案。 - https://unix.stackexchange.com/a/233581/5132
- https://unix.stackexchange.com/a/206490/5132
- ”系统服务配置”。开放VPN。拱门维基。
- ”系统服务配置”。开放VPN。抛物线维基。
- 克里斯蒂安·黑塞 (2016-12-30)。OpenVPN 2.4.0 更新需要管理交互。拱门新闻。
- https://askubuntu.com/a/640026/43344