多个设备(服务器)是否有可能具有相同的外部 ip?

网络工程 ip
2022-02-26 21:09:31

当我从家里检查设备的外部 IP (ipv4) 时,我看到手机和笔记本电脑的号码相同。想象这些设备是服务器,都托管不同的站点,并打开了 80 个端口。站点将从哪个服务器为用户打开?(他们在浏览器中写 <my-external-ip>:80)。

2个回答

当我从家里检查设备的外部 IP (ipv4) 时,我看到手机和笔记本电脑的号码相同。

这称为源 NAT - 私有 IP 地址被转换为单个公共 IP 地址(或小池)以用于传出请求并返回用于回复。

想象这些设备是服务器,都托管不同的站点,并打开了 80 个端口。站点将从哪个服务器为用户打开?(他们在浏览器中写:80)。

由于服务器本身在私有地址上运行,因此需要目标 NAT ,也就是端口转发,也就是反向 NAT。您只能将公共地址上的 TCP 端口映射到单个私有地址:端口,因此您不能将两个服务器映射到同一个公共端口上。您要么需要使用两个公共 IP 地址或两个公共 TCP 端口,要么使用应用层网关(反向 HTTP 代理)。

当然,所有这些都是 IPv4。IPv6 不使用 NAT,通常为您提供足够的地址来托管甚至更多的服务器。

如果您不在多 NAT 环境中,并且您的路由器/防火墙没有阻止或转发端口 80,则该端口上的所有连接都将转到您的路由器/防火墙。要将连接转发到 LAN 环境中的服务器托管的不同 Web 服务器,您应该设置反向代理。通过这种方式,您可以将通过端口 80 上的 HTTP 协议调用的不同主机名转发到不同的服务器。