OpenVPN 服务器为每个连接到网络外部的客户端分配一个内部 IP 地址。我希望在分配这些 IP 地址后将其存储在数据库中。有没有一种简单的方法可以判断哪些 IP 地址是由 OpenVPN 服务器分配的?
感谢帮助
答案1
如果这些不是静态分配的,那么除了从日志文件中提取它们之外没有其他好的方法,因为连接将被随机分配 IP 地址。
如果它们是静态分配的并且您正在使用 Open VPN AccessServer,您可以这样做:
sudo /usr/local/openvpn_as/scripts/sacli UserPropGet
输出中应产生一个 IP 地址列表,如下所示:
{
"<< name_of_user_profile >>": {
...
"conn_ip": "xxx.xxx.xxx.xxx",
...
},
...
}
其中conn_ip
是连接 IP 地址。
如果您只是试图记录用户的 IP 地址并将该信息存入数据库,那么您可能会看到以下内容:
在这种情况下,您正在使用 OpenVPN 访问服务器,您可能需要尝试:
grep "primary virtual IP" /var/log/openvpnas.log** > output_file_name
这将为您提供一个包含所有用户关联的 IP 地址的文件。从那里,您可以进一步修改输出以从文件中获取所需的位。
答案2
您应该看看 /etc/openvpn/openvpn-status.log:
OpenVPN CLIENT LIST
Updated,Fri Sep 4 11:07:18 2020
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
client1,11.12.13.14:44444,50000,25000,Fri Sep 4 11:00:54 2020
client2,11.12.13.15:44444,27000,5500,Fri Sep 4 11:00:52 2020
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.7,client1,11.12.13.14:44444,Fri Sep 4 11:06:13 2020
10.8.0.6,client2,client2,11.12.13.15:44444,Fri Sep 4 11:03:56 2020
GLOBAL STATS
Max bcast/mcast queue length,2
END