回答:
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>