좋아, 그래서 나에게 효과가없는 것처럼이 문제에 대한 해결책을 찾기 위해 웹을 검색했습니다. 누군가가 나를 도울 수 있기를 바랍니다. 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
답변
systemd를 사용한 데비안 OpenVPN 설정은 현재 약간의 고장이라고 생각합니다. 내 컴퓨터에서 작동하게하려면 :
-
/etc/systemd/system/openvpn@.service.d
(디렉토리)를 생성 하고 다음과 같이 새 파일을 배치하십시오.[단위] 요구 사항 = networking.service 후 = networking.service
나는 나의 파일을 불렀다
local-after-ifup.conf
. 로 끝나야합니다.conf
. (이것은 현재 조금 엉망인 비트입니다.) -
내용 으로
/etc/tmpfiles.d
(내 이름 은)에 파일을 만듭니다local-openvpn.conf
.# 타입 경로 모드 UID GID Age Argument d / run / openvpn 0755 루트 루트--
이것은 데비안 버그 741938입니다 (2.3.3-1에서 수정 됨).
-
에
multi-user.target.wants
가장 쉬운 방법으로 심볼릭 링크를 만드십시오.systemctl enable openvpn@CONF_NAME.service
예를 들어 있다면을/etc/openvpn/foo.conf
사용하십시오openvpn@foo.service
. -
systemd에 SysV init 스크립트도 표시되어 있으면 비활성화하십시오. 이것은 데비안 버그 700888입니다 (2.3.3-1에서 수정 됨).
참고 : 2.3.3-1 이상은 아직 불안정하지만 불안정한 상태입니다.
답변
- 모든 openvpn * .conf 파일을에 넣으십시오
/etc/openvpn/
. -
편집
/etc/default/openvpn
. 주석 처리를 제거하십시오.AUTOSTART="all"
-
를 실행하십시오
systemctl daemon-reload
. - 를 실행하십시오
service openvpn start
.
답변
이 유형의 단위 파일은 인스턴스화 된 서비스입니다. 자세한 내용은 여기를 참조 하십시오.
다음은 openvpn
CentOS 7 의 유닛 파일입니다 .
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=syslog.target network.target
[Service]
PrivateTmp=true
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
[Install]
WantedBy=multi-user.target
그리고로 존재합니다 /usr/lib/systemd/system/openvpn@service
. %i
파일의이 후 문자열로 대체 @
단위 이름이다.
구성 파일이 있으면 /etc/openvpn/myopenvpn.conf
서비스는 다음과 같이 시작됩니다.
systemctl start openvpn@myopenvpn.service
답변
을 활성화하여 서비스 파일을 작성해야합니다 openvpn@<configuration>.service
.
예를 들어, 구성 파일이 /etc/openvpn/client.conf
인 경우 서비스 이름은 openvpn@client.service
입니다.
답변
openvpn @ .service는 데비안 8과 9 사이에서 크게 발전했습니다 systemctl reload openvpn@
. 예를 들어 Jessie의 원래 패키지는 실패합니다 . 이 문제를 해결 PIDFile=
하기 위해 다시로드 작업을 다시 수행하는 것을 포함하여 systemd-file에 10 개의 새로운 지시문이 도입되었습니다 .
스트레치 사용자의 경우, 나는 백 포트가는 게 좋을 것, 가능하지 않으면 것은에서 systemd-파일을 가져 적어도 그, 할 https://packages.debian.org/jessie-backports/openvpn 및 추출물 debian/openvpn@.service
로를 /etc/systemd/system/openvpn@.service
더 잘 즐길 수 기능과 보안.
답변
적절한 해결책은 systemd의 systemd-ask-password
/ ” Password Agents “를 사용하는 것입니다. 이는 시스템에 기본 제공 방식으로 서비스에 암호 / 암호를 퍼널하는 방법을 제공합니다.
이를 위해서는 OpenVPN 2.3.0 이상 이 필요합니다.
답변
Jessie_8.0.0을 새로 설치하면 다음과 같이했습니다.
- wheezy에서 이전
/etc/openvpn/cluster.conf
(플러스*.key
및*.crt
) 파일 복사 - 주석
AUTOSTART="all"
에/etc/default/openvpn
– 나는이 영향을 미치지 않았다 생각 /lib/systemd/system-generators/openvpn-generator cluster
systemctl restart openvpn@cluster.service
이제 터널이 가동되었습니다. 재부팅 후 어떤 일이 발생하는지 볼 수 있지만 지금은 재부팅 할 수 없습니다