提供单一IP访问

提供单一IP访问

我已通过 Plesk 将服务器上的专用 IP 分配给我的一位客户。但当他访问任何外部内容时,显示为主机 IP 的 IP 是我服务器的主 IP,而不是分配给他的专用 IP。可能是什么问题,我该如何解决。

答案1

所有 TCP/IP 堆栈中的默认行为是,除非您另行指定,否则传出连接将绑定到连接需要采用的路由的传出接口上的第一个地址(如果有两个接口可以路由连接,则将选择路由表中的第一个接口) - 在本例中是您的主地址。如果您需要显示来自其他地址之一,或者需要/想要强制选择连接路由所通过的接口,则需要指定要绑定到的本地接口或地址。

许多库和工具都公开了此选项,例如 cURL 及其--interface选项:

curl --interface 192.168.1.10 http://www.example.com/document.html
curl --interface eth2 http://www.example.com/document.html
curl --interface eth0:1 http://www.example.com/document.html

大多数 libcurl 语言绑定都公开了这一点,例如在 PHP 中:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_INTERFACE, "192.168.1.10");
curl_exec($ch);
curl_close($ch);

[我选择 cURL 作为示例,因为它是用于连接外部服务的一种非常常见的方法,并且你在问题中没有提到什么外部连接是一个问题。其他库和工具通常提供类似的选项 - 请查看其文档了解详情]

作为管理员,您无法执行此操作:您的用户需要更新他的代码来控制他的传出连接绑定到哪个接口/地址,而不仅仅是允许 IP 堆栈遵循其在这方面的默认行为。

相关内容