我对网络研究还很陌生,尽管这可能是一个基本问题,但我一直在思考这个问题。我曾与网络界的人士交谈过,他们谈到必须远程连接(通过 Telnet 或 SSH)到设备才能查看配置并进行更改。在我的研究中,我也尝试过远程连接,但从未通过 WAN 或连接到另一个网络中的设备。
假设您有两个位于不同州的办公室分支机构,它们不通过专线连接,而是通过互联网路由流量以相互通信。假设在分支机构 A 中,您需要从分支机构 B 连接到一台 Cisco 交换机。该交换机的私有 IP 地址为 192.168.1.50 /24。由于这是一个私有地址,并且不是唯一地址,那么分支机构 B 的人员如何启动与设备的 telnet 或 SSH 连接?
现在我对 NAT 和 PAT 有所了解,但了解不多。我理解,如果设备想要通过互联网与 Web 服务器通信,其私有地址将被转换为公共/可路由 IP,并使用端口号来识别会话。这是有道理的,因为 Web 服务器可以看到要回复谁。但在我的 telnet 示例中,当设备配置了私有地址时,分支 B 中的用户如何能够找到分支 A 中的确切设备?
抱歉,如果这是非常基础的,我正在尝试更好地理解这里的概念,但对这个概念感到很困难。这可能适用于多种协议,而不仅仅是 SSH 或 Telnet,但我只是用它们作为示例。
答案1
当通过互联网路由时,Telnet 如何知道主机在哪里?
Telnet 不关心。这由 IP 处理。
假设您有两个位于不同州的办公室分支机构,它们不通过专线连接,而是通过互联网路由流量以相互通信。假设在分支机构 A 中,您需要从分支机构 B 连接到一台 Cisco 交换机。该交换机的私有 IP 地址为 192.168.1.50 /24。由于这是一个私有地址,并且不是唯一地址,那么分支机构 B 的人员如何启动与设备的 telnet 或 SSH 连接?
你实际上不能直接通过公共互联网发起这样的连接,正是因为您提到的原因——IP 地址来自私有范围,因此 ISP 无法将其路由到正确的位置。
一种常见的解决方法是站点到站点 VPN,它将数据包封装在另一个 IP 数据包(通常是 UDP 或 GRE)中,然后发送那到分支 B 的公共 IP 地址。然后,分支 B 的路由器解封装并将内部 IP 数据包发送到交换机。(当然,这只有在每个分支都有唯一的私有 IP 范围时才有效。)
另一种解决方法是 NAT(/PAT/NAPT) - 即静态配置的目标 NAT 规则(又名“端口转发”),希望在办公室中很少见,但在家庭互联网连接中却很常见。
现在我对 NAT 和 PAT 有所了解,但了解不多。我了解 PAT,如果设备想要通过互联网与 Web 服务器通信,其私有地址将被转换为公共/可路由 IP,并使用端口号来识别会话。这是有道理的,因为 Web 服务器可以看到要回复谁。但在我的 telnet 示例中,当设备配置了私有地址时,分支 B 中的用户如何能够找到分支 A 中的确切设备?
相同类型的转换可以在任何方向上进行,不必是“私有 → 公共”。例如,您可以连接到分支 B 的公共地址,在 TCP 端口 12345 上,并配置 PAT 规则,以便这些数据包被转换到目标 192.168.1.50 端口 22。
这通常称为“端口转发”;在 iptables 中它可以作为-j DNAT
规则实现。
再次强调,这在办公室间连接中并不常见,因为您需要相当多的静态 NAT 规则。然而,它通常用于家庭互联网连接,您只想托管一两个服务。