소스에서 openvpn을 컴파일하고 openvpn --version
return을 실행했습니다.
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에 이미 구성이 있다고 가정합니다.