如果我将 http 服务绑定到 192.168.1.2,它会向我的路由器发出额外请求以确定我的本地 IP 是什么,或者它会将 IP 与本地网络配置进行比较,如果它们匹配则无处可去?
另外为什么我无法将服务绑定到 127.0.0.1:8888?
答案1
如果您的主机已将 192.168.1.2 配置为其 IP 地址,则无需向路由器发出额外请求以绑定并监听该 IP 的端口。
但是,许多 HTTP 服务器会对 IP 进行反向 DNS 查找,以尝试了解与此 IP 关联的主机名。您可能无需担心这一点。
答案2
我想说的是,您的第一个问题与操作系统有关,但我认为没有哪个现代操作系统可以这样工作。如果您将该 IP 分配给机器本地的 NIC,您的流量将不会离开 NIC。
至于第二个问题,您需要让我们知道您正在使用什么 HTTP 服务器以及您使用的是什么操作系统。
答案3
如果特定 IP 在本地网络接口上配置,服务器将把您指定的 IP 与 IP 所在的接口进行匹配。然后它将只监听通过该设备传入的流量。(它不需要在网络上进行“检查”)。
这可以是一个很好的安全措施,例如如果您有一个仅在本地需要的服务(例如 MySQL),请不要将其绑定到面向互联网的接口。
通常情况下,如果您为服务提供一个本地不存在的 IP,它将返回类似“无法绑定到 X”的错误。但是,在某些情况下,您需要将服务绑定到服务上可能当前不存在的 IP。例如,在高可用性设置中,IP 可以在服务器之间移动。
在这种情况下,sysctl 设置net.ipv4.ip_nonlocal_bind
将允许您这样做而不会出现错误。