状況:自宅にプライベートVPNサーバーがあり、インターネットに開いているため、特定のグループの人々がそれに接続できます(キーペア認証のみが許可されています)。
現在どのVPNサーバーに接続しているクライアントを確認できますか?
私はすでにホストにpingを実行しようとしましたが、一部(実際にはほとんどのホスト)がICMP要求をブロックしているようなので、これは常に失敗します。もちろん、毎回/etc/openvpn/openvpn.log
を調べることはできますが、これはあまり便利ではなく、電子メールで送信されるステータスレポートには適していません。
備考:私はOpenVPN 2.2.1 x86_64-linux-gnu
を使用しています。
小さな期待スクリプトでこれを行うことができます:
#!/ 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
私はこのフォルダーに広範なvpnログを配置しました:
ls /var/log/openvpn/
私には、次のような名前のファイルが2つありました。
Arbitary-Name-VPN.log
status-Arbitary-Name-VPN.log
最初のファイルは、時間の経過とともに発生したすべてのVPN接続のログを示し、2番目のファイル(status -...)は、現在接続しているユーザーを示しています。
簡単な方法は次のとおりです。
追加
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秒ごとに更新されます。