php中的fsockopen到远程服务器,远程服务器将获得什么IP


fsockopen inside php to a remote server, what IP will the remote server get?

Background:
我的apache web服务器运行在两个虚拟主机与两个不同的IP地址。我已经将这两个ip都列入了远程SMPP服务器/系统的白名单。我将从一台具有这两个IP地址的机器与远程服务器通信。
<情况/strong>:
我正在尝试打开到远程SMPP服务器的套接字连接。但是我想从不同的IP地址发起到服务器的连接。我试过的:我创建了两个文件夹mkdir /var/www/html/server{1,2},并在我的http.conf

中添加了以下行
Listen 1.1.1.1:80
Listen 2.2.2.2:80
<VirtualHost 1.1.1.1:80>
    DocumentRoot /var/www/html/server1
</VirtualHost>
<VirtualHost 2.2.2.2:80>
    DocumentRoot /var/www/html/server2
</VirtualHost>

和在每个文件夹我写相同的php文件打开套接字连接,并做任何它应该做的。我将把服务器2和第二个IP移动到一台新机器上。但在此之前,我只想确定第二个IP实际上是 白名单,并且我将能够通过该IP进行通信。

:当你在PHP内fsockopen时,哪个IP地址被发送到远程服务器?它是和$_SERVER['SERVER_ADDR']一样还是别的什么?

关于ip :
我看到了几个提到我机器实际IP地址的答案。假设我有两个eth卡,为我提供两个接口,即eth0和eth1接口,IP地址分别为1.1.1.1和2.2.2.2。两者都连接到外部世界,我可以通过任何地址呼叫我的机器。所以如果你的答案是类似于actual-public-link -up-ip-address-of-your-server请告诉我哪个是1.1.1.1还是2.2.2.2 ?如何判断哪一个是实际,哪一个是虚拟 ?

它将是您服务器的实际公共IP。

让我们假设您在服务器上有3个IP:

1.1.1.1 - main IP (link IP)
2.2.2.2, 3.3.3.3 - on some other network interfaces

所有请求将从主IP转到其他服务器。

还有另一种情况,1.1.1.1,2.2.2.2和3.3.3.3是链路接口。在这种情况下,您可能需要联系您的网络管理员,检查这些接口是如何配置的,以及主连接IP是什么。

例如,我有两个接口:eth0和eth1桥接,公共IP与桥接相关联。

相关文章: