OpenVPN 시스템 시간 초과 오류가 발생했지만 작동합니다.

OpenVPN 시스템 시간 초과 오류가 발생했지만 작동합니다.

다음 설정이 포함된 /lib/systemd/system/openvpn.service 파일이 있습니다.

[Unit]
Description=OpenVPN client
After=network.target

[Service]
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --dameon --writepid /var/run/openvpn/openvpn.pid --config /etc/openvpn/pia/Mexico.ovpn
ExecStop=-/bin/kill -TERM $MAINPID
Restart=on-failure


[Install]
WantedBy=multi-user.target

systemctl start openvpn을 실행할 때마다 다음과 같은 이상한 오류가 발생합니다.

Job for openvpn.service failed because a timeout was exceeded. See "systemctl status openvpn.service" and "journalctl -xe" for details.

그런데 퍼블릭 IP를 확인해보면 VPN IP가 나와요. 하지만 몇 초마다 바뀌는데 OpenVPN이 재부팅되기 때문인 것 같아요...

이 오류 메시지에 대해 명령을 실행하면 다음이 표시됩니다.

Jun 19 04:29:33 test systemd[1]: openvpn.service: PID file /var/run/openvpn/.pid not readable (yet?) after start: No such file or directory

/var/run/openvpn에서 ls -l 출력:

-rw-r--r-- 1 root root 5 Jun 19 04:32 openvpn.pid

그래서 무엇이 잘못되었을 수 있는지 이해하지 못합니까? 운영 체제는 소스에서 컴파일된 OpenVPN 2.4.2가 포함된 Ubuntu 16.04입니다. Mexico.conf는 내 conf 파일입니다. .ovpn을 .conf로 이름을 바꿨습니다.

PIDFILE을 다음으로 변경하면 PIDFile=/var/run/openvpn/openvpn.pid완전히 부팅되지 않습니다 .

이 설정을 가이드의 어딘가에 복사했는데 이름이 지정되면 작동합니다. [이메일 보호됨]하지만 동일한 설정에서 openvpn.service라는 이름을 지정하면 위의 오류가 발생합니다. 특별한 이유가 있나요? 설정은 다음과 같습니다.

[Unit]
Description=OpenVPN client
After=network.target

[Service]
RuntimeDirectory=openvpn
PrivateTmp=true
KillMode=mixed
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/openvpn.pid --cd /etc/openvpn/pia/ --config Mexico.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
Restart=on-failure
RestartSec=3
ProtectSystem=yes
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw


[Install]
WantedBy=multi-user.target

이름을 지정하면 이러한 설정이 작동하는 것으로 나타났습니다.[이메일 보호됨]하지만 여전히 다음과 같은 치명적이지 않은 오류가 발생합니다.

ERROR: Linux route add command failed: external program exited with error status: 7

WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this

답변1

귀하의 서비스가 불평하는 이유는 수신하지 못한 매개변수가 필요하기 때문입니다. 매개변수의 위치는 다음과 같습니다.[이메일 보호됨]어디서나 볼 수 있는 파일%나, 특히 라인에서

 PIDFile=/var/run/openvpn/%i.pid

이 내용도 반영되어야 합니다.실행 시작교체할 라인 아래--writepid /var/run/openvpn/openvpn.pid무슨 일이 일어났어야 했는지--writepid /run/openvpn/%i.pid.

서비스를 사용하는 올바른 방법.[이메일 보호됨]매개변수를 전달하면 됩니다. 예를 들면

 systemctl enable [email protected]
 systemctl start  [email protected]

이 간단한 예에서는 전달된 매개변수(고객)는 프로세스의 PID를 저장하는 파일의 이름일 뿐이므로 원하는 대로 이름을 지정할 수 있습니다. 서비스 파일의 이름을 다음으로 바꾸십시오./lib/systemd/시스템/[이메일 보호됨]확신합니다. 설치했을 때와 마찬가지로 잘 작동할 것입니다.

openvpn이 여전히 작동하는 이유는 실제로 당신이 놓친 유일한 것은 openvpn 구성이 아니라 PID 파일의 이름입니다.

다른 두 오류의 경우 두 번째 오류는 경고이므로 주의하세요(= 사용인증 노캐시구성 파일의 옵션). 두 번째는 진단을 위해 더 많은 정보가 필요합니다.전체 오류 메시지,오픈VPN구성 파일 및 라우팅 테이블(IP 경로 표시)뒤쪽에VPN 설정 후.

관련 정보