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でもうまく動作することを知っているので驚くことはありません。その後、1つの状態のみを実行しようとしましたが、結果は次のようになります。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 ファイルを生成しません。

私が逃した部分は何ですか?私[Eメール保護]?それでは、正確にどこに入れるべきですか?これは難しくないようですが、私に合った解決策が見つからないようです。追加情報が必要な場合は、お気軽にお知らせします。

解決策

-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 ルート - -
    これはDebian バグ 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 にもある場合は無効にします。これはDebian エラー 700888(2.3.3-1で修正)

注:2.3.3-1以降まだテストされていません、たとえ不安定な状態だが。

おすすめ記事