这可能吗(NAT??)

网络工程 ipv4 纳特 MAC地址 IP地址
2021-08-02 08:36:06

我在另一个网络上有一个设备,说它的 IP 是 10.1.1.1

我想从我自己的网络 ping 它,比如主机 192.168.1.1,但我想 ping 我本地网段中的一个地址,所以 192.168.1.2。

是否可以通过 NAT 将 192.168.1.1 ping 192.168.1.2,但实际上 ping 10.1.1.1?

这两个网络将通过同一路由器直接相互连接。

1个回答

你的实际问题:

是否可以通过 NAT 将 192.168.1.1 ping 192.168.1.2,但实际上 ping 10.1.1.1?

和你的评论:

我想从 192 网络 ping 10.1.1.1 地址和 10.0.0.0 网络的源地址

是两个非常不同的东西。

首先,我们必须确保您了解当一台主机向另一台主机发送数据包时会发生什么:

当源主机发送一个三层数据包时,它会构建一个二层帧,因此它需要将三层目的地址与二层目的地址相关联以构建帧。对于 IPv4 和 IEEE LAN 协议(以太网、Wi-Fi 等),它将使用 ARP(地址解析协议)为第 3 层目标地址获取第 2 层目标地址。

源主机首先需要判断目的主机是否与自身在同一个三层网络。它通过使用其配置的网络掩码屏蔽第 3 层源地址和目标地址来实现这一点。如果结果相同,源主机就会知道目的主机和自己在同一个网络上,直接使用ARP查找目的二层地址。如果结果不同,则源主机知道目标主机与它位于不同的网络上,它将使用 ARP 来查找其配置网关的目标第 2 层地址。在任何一种情况下,第 2 层帧都是使用 ARP 进程返回的第 2 层地址(目标主机或到达目标主机的网关)构建的。

ARP 的工作原理是首先查看主机的 ARP 表以查看它是否包含目标第 3 层地址的条目。如果是,它使用与第 3 层目的地址条目相关的第 2 层目的地址。如果没有,它会发送一个广播 ARP 请求,询问“谁拥有这个第 3 层地址,你的第 2 层地址是什么?” 它将等待答复,如果没有得到答复,则最终超时,并将错误通过网络堆栈备份到应用程序。

还要记住,ping 是一个双向应用程序,它使用 ICMP 回显请求来请求 ICMP 回显回复,因此 ping ICMP 回显请求到达目标主机是不够的,但 ICMP 回显回复还必须能够返回到源主机,这意味着目标(现在是源)主机也必须能够向源(现在是目标)主机发送数据包。


看看你的问题,有一些可能性会如何发挥作用:

  • 如果源网络上已经存在目标三层地址为 的主机192.168.1.2该主机将192.168.1.1使用其第 2 层地址回复源主机 ( ),并且源主机最终将 ping 其自己网络上的邻居。
  • 如果源网络上没有具有三层目的地址的主机,则 ARP 请求将超时,并将错误从网络堆栈向上发送到 ping 应用程序,从而导致目标不可达错误消息。
  • 另一种可能性是您有一个可以配置代理 ARP(一个安全问题)的路由器,并且它可以配置为将发往相同网络的流量发送到不同的网络,并且还可以执行地址第 3 层数据包目标地址上的转换 (NAT),转换192.168.1.210.1.1.1. 目的主机随后会收到一个源主机为192.168.1.1、目的地址为 的数据包10.1.1.1,并能正常回复 ping。

查看您的评论,源主机可以将数据包发送到真正的目的地,但是让目标路由器(连接到目标网络的路由器)使用公共源 NAT 将源第 3 层地址更改为路由器接口的第 3 层地址目标网络。


同时进行两种场景将需要两种技术。


无论如何,您想要的似乎是一个巨大的杂物,您应该有正当理由而别无选择。路由器在网络之间路由数据包,如果您有两个不同的网络,那么简单路由将在网络之间发送数据包,并且您避免了 NAT 固有的所有问题。