taybinakh Asked: 2019-06-27 15:34:53 +0800 CST2019-06-27 15:34:53 +0800 CST 2019-06-27 15:34:53 +0800 CST 如何获取 OpenVPN 客户端的 IP 地址 772 OpenVPN 服务器为连接到网络外部的每个客户端提供一个内部 IP 地址。我想在分配这些 IP 地址后将它们存储在数据库中。有没有一种简单的方法可以判断 OpenVPN 服务器分配了哪些 IP 地址? 感谢帮助 scripts client openvpn 2 个回答 Voted Best Answer Penguino 2019-06-28T07:54:01+08:002019-06-28T07:54:01+08:00 如果这些不是静态分配的,那么除了从日志文件中提取它们之外,没有其他好的方法可以做到这一点,因为连接将被随机分配 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 连接日志和配置文件在哪里? 在这种情况下,您使用的是 OpenVPN 访问服务器,您可能想尝试: grep "primary virtual IP" /var/log/openvpnas.log** > output_file_name 这将为您提供一个文件,其中包含与所有用户关联的所有 IP 地址。从那里您可以进一步修改输出以仅从文件中获取所需的位。 rbs 2020-09-05T01:19:39+08:002020-09-05T01:19:39+08:00 你应该看看 /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
如果这些不是静态分配的,那么除了从日志文件中提取它们之外,没有其他好的方法可以做到这一点,因为连接将被随机分配 IP 地址。
如果它们是静态分配的,并且您使用的是 Open VPN AccessServer,您可以这样做:
这应该会在输出中产生一个 IP 地址列表,看起来应该是这样的:
其中
conn_ip
是连接 IP 地址。如果您尝试仅记录用户 IP 地址并将该信息存入数据库,那么您可能会查看以下内容:
OpenVPN 连接日志和配置文件在哪里?
在这种情况下,您使用的是 OpenVPN 访问服务器,您可能想尝试:
这将为您提供一个文件,其中包含与所有用户关联的所有 IP 地址。从那里您可以进一步修改输出以仅从文件中获取所需的位。
你应该看看 /etc/openvpn/openvpn-status.log: