当客户端连接到我的服务器时,我需要知道它的公共IP (也就是ISP的IP)。我尝试了learn-address脚本,但它没有提供真正的IP。目前,可以从OpenVPN日志文件(模式:MULTI: Learn: 10.2.1.5 -> client-5/27.147.X.Y:34244)获得它。
服务器运行一个繁忙的星号PBX。因此,频繁地解析日志是效率低下的(当日志文件的大小变得很大时,情况会变得更糟)。
每当客户端从不同的IP连接/重新连接时,我都需要更新数据库。我需要一个简单的解决办法。
确切地说,我需要将inner ip映射到OpenVPN隧道的outer ip。
注:我在tun模式下使用来自CCD文件的静态分配的IP地址(例如,10.2.1.5作为通用名称客户端-5)。
发布于 2021-05-15 09:36:06
好了搞定了。我是从脚本执行过程中的环境变量OpenVPN传递中找到的。
我检查了ifconfig_pool_remote_ip和trusted_ip环境变量。
下面是OpenVPN在客户端连接时执行的代码。
#!/usr/bin/env php但是,在我在variables_order = "EGPCS"中添加/etc/php.d/99-env.ini之前,环境变量是不可访问的(我创建了这个文件)。
虽然它需要将script-security 2和client-connect /my/script/path.php添加到OpenVPN服务器配置文件中,但它解决了我的问题。
https://serverfault.com/questions/1063587
复制相似问题