systemd와 함께 OpenVPN 사용 service openvpn

좋아, 그래서 나에게 효과가없는 것처럼이 문제에 대한 해결책을 찾기 위해 웹을 검색했습니다. 누군가가 나를 도울 수 있기를 바랍니다. OpenVPN 클라이언트 만 구성하려고합니다.

나는 달리고 CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux있으며 방금 사용으로 전환했습니다 systemd. 전환이 순조롭게 진행되었지만 이제는 OpenVPN 클라이언트가 systemd를 사용하여 올 수 없습니다.이 구성 자습서를 따라 시도했지만 아무것도 작동하지 않습니다.

명령 줄에서을 사용하여 터널을 가져올 수 있습니다 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@.servicein 을 만들었 습니다 /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 설정은 현재 약간의 고장이라고 생각합니다. 내 컴퓨터에서 작동하게하려면 :

  1. /etc/systemd/system/openvpn@.service.d(디렉토리)를 생성 하고 다음과 같이 새 파일을 배치하십시오.

    [단위]
    요구 사항 = networking.service
    후 = networking.service

    나는 나의 파일을 불렀다 local-after-ifup.conf. 로 끝나야합니다 .conf. (이것은 현재 조금 엉망인 비트입니다.)

  2. 내용 으로 /etc/tmpfiles.d(내 이름 은)에 파일을 만듭니다 local-openvpn.conf.

    # 타입 경로 모드 UID GID Age Argument
    d / run / openvpn 0755 루트 루트--

    이것은 데비안 버그 741938입니다 (2.3.3-1에서 수정 됨).

  3. multi-user.target.wants가장 쉬운 방법으로 심볼릭 링크를 만드십시오. systemctl enable openvpn@CONF_NAME.service예를 들어 있다면을 /etc/openvpn/foo.conf사용하십시오 openvpn@foo.service.

  4. systemd에 SysV init 스크립트도 표시되어 있으면 비활성화하십시오. 이것은 데비안 버그 700888입니다 (2.3.3-1에서 수정 됨).

참고 : 2.3.3-1 이상은 아직 불안정하지만 불안정한 상태입니다.


답변

  1. 모든 openvpn * .conf 파일을에 넣으십시오 /etc/openvpn/.
  2. 편집 /etc/default/openvpn. 주석 처리를 제거하십시오.

    AUTOSTART="all"
    
  3. 를 실행하십시오 systemctl daemon-reload.

  4. 를 실행하십시오 service openvpn start.

답변

이 유형의 단위 파일은 인스턴스화 된 서비스입니다. 자세한 내용은 여기를 참조 하십시오.

다음은 openvpnCentOS 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을 새로 설치하면 다음과 같이했습니다.

  1. wheezy에서 이전 /etc/openvpn/cluster.conf(플러스 *.key*.crt) 파일 복사
  2. 주석 AUTOSTART="all"/etc/default/openvpn– 나는이 영향을 미치지 않았다 생각
  3. /lib/systemd/system-generators/openvpn-generator cluster
  4. systemctl restart openvpn@cluster.service

이제 터널이 가동되었습니다. 재부팅 후 어떤 일이 발생하는지 볼 수 있지만 지금은 재부팅 할 수 없습니다