アクティブなOpenVPN接続を監視するために使用できるツールをインターネットで探しているときに、OpenVPN管理インターフェイスを利用してOpenVPNサーバーのステータスを表示するhtmlレポートを生成するopenvpn-monitorというPythonベースのツールに出くわしました。接続。
openvpn-monitorツールを使用してOpenVPN接続を監視する方法
前提条件
先に進む前に、セットアップが必要なことがいくつかあります。
OpenVPNサーバーのインストールと構成
もちろん、OpenVPNサーバーを実行せずにOpenVPNサーバー接続を監視したい場合もあります。以下のリンクに従って、CentOS/UbuntuシステムにOpenVPNサーバーをインストールしてセットアップします。
CentOS8にOpenVPNサーバーをインストールしてセットアップする
Ubuntu20.04にOpenVPNサーバーをインストールしてセットアップする
管理インターフェイスを有効にする
openvpn-monitor
ツールでは、OpenVPN管理インターフェースが有効になっている必要があります。 OpenVPN管理インターフェースにより、OpenVPNを外部プログラムからTCPまたはUNIXドメインソケットを介して管理上制御することができます。 OpenVPN管理サーバーは、Unixソケットまたは指定されたTCPポートで有効にできます。 Unixソケットを使用することをお勧めしますが、openvpn-monitorツールはOpenVPN管理インターフェイスのTCP接続を使用します。したがって、OpenVPN管理インターフェイスIPを127.0.0.1(localhost)に設定して、ローカルクライアントへの管理サーバーのアクセスを制限することを強くお勧めします。
OpenVPN管理インターフェースTCP接続は、OpenVPNサーバー構成ファイルを編集し、management IP port
。
vim /etc/openvpn/server/server.conf
... comp-lzo persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 auth SHA512 # Enable OpenVPN Management Interface on localhost using TCP port 17562 management 127.0.0.1 17562
行;
management 127.0.0.1 17562
OpenVPN管理インターフェースのIPアドレスを127.0.0.1(localhost)およびTCPポート17562に設定します。openvpn-monitorは、OpenVPN管理インターフェースがTCPポート5555でリッスンしていることを想定しています。これは後で変更します。
割り当てられたポートがシステム上の他のプログラムによって使用されていないことを確認してください;
lsof -i :17562
ポートを使用しているアプリケーションがない場合は、OpenVPNサーバーサービスを再起動します;
systemctl restart [email protected]
ポートが開いていることを確認します;
lsof -i :17562
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
openvpn 44178 root 3u IPv4 189028 0t0 TCP localhost:17562 (LISTEN)
OpenVPNサーバーサービスが実行されていることを確認します;
systemctl status [email protected]
● [email protected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-08-16 16:15:46 UTC; 1h 15min ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 44178 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2282) Memory: 1.9M CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected] └─44178 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf Aug 16 16:15:46 ubuntu20.kifarunix-demo.com systemd[1]: Starting OpenVPN service for server... Aug 16 16:15:46 ubuntu20.kifarunix-demo.com systemd[1]: Started OpenVPN service for server.
openvpn-monitorツールのインストールとセットアップ
プログラムのGithubリポジトリで概説されているように、openvpn-monitorツールをインストールするさまざまな方法があります。このチュートリアルでは、Apacheを使用してopenvpn-monitorOpenVPN接続をサーバーします。
openvpn-monitor用のApacheをインストールする
Apacheと必要なパッケージの依存関係をインストールします;
apt install git apache2 libapache2-mod-wsgi python3-geoip2 python3-ipaddr python3-humanize python3-bottle python3-semantic-version geoip-database geoipupdate
openvpn-monitorプログラムをダウンロード
次に、openvpn-monitorGithubリポジトリをデフォルトのウェブサーバーのルートディレクトリに複製します。この設定では、/var/www/html/openvpn-monitor
ディレクトリ。
git clone https://github.com/furlongm/openvpn-monitor.git /var/www/html/openvpn-monitor
ls /var/www/html/openvpn-monitor/
AUTHORS COPYING images MANIFEST.in openvpn-monitor.conf.example openvpn-monitor.py README.md requirements.txt setup.py tests VERSION.txt
openvpn-monitorを構成する
サンプル構成ファイルの名前をopenvpn-monitor.conf.example
openvpn-monitor.conf
へ 。
cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}
openvpn-monitor.py
Pythonプログラム。
cd /var/www/html/openvpn-monitor
grep -irl 5555 . | xargs -I {} sed -i 's/5555/17562/' {}
次に、構成ファイルを開いてサイト名を設定し、ロゴを追加し、デフォルトの地図の場所(緯度と経度、デフォルトは米国ニューヨーク)を設定できます。
変更した構成ファイルは次のようになります;
cat /var/www/html/openvpn-monitor/openvpn-monitor.conf
[openvpn-monitor]
site=Kifarunix-demo-VPN
#logo=logo.jpg
latitude=11.016844
longitude=76.955833
maps=True
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S
[VPN1]
host=localhost
port=17562
name=Kifarunix-demo VPN
show_disconnect=False
GeoIP2CityDatabaseの場所に注意してください。システムで利用できない場合は、MaxMindから無料バージョンを登録してダウンロードしてください。
もう1つ、このセットアップはUbuntu 20.04でテストされており、Python3がデフォルトです。 openvpn-monitorはpythonを使用するため、python3からpythonへのシンボリックリンクを作成するだけです;
ln -s /usr/bin/python3 /usr/bin/python
openvpn-monitorスクリプトを実行するようにApacheを構成する
次に、以下のコマンドを実行して、openvpn-monitorPythonスクリプトを実行するようにApacheを構成します。
vim /etc/apache2/sites-available/openvpn-monitor.conf
ScriptAlias / /var/www/html/openvpn-monitor/openvpn-monitor.py
<Directory /var/www/html/openvpn-monitor>
Options +ExecCGI
AddHandler cgi-script .py
DirectoryIndex openvpn-monitor.py
AllowOverride None
Require ip 192.168.0.0/16
</Directory>
構成ファイルを保存して終了します。
openvpn-monitorWebルートディレクトリの所有権をApacheユーザーwww-data
。
chown -R www-data: /var/www/html/openvpn-monitor/
Apache構成構文を確認してください;
apachectl -t
Syntax OK
openvpn-monitor Apacheサイト構成を有効にし、デフォルトサイトを無効にします。
a2ensite openvpn-monitor.conf
a2dissite 000-default.conf
Apacheを起動し、システムブートで実行できるようにします;
systemctl enable --now apache2
openvpn-monitorのデバッグ
コマンドラインからopenvpn-monitorを実行して、実際にhtmlレポートが正しく生成されるかどうかを確認できます:
cd /var/www/html/openvpn-monitor python openvpn-monitor.py
オプション-d
デバッグ用;
python openvpn-monitor.py -d
サンプル出力;
...
oms.addListener("click", function(marker) {
popup.setContent(marker.alt);
popup.setLatLng(marker.getLatLng());
map.openPopup(popup);
});
oms.addListener("spiderfy", function(markers) {
map.closePopup();
});
bounds.extend(centre);
map.fitBounds(bounds);
</script>
</div></div>
<div class="well well-sm">
Page automatically reloads every 5 minutes.
Last update: <b>16/08/2020 19:10:26</b></div>
</div></body></html>
DEBUG:
=== begin vpns
{'VPN1': {'host': 'localhost',
'name': 'Staff VPN',
'port': '17562',
'release': 'OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] '
'[LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep '
'5 2019',
'sessions': {},
'show_disconnect': False,
'socket_connected': True,
'state': {'connected': 'CONNECTED',
'local_ip': IPv4Address('10.8.0.1'),
'mode': 'Server',
'remote_ip': '',
'success': 'SUCCESS',
'up_since': datetime.datetime(2020, 8, 16, 16, 15, 46)},
'stats': {'bytesin': 0, 'bytesout': 0, 'nclients': 0},
'version': Version('2.4.7')}}
=== end vpns
ブラウザでopenvpn-monitorにアクセスする
すべてが順調であれば、アドレスhttp://<OpenVPN-server-Address/openvpn-monitor
またはhttp://<OpenVPN-server-Address/
私たちのリダイレクトに従って。
そして、あなたは行きます。美しいですね。すべてのクレジットはfurlongmに行きます。ご覧のとおり、ローカルに接続されているOpenVPNクライアントの接続ステータスがあります。
これで、openvpn-monitorツールを使用してOpenVPN接続を監視する方法に関するガイドは終わりです。お楽しみください。
リファレンス
openvpn-monitor
関連チュートリアル
Ubuntu20.04にOpenVPNサーバーをインストールしてセットアップする
OpenVPNLDAPベースの認証を構成する
OpenVPNクライアントに静的IPアドレスを割り当てる
Ubuntu 18.04 /CentOS8でstrongSwanVPNクライアントを構成する