자체 컴파일된 OpenVPN이 systemd에서 시작되지 않습니다.

자체 컴파일된 OpenVPN이 systemd에서 시작되지 않습니다.

소스에서 openvpn을 컴파일하고 openvpn --version반환을 실행했습니다.

OpenVPN 2.4.4 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Nov 19 2017
library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08

/etc/openvpn/server.conf몇 가지 기본 설정으로 파일을 만들었습니다 . 그러나 시작하려고 하면 sudo systemctl start openvpn@server다시 발생합니다 .

Failed to start [email protected]: Unit [email protected] not found.

그리고 sudo systemctl status openvpn다음을 반환합니다:

● openvpn.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead) since Sun 2017-11-19 14:21:06 HKT; 4 days ago
 Main PID: 1502 (code=exited, status=0/SUCCESS)

이로 인해 openvpn 서비스가 등록되지 않은 것 같습니다.

확인해 보니 파일이 /lib/systemd/system/없지만 있습니다. 내가 이해한 바에 따르면 이는 내가 대신 컴파일하고 있기 때문입니까 ?openvpn.service/etc/systemd/system/apt-get install openvpn

자체 컴파일된 openvpn을 서비스로 추가하는 방법을 제안할 수 있는 사람이 있습니까?

소스에서 처음으로 컴파일하므로 조언이나 팁을 주시면 감사하겠습니다!

편집 1:

openvpn 서버를 시작하고 클라이언트를 여기에 연결할 수 있습니다(서비스만 작동하지 않는 것 같습니다).

sudo openvpn /etc/openvpn/server.conf

답변1

두 개의 파일을 수동으로 생성하여 작동하도록 만들었습니다 /lib/systemd/system.

첫 번째는 다음과 같습니다 openvpn.service.

[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

두 번째는 다음과 같습니다 [email protected].

[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/local/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --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

생성한 후 sudo systemctl daemon-reload새로운 변경 사항을 적용하여 다시 로드하세요.

일반적으로 이러한 파일은 공식 저장소에서 openvpn을 설치한 것과 동일하며, 유일한 차이점은 컴파일된 로컬 openVPN을 가리킨다는 점 ExecStart=/usr/sbin/openvpn입니다 .ExecStart=/usr/local/sbin/openvpn

편집: openvpn 2.4+를 사용하는 경우 두 번째 파일에서 PIDFile=/run/openvpn/%i.pid및를 제거 --writepid /run/openvpn/%i.pid하면 부팅 시 서버가 시작되지 않습니다. 그것을 발견여기

답변2

Ilya의 답변 업데이트 (코멘트할 평판이 없습니다)

제공된 서비스를 템플릿(단일 서비스 파일)으로 사용하여 Ubuntu 16.04에서 실행하고 두 가지를 변경했습니다.

sudo cp ~/Downloads/openvpn-2.4.8/distro/systemd/[email protected] /lib/systemd/system/[email protected]

sudo vi /lib/systemd/system/[email protected]

변화:

  • @sbindir@에서 /usr/local/sbin/으로
  • 유형=알림 유형=단순

새로고침하고 시작하세요

sudo systemctl daemon-reload
service [email protected] restart
service [email protected] status

이는 /etc/openvpn/client/client.service.conf에 이미 구성이 있다고 가정합니다.

관련 정보