소스에서 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에 이미 구성이 있다고 가정합니다.