接続されたユーザーを表示してVPNサーバーを開く方法は?


59

DjangoフレームワークでOpenVPNユーザーを管理するためのWebサイトを開発しています。しかし、OpenVPNからアクティブユーザーを抽出する方法があるかどうかを知る必要がありますか?私のサーバーはUbuntu 12.04を実行しています。

回答:


84

ステータスログが表示されるはずです。たとえば、私の場合は次のとおりです。

cat /etc/openvpn/openvpn-status.log

編集:

別の方法として、フラグを追加する--management IP port [pw-file]か、同じディレクティブをに追加しますserver.conf。例:

management localhost 7505

これにより、そのポートにTelnetで接続し、実行するコマンドのリストを提供できます。

telnet localhost 7505

help


1
感謝しますが、ファイルの変更を監視しない他の方法はありますか?たとえば、接続されたユーザーをリストするライブラリですか?
ハミドFzM 14

1
@HamidFzMはライブラリについてはわかりません。編集として追加した管理インターフェイスを使用できます。それはきっとあなたのセキュリティを損なうだろうにlocalhost以外のIPを使用しないでください
c4urself

@ c4urself、.logの出力は次のとおりです。bit.ly / 1ORnsYp接続ユーザーはどこで確認できますか?この.logで割り当てられたIPを確認することはできますか?
マキシムV.パブロフ

@ MaximV.Pavlovは、あなたのケースでは誰も接続していないようです。はい、IPアドレスが表示されます。
c4urself

2
/etc/openvpn/openvpn-status.logDebianで私のために/var/run/openvpn/server.status働いていなかった、それは決して変わらず、代わりに完全に働いた
ネルソン

20

@sekrettの回答を完了するには:

killall -USR2 openvpn ; tail -f /var/log/syslog

実行し続けます。「通常の」キルではなく、いくつかの統計情報を出力するだけのリクエストです。

表示される統計は非常に読みやすいです。サンプル出力:

Oct 14 07:34:14 vpn2 openvpn[20959]: Updated,Fri Oct 14 07:34:14 2016
Oct 14 07:34:14 vpn2 openvpn[20959]: Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.132,hostname1,213.219.XXX.XXX:63765,Fri Oct 14 07:25:01 2016
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.242,hostname2,213.219.XXX.XXX:62416,Sun Sep 25 03:49:19 2016

改善してくれてありがとう。私の答えは正しかったが、例と説明が欠けている。:)
sekrett

7

私は同じニーズを自分自身で得て、私が見つけた最も簡単な解決策は、前述のtelnetを使用して管理インターフェイスに接続することでした(サーバー構成ファイルにmanagement localhost 6666を追加する必要があります)。

クライアントの正確な数を取得するには、次のようにします。

  • telnet localhost 6666
  • 状態

その後、多くのログを取得します:

10.9.10.11,test-docker,52.58.48.98:56859,Wed May  4 09:37:34 2016
10.9.7.45,test-docker,52.58.156.80:38774,Wed May  4 09:36:59 2016
10.9.1.103,test-docker,52.58.161.230:52201,Wed May  4 09:35:47 2016
GLOBAL STATS
Max bcast/mcast queue length,0
END
>CLIENT:ESTABLISHED,19845
>CLIENT:ENV,n_clients=19361
>CLIENT:ENV,time_unix=1462357164
  • =>> CLIENT:ENV、n_clients = 19361を探します

私の場合、クライアントの数が非常に多いため、ログファイルを使用することは非常に実用的ではありません。


あなたのstatusコマンドは、THX私を助けた
モハメド・Noureldin

4

usr2シグナルをopenvpnプロセスに送信して、syslogに統計情報を書き込むこともできます。これは安全です。以前に管理インターフェイスを有効にしなかった場合に再起動する必要はありません。


このためのコマンドを書くことができますか?
Shayan_Aryan

1
@MichaelCが書いた:killall -USR2 openvpn。次に、ログを監視します。ディストリビューションに依存している/var/log/syslog場合/var/log/messagesもあれば、依存している場合もあります。
sekrett

しかし、それはopenvpnを殺しませんか?
Shayan_Aryan

killコマンドはさまざまなシグナルを送信できますが、USR2は強制終了せず、単なるシグナルです。リストは、linux.org / threads / kill-signals-and-commands-revised.11625またはを実行して表示できますkill -l
sekrett

試したところです。接続されているクライアントの数に関する情報は表示されません
-Shayan_Aryan

4

私は会社のOpenVPNサーバーを管理しており、アクティブな接続を確認する方法は次のとおりです。

/etc/openvpn/server.confに追加します

management 127.0.0.1 5555

openvpnサーバーを再起動します

systemctl restart openvpn@server.service

OpenVPN Monitor Pythonパッケージを追加します-これはGunicorn Webサーバーを介して実行され、アクティブな接続を表示します。

mkdir /opt/openvpn-monitor

仮想環境を作成します(必須ではありませんが、pyパッケージを使用することをお勧めします)

cd /opt/openvpn-monitor
virtualenv venv
source venv/bin/activate

必要なパッケージをインストールする

pip install openvpn-monitor gunicorn

モニター構成ファイルを追加します

vi /opt/openvpn-monitor/openvpn-monitor.conf

[openvpn-monitor]
site=your-openvpn-site
#logo=logo.jpg
#latitude=40.72
#longitude=-74
maps=True
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S

[VPN1]
host=localhost
port=
name=Your VPN Server Name
show_disconnect=False

アクティブな接続を表示するWebサーバーを起動します。

gunicorn openvpn-monitor -b 0.0.0.0:80 --name openvpn-monitor --daemon

モニターを停止するには

pkill gunicorn 

アクティブな接続を確認するには、VPNサーバーのパブリックIPにアクセスします

http://<ip of openvpn server>

ポート80に適切なファイアウォールを設定し、信頼できる受信IPのみをホワイトリストに登録してください

ここに画像の説明を入力してください


1

次のコマンドでsacliを使用するだけです。これにより、接続されたVPNクライアントがリストされます。

/usr/local/openvpn_as/scripts/sacli VPNSummary
{
"n_clients": 15
}

すべてのIPを表示するには、このオプションを使用します。./sacli VPNStatus

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.