在未启用 NAT 的情况下,如何从私有 IP 源地址向公共 IP 目标地址 ping?

网络工程 IPv4 防火墙 纳特 网络服务商
2022-02-23 00:45:19

这些是我在这个论坛上提出的第一个问题,所以你能帮帮我吗?这些是在求职面试中被问到的:

  1. 当我们从内部 LAN 私有 IPv4 源地址向公共 IPv4 目标地址(例如8.8.8.8- Google 服务器)启动 ICMP 回显请求消息时,ping 是如何工作的,而不在我们的默认/内部网关路由器上启用 NAT/PAT 协议?

  2. 如果 ping 不成功(接收到请求的超时/超时)ICMP 错误类型,哪个下一跳节点将阻止向 Internet 转发流量(ICMP 控制)数据包?

  3. 我们应该使用哪些方法来获得成功的 echo 回复 ping?

我想到了一个可能的答案,我会在回复后与您分享,以查看它是否有效。

3个回答

私有 IPv4 地址由RFC1918定义,您将在其中找到:

由于私有地址没有全局意义,私有网络的路由信息​​不应在企业间链路上传播,具有私有源地址或目的地址的数据包不应通过此类链路转发。不使用私有地址空间的网络中的路由器,尤其是互联网服务提供商的路由器,应该被配置为拒绝(过滤掉)有关私有网络的路由信息​​。如果这样的路由器收到这样的信息,则拒绝不应被视为路由协议错误。

如果没有 NAT/PAT,ICMP 数据包将被您的 ISP 路由器丢弃。大多数情况下,它会被静默丢弃,但您可能会收到一些 ICMP 消息,具体取决于您的 ISP 所做的配置。

要从 Internet 主机对由私有 IP 地址发起的回显请求进行成功的 ping 回复,除了 NAT/PAT 之外别无选择。

当我们从内部 LAN 私有 IPv4 源地址向公共 IPv4 目标地址(例如 8.8.8.8 - Google 服务器)启动 ICMP 回显请求消息时,ping 是如何工作的,而不在我们的默认/内部网关路由器上启用 NAT/PAT 协议?

假设它是公共互联网上的服务器,ping 几乎肯定会失败。如果它是您自己网络上具有公共 IP 的服务器,您可能能够根据内部路由配置成功 ping 它。

如果 ping 不成功(接收到请求的超时/超时)ICMP 错误类型,哪个下一跳节点将阻止向 Internet 转发流量(ICMP 控制)数据包?

根据不同设备的配置,这里有各种可能性。

您的 ISP 很可能会根据反向路径过滤或对私有 IP 地址的显式阻止来简单地阻止数据包。如果他们不阻止它,那么沿途的其他人可能会阻止它。

如果数据包确实到达了目标服务器(因为没有人执行过滤最佳实践),那么将生成一个回复,但该回复不会找到它返回您的网络的方式。它要么由于缺少路由而被丢弃,要么被路由到目标网络中碰巧使用您使用的相同私有地址的某个地方。

我们应该使用哪些方法来获得成功的 echo 回复 ping?

要么启用某种形式的 NAT,要么在您的内部 LAN 上使用合法获得的公共 IP,并安排您的 ISP 将它们路由到您的网关。

这是我的正式回答。

如果数据包离开我的内部网络,阻止将其转发到 Internet 的下一跳将是来自 Internet 服务提供商的专用 LAN 的防火墙或具有配置/安装 ACL 规则的边缘路由器,该规则阻止转发源自一个私有IP源地址进入互联网?接收回显回复的另一种可能性是使用代理服务器而不是配置 NAT 的网关(接受回显请求/回复消息)或安装一个安全的私有 IPSec VPN 隧道到我们希望我们的流量到达的公共目标地址(当然vpn 隧道解决方案必须在两个对等/终端节点上进行授权和配置)。