如何连接两台具有相同私有 IP 地址但在不同 LAN 上的计算机

如何连接两台具有相同私有 IP 地址但在不同 LAN 上的计算机

有两个设备位于不同的城市,并且它们都具有相同的私有 IP 地址。如何让它们进行通信(SSH、RDP、FTP、Telnet 等)。请详细说明。

谢谢

答案1

我假设您谈论的是两个标准的住宅或商业互联网连接(而不是一条专线或通过 VPN 或类似方式链接的两个站点)。

在下面的示例网络中,我们有两栋建筑和一台服务器(位于世界任何地方),它们通过互联网连接。我们有两个路由器 -R1并且R2- 每个路由器都有不同的民众IP 地址(或“外部的“ IP地址)。

在建筑物内,路由器和设备都共享通用 IP 地址 - 路由器(R1R2)使用私人的的 IP 192.168.0.1,并且设备(DADB)使用私人的的 IP 地址192.168.0.10

在建筑物外部,路由器具有不同的民众IP 地址 -203.0.113.5203.0.113.219。服务器可在民众IP地址203.0.113.42

示例网络


这里有两种类型的 IP 地址之间有一个重要的区别,更多信息可以在 wiki 页面“保留 IP 地址“。

  • 公共网络 - 可直接通过互联网访问
    • 注意:我实际上使用了一组为文档保留的网络地址,而不是真正的公共地址
  • 专用网络 - 仅供网络内使用

为了DA访问互联网上的服务器或主机(例如203.0.113.42),它需要从路由器获得帮助 - 因为203.0.113.42无法在本地网络上访问。因此它将数据包发送到配置的路由器(R1),然后路由器将数据包转发到互联网。

在这种情况下,路由器将稍微重写数据包,标记“源地址“作为R1的公共地址(203.0.113.5),而不是DA的地址(192.168.0.10)。当数据包返回到 时R1,它将检查连接表,重写数据包以便再次指向目的地DA,然后将数据包转发到本地网络。

这就是所谓的网络地址解读(NAT),并将传出的数据包重写为使用路由器自己的地址的过程称为“伪装“——即:所有出站数据包似乎都来自路由器,而不是其后面的设备。

这允许私人网络(例如:DADB)上的设备与互联网上的公共服务器之间的通信。


为了展示 A 楼网络内部提供的一些服务,我们需要让它R1看起来更像服务器203.0.113.42...为此,我们引入转发端口

这是一种允许我们配置R1接受端口上的传入连接请求的技术(22例如SSH),并将其转发到其所服务的私有网络内的另一台主机。

本例中,DA在端口 上运行着一个 SSH 服务器22,因此我们配置R1将其外部接口(即: )上的端口 22 转发203.0.113.5:22到其内部接口(即: )上的服务器192.168.0.10:22

现在我们已经配置了端口转发,DB可以通过连接到的公共地址(即端口)来访问DA的 SSH 服务器。R1203.0.113.522笔记: DB不使用或不需要知道DA的私有 IP 地址,反之亦然。

网络地址转换将由您负责,完整链条将如下所示:

  • DB发送数据包至R2- 源:192.168.0.10,目的地:203.0.113.5
  • R2重写数据包 - 来源:203.0.113.219,目的地:203.0.113.5
    • R2通过互联网发送数据包,并R1接收它
  • R1重写数据包 - 来源:203.0.113.219,目的地:192.168.0.10
    • R1通过本地网络发送数据包,并DA接收它

返回路径/响应是相反的:

  • DA发送数据包至R1- 源:192.168.0.10,目的地:203.0.113.219
  • R1重写数据包-源203.0.113.5、目标:203.0.113.219
    • R1通过互联网发送数据包,并R2接收它
  • R2重写数据包 - 来源:203.0.113.5,目的地:192.168.0.10
    • R2通过本地网络发送数据包,并DB接收它

如您所见,冲突的私有地址根本不重要 - 没有任何单个设备会同时192.168.0.10被视为源和目标,或者可以通过两个接口访问。如果这是真的,那么链接显然不会起作用。


一些说明:

  • 路由器的配置界面差异很大,因此如果不知道您使用的是哪种路由器,我们就无法指导您完成端口转发设置。
  • 像这样设置端口转发将使您的服务可供整个互联网访问(除非您还配置了防火墙规则)。
  • 我强烈建议不要以这种方式设置未加密的服务(例如:Telnet / FTP)。最好使用 SSH / SFTP。
  • 必须确保您的服务受到适当的保护-例如:身份验证,速率限制等...

相关内容