Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过VPN连接:PHP$\u服务器仍然为我提供本地IP_Php_Vpn_Pptp - Fatal编程技术网

通过VPN连接:PHP$\u服务器仍然为我提供本地IP

通过VPN连接:PHP$\u服务器仍然为我提供本地IP,php,vpn,pptp,Php,Vpn,Pptp,我已经在AWS上安装了一个PPTP VPN服务器,一切都很好。当连接到我的VPN时,例如www.getip.com显示VPN服务器的IP地址 到目前为止还不错 在同一台服务器上,我安装了一台Apache服务器,在该服务器上我运行一个PHP脚本来获取我自己的IP地址: $ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; 无论我是否连接

我已经在AWS上安装了一个PPTP VPN服务器,一切都很好。当连接到我的VPN时,例如www.getip.com显示VPN服务器的IP地址

到目前为止还不错

在同一台服务器上,我安装了一台Apache服务器,在该服务器上我运行一个PHP脚本来获取我自己的IP地址:

$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
无论我是否连接到VPN,此代码显示我的本地IP。我没有使用清漆或任何类似的缓存

你知道为什么会这样吗? -$\u服务器变量是否保存在PHP会话中

非常感谢你的帮助

[更新]
这个问题肯定与VPN服务器和PHP脚本位于同一服务器上的事实有关。如果我把脚本放在另一台服务器上,一切都会按预期工作。如果连接到VPN,我希望看到服务器的公共IP(同时也是VPN服务器)。

如果您使用的是VPC,则存在一个问题,即本地IP将用于VPC内的所有通信。VPC内部不存在公共IP(我假设为EIP),它被分配到网络接口,并且只在IGW进出时转换

这意味着,当您通过www.getip.com进行检查时,您将获得预期的EIP,因为您通过了IGW,但在本地网络中,您将只看到本地IP。此外,PPTP VPN也可以通过IGW

Amazon建议您使用FDQN,即使您在内部并查找外部FDQN,您也将获得本地IP

我不知道这在经典的EC2中是怎样的,但我只能猜测它的相似之处

如果您确实需要公共IP,您可以通过使用Amazon服务来找到:

curl http://169.254.169.254/latest/meta-data/public-ipv4


(请参见此处:)

如何调用PHP脚本?如果它没有路由到Internet并返回,您很可能会得到一个内部适配器地址。它直接在index.phpNo中,我的意思是请求PHP脚本的是什么?您是否在本地对其进行http请求?啊,对不起。是的,这是一个HTTP请求(我使用浏览器),也从我的手机请求了页面,同样的问题。这完全有道理。当您使用VPN连接时,您基本上充当主机。为了证明我的观点,您甚至可以在手机上访问
localhost
(通过VPN连接),您应该可以访问您的站点。
curl http://169.254.169.254/latest/meta-data/local-ipv4