좋아, 그래서 나에게 효과가없는 것처럼이 문제에 대한 해결책을 찾기 위해 웹을 검색했습니다. 누군가가 나를 도울 수 있기를 바랍니다. OpenVPN 클라이언트 만 구성하려고합니다.
나는 달리고 CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
있으며 방금 사용으로 전환했습니다 systemd
. 전환이 순조롭게 진행되었지만 이제는 OpenVPN 클라이언트가 systemd를 사용하여 올 수 없습니다.이 구성 자습서를 따라 시도했지만 아무것도 작동하지 않습니다.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- 그리고 다른 많은 가이드들을 보았습니다.
명령 줄에서을 사용하여 터널을 가져올 수 있습니다 openvpn /etc/openvpn/vpn.conf
. 그래서 구성 파일이 훌륭하다는 것을 알고 있습니다 .sysvinit과 잘 작동했기 때문에 놀라지 않았습니다. 그런 다음 상태를 유지하려고 시도합니다 systemctl status openvpn@vpn.service
.
$ sudo systemctl status openvpn@vpn.service
openvpn@vpn.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
서비스를 설정해야한다는 것을 깨달았습니다. 비밀번호를 입력하라는 메시지가 표시되어이 안내서에 따라 openvpn@.service
in 을 만들었 습니다 /etc/systemd/system/
. 그러나 OpenVPN 서비스를 다시 시작해도 여전히 암호를 묻는 메시지가 표시되지 않습니다.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Fedora 튜토리얼은 심볼릭 링크를 만드는 단계를 거치지 만 연습에서는 .service 파일을 만들지 않습니다.
내가 놓친 부분은 무엇입니까? openvpn@vpn.service를 만들어야합니까? 그렇다면 정확히 어디에 배치해야합니까? 나는 그렇게 어렵지 않아야한다고 생각하지만 나에게 맞는 해결책을 찾지 못하는 것 같습니다. 필요한 정보를 더 제공해 드리겠습니다.
해결책
-rw-r--r-- 1 root root 319 Aug 7 10:42 openvpn@.service
[Unit]
Description=OpenVPN connection to %i
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
[Install]
WantedBy=multi-user.target
openvpn@.service (END)
심 링크 :
lrwxrwxrwx 1 root root 36 Aug 7 10:47 openvpn@vpn.service -> /lib/systemd/system/openvpn@.service
비밀번호 묻기
연결할 암호를 묻는 메시지를 제외하고 모든 것이 작동합니다. 이 솔루션을 시도 했습니다 . 위의 파일을 약간 조정 하고 예제와 같이 Expect 스크립트를 추가했습니다 . 매력처럼 일하는! 내 파일은 아래와 같습니다.
위의 수정 된 줄 /lib/systemd/system/openvpn@.service
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --management localhost 5559 --management-query-passwords --management-forget-disconnect --config /etc/openvpn/%i.conf
ExecStartPost=/usr/bin/expect /lib/systemd/system/openvpn_pw.exp
스크립트를 기대하십시오 /lib/systemd/system/openvpn_pw.exp
. 다음을 수행하십시오.
chmod +x
스크립트에서.- 적이
telnet
설치
expect 스크립트 코드 :
#!/usr/bin/expect
set pass [exec /bin/systemd-ask-password "Please insert Private Key password: "]
spawn telnet 127.0.0.1 5559
expect "Enter Private Key Password:"
send "password 'Private Key' $pass\r"
expect "SUCCESS: 'Private Key' password entered, but not yet verified"
send "exit\r"
expect eof
위의 솔루션에 다음과 같은 로그에 일반 텍스트로 입력 된 암호를 기록 않는다는 것을 주목해야한다 /var/log/syslog
와/var/log/daemon.log
journalctl -b -m
OpenVPN이 종료 된 이유를 찾으십시오. 이러한 장소 중 하나에 실제 오류 메시지가 포함되어야합니다. 또는 journalctl -b -m _EXE=/usr/sbin/openvpn
OpenVPN 메시지 만 제공해야합니다.
openvpn@.service
파일은 어떻게 생겼습니까?