Skip to contentSkip to conversation

systemd: Reworked the systemd unit file to handle server and client configs better

PATCH In review David Sommerseth 2 participants 2 messages Nov 13, 2014 – Nov 24, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 systemd: Reworked the systemd unit file to handle server and client configs better

From: David Sommerseth <[email protected]...>

Systemd can delay starting a service if the network isn't fully available yet. This feature is useful in client configurations, where OpenVPN will not be started before the client can reach the Internet. It is the network service manager which tells systemd if the system is "online" or not.

For server configurations, the OpenVPN should be able to be started, regardless if the system is "online" or not. This is also the old behaviour of most of the old init.d script and the last systemd unit file.

This patch splits the previous systemd unit file into to two files. One which is aimed at clients ([email protected]...) and one for server configurations ([email protected]...). These files will also pick the configurations from different sub-directories. The unit file for openvpn-client@ will use /etc/openvpn/client and the server unit file will use /etc/openvpn/server. This also ensures that config files are not started in the wrong manner.

The arguments given to the openvpn binary have also shifted order, to ensure that some of them cannot be overridden by the config file, such as --daemon and --writepid. For server configurations a --status file is also added with the status format set to 2. This can be overridden by the configuration file.

---
 distro/systemd/{[email protected]... => [email protected]...} | 7 ++++---
 distro/systemd/{[email protected]... => [email protected]...} | 6 +++---
 2 files changed, 7 insertions(+), 6 deletions(-)
 copy distro/systemd/{[email protected]... => [email protected]...} (68%)
 rename distro/systemd/{[email protected]... => [email protected]...} (65%)
distro/systemd/[email protected]... renamed from distro/systemd/[email protected]... +4 -3
similarity index 68%
copy from distro/systemd/[email protected]...
copy to distro/systemd/[email protected]...
index 7cd36c3..56d93a9 100644
@@ -1,6 +1,7 @@
 [Unit]
 Description=OpenVPN tunnel for %I
-After=syslog.target network.target
+After=syslog.target network-online.target
+Wants=network-online.target
 Documentation=man:openvpn(8)
 Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
 Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
@@ -8,8 +9,8 @@ Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
 [Service]
 PrivateTmp=true
 Type=forking
-PIDFile=/var/run/openvpn/%i.pid
-ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
+PIDFile=/var/run/openvpn/client_%i.pid
+ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/client --config %i.conf --daemon --writepid /var/run/openvpn/client_%i.pid
 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
 LimitNPROC=10
 DeviceAllow=/dev/null rw
distro/systemd/[email protected]... renamed from distro/systemd/[email protected]... +3 -3
similarity index 65%
rename from distro/systemd/[email protected]...
rename to distro/systemd/[email protected]...
index 7cd36c3..c4c9a12 100644
@@ -1,5 +1,5 @@
 [Unit]
-Description=OpenVPN tunnel for %I
+Description=OpenVPN service for %I
 After=syslog.target network.target
 Documentation=man:openvpn(8)
 Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
@@ -8,8 +8,8 @@ Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
 [Service]
 PrivateTmp=true
 Type=forking
-PIDFile=/var/run/openvpn/%i.pid
-ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
+PIDFile=/var/run/openvpn/server_%i.pid
+ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/server --status /var/run/openvpn/server_%i-status.log --status-version 2 --config %i.conf --daemon --writepid /var/run/openvpn/server_%i.pid
 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
 LimitNPROC=10
 DeviceAllow=/dev/null rw
Signature · 1 line
1.8.3.1
#1 lore raw

ACK. Your patch has been applied to the master and release/2.3 branch.

commit 3341a98c2852d1d0c1eafdc70a3bdb218ec29049 (master) commit 28bd79ac980488dbfce2e8136287e38c6f35a043 (release/2.3)

Author: David Sommerseth
Date:   Thu Nov 13 15:43:37 2014 +0100
     systemd: Reworked the systemd unit file to handle server and client configs better

     Signed-off-by: David Sommerseth <[email protected]...>
     Acked-by: Gert Doering <[email protected]...>
     Message-Id: <[email protected]...>
     URL: http://article.gmane.org/gmane.network.openvpn.devel/9222
     Signed-off-by: Gert Doering <[email protected]...>

--
kind regards,

Gert Doering