如何使用openvpn-monitor工具监视OpenVPN连接

在本教程中,我们将学习如何使用openvpn-monitor工具监视OpenVPN连接。本教程着重于监控使用 OpenVPN社区版。 OpenVPN CE为使用使用SSL / TLS的自定义安全协议在互联网上创建安全VPN连接提供了事实上的标准。

在搜寻Internet上可用于监视活动OpenVPN连接的工具时,我遇到了一个名为python的工具 OpenVPN监控器 它利用OpenVPN管理界面生成html报告,以显示OpenVPN服务器的状态,包括所有当前连接。

如何使用openvpn-monitor工具监视OpenVPN连接

先决条件

在继续之前,需要完成一些设置。

安装和配置OpenVPN服务器

当然,您可能想在没有运行OpenVPN服务器的情况下监视OpenVPN服务器连接。请按照以下链接在CentOS / Ubuntu系统上安装和设置OpenVPN服务器;

在CentOS 8上安装和设置OpenVPN Server

在Ubuntu 20.04上安装和设置OpenVPN Server

启用管理界面

openvpn-monitor 工具需要启用OpenVPN管理界面。 OpenVPN管理界面允许通过TCP或Unix域套接字从外部程序对OpenVPN进行管理控制。可以在Unix套接字或指定的TCP端口上启用OpenVPN管理服务器。虽然推荐使用Unix套接字,但是openvpn-monitor工具使用OpenVPN管理接口TCP连接。因此,强烈建议您将OpenVPN管理接口IP设置为127.0.0.1(localhost),以限制管理服务器对本地客户端的可访问性。

可以通过编辑OpenVPN服务器配置文件并添加以下行来启用OpenVPN管理界面TCP连接: 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-openvpnx2dserver.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工具

如程序的概述所述,有多种安装openvpn-monitor工具的方法 Github仓库。在本教程中,我们将使用Apache来管理openvpn-monitor OpenVPN连接。

安装Apache for openvpn-monitor

安装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-monitor Github存储库克隆到默认的Web服务器根目录。在此设置中,我们使用 /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.py。

cp /var/www/html/openvpn-monitor/openvpn-monitor.conf{.example,}

如果您将OpenVPN管理接口更改为端口上定义的5555以外的其他端口,请更换该接口。 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

注意GeoIP2城市数据库的位置。如果您的系统上没有该版本,请从以下位置注册并下载免费版本 最大思维

还有一点是,此设置已在Ubuntu 20.04上进行了测试,默认设置为python 3。由于openvpn-monitor使用python,因此只需创建从python 3到python的符号链接;

ln -s /usr/bin/python3 /usr/bin/python

配置Apache执行openvpn-monitor脚本

接下来,执行以下命令以配置Apache以执行openvpn-monitor Python脚本。

vim /etc/apache2/sites-available/openvpn-monitor.conf
ScriptAlias / /var/www/html/openvpn-monitor/openvpn-monitor.py

	Options +ExecCGI
	AddHandler cgi-script .py
	DirectoryIndex openvpn-monitor.py

	AllowOverride None
	Require ip 192.168.0.0/16

保存并退出配置文件。

将openvpn-monitor Web根目录的所有权设置为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);

Page automatically reloads every 5 minutes. Last update: 16/08/2020 19:10:26
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

如果一切顺利,您现在可以通过以下地址访问您的OpenVPN统计信息 http:// 要么 http:// 按照我们的重定向。

然后你去。美丽,不是吗?所有功劳归于 弗隆隆。如您所见,我们具有本地连接的OpenVPN客户端的连接状态。

这标志着我们指南如何使用openvpn-monitor工具监视OpenVPN连接的结尾。请享用。

参考

OpenVPN监控器

相关教程

在Ubuntu 20.04上安装和设置OpenVPN Server

配置基于OpenVPN LDAP的身份验证

为OpenVPN客户端分配静态IP地址

在Ubuntu 18.04 / CentOS 8上配置StrongSwan VPN客户端


近期更新

Sidebar