わかりましたので、私はこの問題の解決策をウェブで検索してきましたが、答えは私には役に立たないようです。うまくいけば、誰かが私を助けることができます。私はOpenVPNクライアントのみを設定しようとしています。
CrunchBang Linux 3.2.0-4-AMD64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
を実行していますが、systemd
を使用するように切り替えました。切り替えは十分スムーズに進みましたが、今ではsystemdを使用してOpenVPNクライアントを起動することができません。これらの構成チュートリアルに従ってみましたが、何も機能しません。
コマンドラインから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)
サービスを設定する必要があることに気付きました。パスワードの入力を求められるので、このガイドに従って[email protected]
を/etc/systemd/system/
に作成しました。ただし、OpenVPNサービスを再起動しても、パスワードの入力は求められません。
$ Sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Fedoraチュートリアルでは、シンボリックリンクを作成する手順を実行しますが、ウォークスルーでは.serviceファイルを作成しません。
何が欠けていますか? [email protected]を作成する必要がありますか?もしそうなら、私はそれを正確にどこに置きますか?これは難しいことではないように思いますが、私に役立つ解決策を見つけることができません。必要な情報をさらに提供させていただきます。
-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]
接続するためのパスワードの入力を求められることを除いて、すべてが正常に機能しています。私は試みました この解決策 。ファイルを少し上から微調整し、例のように Expectスクリプト を追加しました。魅力のように働いています!私のファイルは以下です。
上記の変更された行/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
のログに記録することに注意してください
Systemdを使用したDebian OpenVPNセットアップは、現在少し壊れていると思います。それを私のマシンで動作させるために、私はしなければなりませんでした:
/etc/systemd/system/[email protected]
(ディレクトリ)を作成し、その中に新しいファイルを配置します。
[Unit] Requires = networking.service After = networking.serviceファイルを
local-after-ifup.conf
と呼びました。末尾は.conf
にする必要があります。 (これは現在少し壊れているビットです。)/etc/tmpfiles.d
にファイルを作成します(私はlocal-openvpn.conf
と呼びます)。
#タイプパスモードUID GID経過時間引数 d/run/openvpn 0755 root root--これは Debianバグ741938 (2.3.3-1で修正済み)です。
multi-user.target.wants
へのシンボリックリンクを作成します(最も簡単な方法はsystemctl enable openvpn@CONF_NAME.service
です)。たとえば、/etc/openvpn/foo.conf
がある場合は、[email protected]
を使用します。
SystemdにSysV initスクリプトも表示されている場合は、それを無効にします。これは Debianバグ700888 (2.3.3-1で修正済み)です。
注:2.3.3-1以降は不安定ですが、 まだテスト段階ではありません です。
/etc/openvpn/
に配置します。/etc/default/openvpn
を編集します。これをコメント解除:
AUTOSTART="all"
systemctl daemon-reload
を実行します。
service openvpn start
を実行します。このタイプのユニットファイルは、インスタンス化されたサービスです-詳細が利用可能です ここ
以下は、CentOS 7でのopenvpn
のユニットファイルです。
[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 [email protected]
openvpn@<configuration>.service
を有効にして、サービスファイルを作成する必要があります。
たとえば、構成ファイルが/etc/openvpn/client.conf
の場合、サービス名は[email protected]
です。
Openvpn @ .serviceはDebian 8と9の間で大幅に進化しました。たとえば、Jessieの元のパッケージはsystemctl reload openvpn@
に失敗します。これらを修正するために、StretchバージョンはPIDFile=
を含むsystemd-fileに10個の新しいディレクティブを導入し、リロードを再度機能させます。
Stretchユーザーの場合、バックポートに行くことをお勧めします。それができない場合は、少なくとも https://packages.debian.org/jessie-backports/openvpn からsystemd-fileを取得してください。 =およびdebian/[email protected]
を/etc/systemd/system/[email protected]
に抽出し、機能とセキュリティを向上させます。
適切な解決策は、systemdのsystemd-ask-password
/" Password Agents "を使用することです。これは、パスワード/パスフレーズをサービスに流すためのsystemd組み込み方法を提供します。
これには OpenVPN 2.3.0以降 が必要です。
新しいJessie_8.0.0インストールで、私はしました:
/etc/openvpn/cluster.conf
(および*.key
および*.crt
)ファイルをwheezyからコピーしますAUTOSTART="all"
in /etc/default/openvpn
-これは効果がないと思います/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart [email protected]
これでトンネルが起動しました-再起動後に何が起こるかはわかりますが、この瞬間は再起動できません