web-dev-qa-db-ja.com

接続されているVPNクライアントのリスト

状況:自宅にプライベートVPNサーバーがあり、インターネットに開いているため、特定のグループの人々がそれに接続できます(キーペア認証のみが許可されています)。

現在どのVPNサーバーに接続しているクライアントを確認できますか?

私はすでにホストにpingを実行しようとしましたが、一部(実際にはほとんどのホスト)がICMP要求をブロックしているようなので、これは常に失敗します。もちろん、毎回/etc/openvpn/openvpn.logを調べることはできますが、これはあまり便利ではなく、電子メールで送信されるステータスレポートには適していません。

備考:私はOpenVPN 2.2.1 x86_64-linux-gnuを使用しています。

9
MrD

小さな期待スクリプトでこれを行うことができます:

#!/ usr/bin/expect 
 spawn telnet localhost 7505 
 set timeout 10 
 expect "OpenVPN Management Interface" 
「ステータス3\r」を送信します
「END」を期待します
「exit\r」を送信します


真実ながら; ./openVPNUserlist.sh | grep -e ^ CLIENT_LIST;睡眠1;終わった


管理ローカルホスト7505


telnetが期待する

興味深いことに、ステータスはしばらくして更新されます(クライアントが切断すると、しばらくの間ステータスに表示され続けます...これを回避する方法がまだ見つかりませんでした:(

キープアライブ10 60
5
GoodbyeKitty

私はこのフォルダーに広範なvpnログを配置しました:

ls /var/log/openvpn/

私には、次のような名前のファイルが2つありました。

Arbitary-Name-VPN.log
status-Arbitary-Name-VPN.log

最初のファイルは、時間の経過とともに発生したすべてのVPN接続のログを示し、2番目のファイル(status -...)は、現在接続しているユーザーを示しています。

1
LonnieBest

簡単な方法は次のとおりです。

  • 追加

    status /var/log/openvpn-status.log
    

    /etc/openvpn/server.confで、vpnサーバーを再起動します。

  • 以下のコマンドを使用して、接続されているクライアントをログから表示します。

    while true;
    do
      cat /var/log/openvpn-status.log | sed -n '/OpenVPN CLIENT LIST/,/ROUTING TABLE/p' | tail -n+4 | sed "s/ROUTING TABLE//g";
      sleep 4s;
    done
    

    これにより、クライアントリストが3秒ごとに更新されます。

0
James Arems