systemd와 함께 OpenVPN 사용

systemd와 함께 OpenVPN 사용

좋아요, 그래서 저는 이 문제에 대한 해결책을 온라인에서 검색해 봤지만 답이 없는 것 같습니다. 누군가가 나를 도울 수 있기를 바랍니다. OpenVPN 클라이언트를 구성하고 싶습니다.

실행 중이고 CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux방금 systemd.

명령줄을 사용하여 명령줄에서 터널을 시작할 수 있습니다 openvpn /etc/openvpn/vpn.conf. 그래서 나는 구성 파일이 괜찮고 sysvinit에서도 잘 작동한다는 것을 알고 있으므로 놀라지 않습니다. 그런 다음 하나의 상태만 수행하려고 시도했으며 결과는 다음과 같습니다.systemctl status [email protected]

$ sudo systemctl status [email protected]
  [email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)

서비스에 대한 몇 가지 설정이 필요하다는 것을 깨달았습니다. 비밀번호를 묻는 메시지가 표시되기를 원했기 때문에 이 가이드에 따라 .NET [email protected]에서 비밀번호를 만들었습니다 /etc/systemd/system/. 하지만 OpenVPN 서비스를 다시 시작해도 비밀번호를 묻는 메시지가 표시되지 않았습니다.

$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.

Fedora 튜토리얼에서는 심볼릭 링크를 생성하는 단계를 다루지만 연습에서는 .service 파일을 생성하지 않습니다.

내가 놓친 부분은 무엇입니까? 나는[이메일 보호됨]? 그렇다면 정확히 어디에 넣어야 할까요? 이렇게 어렵지는 않을 것 같지만 나에게 맞는 솔루션을 찾을 수 없는 것 같습니다. 추가 정보가 요청되면 기꺼이 제공해 드리겠습니다.

해결책

-rw-r--r--  1 root root   319 Aug  7 10:42 [email protected]

[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
[email protected] (END)

심볼릭 링크:

lrwxrwxrwx  1 root root   36 Aug  7 10:47 [email protected] -> /lib/systemd/system/[email protected]

비밀번호를 묻는 메시지

이제 연결 시 비밀번호를 묻는 메시지를 제외하고는 모든 것이 잘 작동합니다. 나는 전에 시도했다이 솔루션. 위의 파일을 일부 조정하고 추가했습니다.대본이 기대된다예와 같습니다. 매력처럼 작동합니다! 내 파일은 다음과 같습니다.

위 줄을 수정하세요./lib/systemd/system/[email protected]

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설치

예상 스크립트 코드:

#!/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

답변1

현재 systemd를 사용한 Debian OpenVPN 설정이 약간 손상된 것 같습니다. 내 컴퓨터에서 작동하게 하려면 다음을 수행해야 했습니다.

  1. (디렉토리)를 만들고 그 안에 새 파일을 배치합니다./etc/systemd/system/[email protected]

    [단위]
    요구=networking.service
    애프터=네트워킹.서비스
    내 파일 이름을 local-after-ifup.conf. 로 끝나야 합니다 .conf. (지금 이게 좀 문제네요.)

  2. 다음 내용을 포함하는 파일 /etc/tmpfiles.d(내 파일이라고 부르겠습니다 )을 만듭니다.local-openvpn.conf

    # 경로 패턴 UID GID 연령 매개변수 입력
    d /run/openvpn 0755 루트 - -
    이것은데비안 버그 741938(2.3.3-1에서 수정됨)

  3. multi-user.target.wants(가장 쉬운 방법은 ) systemctl enable openvpn@CONF_NAME.service당신이 가지고 있다면 /etc/openvpn/foo.conf사용할 예제 에 대한 심볼릭 링크를 만듭니다 [email protected].

  4. SysV init 스크립트가 systemd에도 있으면 비활성화하십시오. 이것은데비안 오류 700888(2.3.3-1에서 수정됨)

참고: 2.3.3-1 이상아직 테스트되지 않음, 비록 불안정한 상태이지만.

답변2

이 유형의 단위 파일은 인스턴스화된 서비스입니다. 자세한 내용이 제공됩니다.여기

다음은 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다음 문자열 로 대체되는 .file 에 있습니다 .@

구성 파일을 찾으면 서비스가 시작됩니다 /etc/openvpn/myopenvpn.conf.

systemctl start [email protected]

답변3

이를 활성화하여 서비스 파일을 생성해야 합니다 openvpn@<configuration>.service.

예를 들어 구성 파일이 이면 /etc/openvpn/client.conf서비스 이름은 입니다 [email protected].

아치 위키에서

답변4

올바른 해결책은 systemd systemd-ask-password/" 를 활용하는 것입니다.비밀번호 프록시”는 비밀번호/암호 문구를 서비스로 전송하는 시스템 내장 방법을 제공합니다.

당신은해야합니다OpenVPN 2.3.0 이상가서 이것을 해보세요.

관련 정보