web-dev-qa-db-ja.com

Debianに接続されたopenVPNクライアントを確認してください

Debian OpenVPNクライアントが接続されているかどうかを確認するにはどうすればよいですか?実行する必要がある特定のコマンドはありますか?または、ログファイルから読み取ることはできますか?

ありがとう。

編集:以下の回答は、デバッグに大きな価値をもたらします。 2つの異なるシステムで同じオープンVPN資格情報を使用したため、問題が発生しました。

7
Hendrik

クライアントとサーバーのどちらの観点から質問しているかはわかりません。いずれの場合でも、注意する必要がある1つのことは、この構成オプションを使用してOpenVPNデーモンで management interface を有効にすることです。

management 127.0.0.1 6001

管理インターフェースを有効にすると、netcat/telnetを使用して、この目的で設定した任意のポートに接続できます。次に、statusコマンドまたは他の多くのコマンドを発行して、デーモンの観点から何が起こっているかを正確に判断できます。

9
Zoredache

@mgorvenは良い答えを得ると思いますが、問題を別の視点に置くような別のものを提案したいと思います。

ネットワークの構成に/etc/network/interfacesを使用している場合、それを使用してクライアントOpenVPNトンネルを制御できます。こんなふうになります:

  1. OpenVPNのdevオプションには、トンネルデバイスのcustom名を使用します。たとえば、

    dev mytun
    

    openVPN構成ファイル内。

    設定ファイルが

    /etc/openvpn/client.conf
    
  2. 次のように、/etc/network/interfacesファイルにそのデバイスのエントリを設定します。

    iface mytun inet manual
        pre-up   /etc/init.d/openvpn start client
        pre-down /etc/init.d/openvpn stop  client
    

このように設定すると、次のことができます

# /sbin/ifup mytun
# /sbin/ifdown mytun

ここで元の質問に戻ります—ネットワーク構成ファイルのifaceセクションもpost-upディレクティブをサポートしています。これは、scriptingに使用できますが、「トンネルは準備完了」イベント。

デスクトップマシンのさらに別のアプローチは、OpenVPNトンネルを管理するために TunTun のようなビジュアルツールを使用することです。

3
kostix

正確に何を達成しようとしているかに応じて、いくつかの方法があります。クライアントが実行されているかどうかを確認し、Debianのinitscriptを使用している場合は、serviceコマンドを使用できます。

% Sudo service openvpn status mammon; echo $?
 * VPN 'mammon' is running
0

クライアントがサーバーに接続されているとクライアントが認識していることを確認する場合は、ルーティングテーブルでVPNサブネットまたはローカルインターフェイスの存在を確認できます。

% ip route | grep -q 10.8.0.1; echo $?
0
% ip link show dev tun0 > /dev/null; echo $?
0

クライアントが接続され、サーバーが接続可能であることを確認するには、サーバーにpingを実行します。

% ping -c1 -w5 -q 10.8.0.1 > /dev/null; echo $?
0
3
mgorven

Ubuntuでは、/var/run/openvpn.openvpn.statusに現在のOpenVPNステータスを保持するファイルがあります。

管理インターフェースのstatusコマンドの出力と同じように見えますが、OpenVPNで有効にする必要はありません。

スクリプトでいくつかの処理を行うことができます。つまり、時間の経過とともにカウンターが増加するかどうかを確認します。

1
timurb