连接到本地 IP 地址与公共 IP 地址

连接到本地 IP 地址与公共 IP 地址

假设我在局域网中有两台计算机,它们连接到路由器以共享公共 IP 地址。路由器将端口 22 转发给其中一台。如果第二台计算机使用其私有 IP 地址(例如)连接到它,这是否与使用其公共 IP 地址(例如)连接到它相同?ssh [email protected]ssh [email protected]

我说的“相同”是指数据包的路由完全相同。我知道当使用公有 IP 地址连接时,服务器将把主机视为 71.177.17.58,而当使用私有 IP 地址连接时,服务器将把主机视为 192.168.1.2,但这是否意味着在前一种情况下数据包会流出 LAN?还是路由硬件首先解析最短路径(仅通过 LAN)?

答案1

路由完全不同。当您使用本地地址时,路由器只会来回传递数据包,而不会进行转换。如果您只是用交叉电缆将两台计算机连接在一起,这将起作用。您需要路由器才能使外部 IP 地址正常工作。

如果您使用外部地址,路由器将在转发数据包之前转换目的地。这称为 NAT(网络地址转换)。在这种情况下,您将使用 DNAT(目标 NAT)。除非路由器支持发夹 NAT,否则您将无法从本地网络内部连接到外部 IP 地址。当您使用 NAT 时,路由器需要做更多工作,并且连接速度可能会明显下降。

假设您的源计算机位于 192.168.2.8 且您的路由器位于 192.168.2.1,您将获得:

        Computer 1                    Computer 2
  Source IP   Destination IP   Source IP    Destiantion IP
192.168.2.8 -> 192.168.2.2    192.168.2.8 -> 192.168.2.2   Local address (Direct)
192.168.2.8 -> 71.177.17.58   192.168.2.1 -> 192.168.2.2   External Address (NAT)
                Source IP    Destination IP
                         Router

对于返回数据包,源 IP 地址和目标 IP 地址会被反转。

对于来自互联网的连接,使用的 NAT 类型取决于连接的来源地。

        Local Computer                       Internet 
  Source IP    Destination IP       Source IP     Destination IP
192.168.2.2 -> xxx.xxx.xxx.xxx    72.177.17.58 -> xxx.xxx.xxx.xxx   Outgoing (SNAT)
xxx.xxx.xxx.xxx -> 192.168.2.2    xxx.xxx.xxx.xxx -> 72.177.17.58    Incoming (DNAT)
                     Source IP    Destination IP
                             Router

答案2

除非存在某种客户端隔离,否则通过本地网络上的流量,两个主机将直接相互通信,根本不需要路由器。

至于访问公共 IP,这完全取决于路由器。有些路由器会允许这种流量并将其转换为 IP 内部流量。其他路由器则根本不允许。

相关内容