非常简单的 NAT 问题。数据包如何返回?

网络工程 路由 纳特 防火墙
2021-07-13 12:32:00

对不起,问题很简单,我只需要一些帮助。

假设我的防火墙上有一个 NAT 规则,它将公共 IP 转换为私有 IP(比如 195.111.111.2 到 10.1.1.10)

我可以理解数据包如何遍历内部网络,但假设应用程序想要发回响应。它将具有“源地址”,因此知道将数据包发送到何处,并且很可能会在返回途中遇到一些默认路由,直到它遇到我的防火墙。我的防火墙如何知道将 195.111.111.2 源地址注入数据包?

我是否必须为每个 NAT 设置两个 NAT,还是一条 NAT 规则意味着将完成反向转换?

我觉得这可能不清楚,但希望不是。

3个回答

我以为我会回答我自己的问题。

我指的是修改目标 IP 的 DNAT(目标 NAT)。

以下是对数据包发生情况的简单解释,摘自http://www.mad-hacking.net/documentation/linux/security/iptables/nat.xml

  1. 数据包到达公共地址时,该地址设置为其目的地址,源地址设置为始发主机的地址。
  2. 遇到 DNAT 规则,其中数据包的目标地址被修改为内部 IP。
  3. 防火墙主机做出路由决定,并将数据包从正确的接口发送到刚刚重写的地址。数据包的源地址没有改变,仍然代表原始主机。
  4. 数据包到达我们指定的主机。然后该主机生成一个响应数据包,将其发送回原始主机。由于源地址未更改,因此应通过默认网关发回,默认网关将是上一步中的防火墙主机。
  5. 数据包由防火墙主机接收,防火墙主机看到它的目的地是它刚刚执行 DNAT 操作的同一台主机。因此,它修改了返回数据包的源地址,使其看起来像是来自它在第二步中被 DNATed 之前的目的地地址。
  6. 数据包到达请求它的主机,并且由于其源地址与原始请求发送的地址相同,因此很高兴收到。

在默认路由将数据包从接收数据包的不同接口发送出去的情况下,双 NATing 是答案。例如这个资源http://www.fwbuilder.org/4.0/docs/users_guide5/double_nat.shtml

NAT'ing 设备保存一个映射表。当数据包返回到原始发送者(发送它们的可路由 IP 地址)时,NAT 设备会在该表中进行查找,以使用内部私有 IP 重新寻址目标数据包。

你在编码防火墙吗?这可能会有所帮助

一种选择是维护包含详细信息的表,因此您需要 4 个字段,

source IP, Source Port, Dest IP, Dest Por吨。

当数据包将进入然后字段可能像

201.1.1.10, 80, 195.111.111.2 , 2345 let (201.1.1.10, 80 是默认网络的IP和端口)

那么您的防火墙会将其更改为喜欢

195.111.111.2, Port of firewall, 10.1.1.10, port of host

以及何时数据包将返回到您的防火墙

10.1.1.10, port of host, 195.111.111.2, Port of firewall