回答:
network-manager-openvpnそのような機能を提供していません、openvpn直接使用する必要があります。
--script-security 2 --up /path/to/your/script接続時に渡す。にある構成ファイルを使用している場合は、構成ファイルに/etc/openvpn/次の行を追加します。
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
--script-security level [メソッド]
このディレクティブは、OpenVPNの使用をポリシーレベルで制御します。
外部プログラムおよびスクリプトの。レベル値が低いほど
制限的で、値が大きいほど寛容です。の設定
レベル:
0-厳密には外部プログラムの呼び出しはありません。
1-(デフォルト)ifconfigなどの組み込みの実行可能ファイルのみを呼び出し、
ip、route、またはnetsh。
2-組み込みの実行可能ファイルとユーザー定義の呼び出しを許可する
スクリプト。
3-環境経由でパスワードをスクリプトに渡すことを許可する
変数(潜在的に安全ではない)。
--up cmd
TUN / TAPデバイスを正常に開いた後に実行するシェルコマンド(pre
--user UID change)。upスクリプトは、指定するのに役立ちます
プライベート宛てのIPトラフィックをルーティングするrouteコマンド
VPN接続のもう一方の端に存在するサブネット
トンネル。
スクリプトの実行順序
--up TCP / UDPソケットバインドおよびTUN / TAPが開いた後に実行されます。
--down TCP / UDPおよびTUN / TAPが閉じた後に実行されます。
スクリプトを実行するためのイベントは他にもあります。それらはマニュアルページにあります。
を作成し/etc/openvpn/up.sh、実行許可(たとえば、755または700)を付与します。IPv6アドレスとルートを追加するためのコンテンツの例(教育目的で表示されます。直接コピーしないでください):
#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
このupスクリプトはルートとして実行されることに注意してください。あなたが指定していない場合UserやGroup設定を、OpenVPNのは、のようなスクリプトを実行しますdownあまりにとして根を。
openvpn直接使用しました。サーバーをセットアップするとき、サーバーがダウンしたときにOpenVPNが再接続を試みることに気付きました。ネットワークインターフェイスがダウンしたときにOpenVPNが試行を続けるかどうかはわかりません。
「VPNが正常に接続されたときに実行されるようにスクリプトをOpenVPNに関連付けるにはどうすればよいですか?」Lekensteynが優れた答えを提供したことを指摘したいと思います。しかし、彼の答えが作成された時点では、特にリブート後に同じように動作するように、ubuntuマシンでopenvpnを起動するためにopenvpnコマンドライン引数をどのように提供するかについて、少し明確に欠けていました。
当然、有効な有効なオプションを使用してコマンドラインからopenvpnを起動できます。ただし、Ubuntuマシンでは、リブート後に同じコマンドライン引数でopenvpnを起動する場合、ファイルの編集を検討する必要があります/etc/default/openvpn。次の行を調べます。
# Optional arguments to openvpn's command line
OPTARGS=""
コミュニティOpenVPNのmanページに--script-security
--script-security level
このディレクティブは、OpenVPNの外部の使用をポリシーレベルで制御します。
プログラムとスクリプト。レベルの値が低いほど制限が大きく、値が高い
値はより寛容です。レベルの設定:
0-厳密には外部プログラムの呼び出しはありません。
1-(デフォルト)ifconfig、ip、route、
またはnetsh。
2-組み込みの実行可能ファイルとユーザー定義スクリプトの呼び出しを許可します。
3-パスワードが環境変数を介してスクリプトに渡されることを許可する
(潜在的に安全ではない)。
v2.3より前のOpenVPNリリースでは、方法フラグを示すメソッドフラグもサポートされていました。
OpenVPNは外部コマンドとスクリプトを呼び出す必要があります。これはどちらかです
またはシステム。OpenVPN v2.3以降、このフラグは受け入れられなくなりました。ほとんどの* nix
環境execve()アプローチは問題なく使用されています。
--upなどの一部のディレクティブでは、オプションを外部スクリプトに渡すことができます。
これらの場合、スクリプト名にスペースが含まれていないこと、または
構成パーサーは、スクリプトの場所を判別できないため、停止します
名前が終了し、スクリプトオプションが開始されます。
の短縮セクションと組み合わせて --up
--up cmd
TUN / TAPデバイスが正常に開いた後、コマンドcmdを実行します(--user UIDの変更前)。
cmdは、スクリプト(または実行可能プログラム)へのパスで構成され、オプションで後に続きます
引数によって。パスと引数は、シングルクォートまたはダブルクォートまたは/または
バックスラッシュを使用してエスケープし、1つ以上のスペースで区切る必要があります。
openpvn server.confを使用しているマシンでは、/etc/default/openvpnファイルに次の行があります。
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
ちなみに、nat.shは、プライベートネットワークトラフィックをopenvpnクライアントからパブリックインターネットにルーティングするためのネットワークアドレス変換をセットアップします。これは、パブリックWIFIアクセスポイントを信頼しない場合に適しています。
再起動後に期待どおりに再起動できるようにするだけでなく/etc/openvpn/[client or server].conf、/etc/default/openvpnファイルが適切に構成されている場合、openvpnは次の方法で起動または停止できます。
sudo service openvpn start
sudo service openvpn stop
以下のために利用できる他の有用なオプションservice openvpnが含まcond-restart,force-reload,reload, restart,soft-restart, start, status, stop。
私はこの問題を解決するための調査で答えを見つけましたが、最良の解決策は次のとおりです(openvpnサーバーを使用)。
実行するスクリプトを作成します。
# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh
# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>
次の行をopenvpn構成に追加します(通常は/etc/openvpn/server.conf)。上記の回答では、サーバーの起動(再起動)時に使用される上下に使用されました。ディレクティブclient-connect(およびclient-disconnect)は、クライアントが接続(切断)するときに使用されます。
# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>