我是否在 Cisco ASA 5505 上正确使用了 NAT?

网络工程 思科 路由 纳特
2022-03-04 18:37:13

我正在尝试将远程桌面 (3389) 转发到我网络中的 PC。

我做到了,但我很好奇我是否做得对。这对我来说似乎不自然。我正在使用 ASDM 视觉设置。

NAT 规则本身位于 INSIDE 接口上。“原始”是“internal_ip:3389”,“翻译”是“external_ip:3389”。

“原始”(来自互联网的传入数据包)不是去“external_ip:3389”吗?“翻译”应该是内部PC。基本上是我上面所说的触发器。

但是如果我像这样在 OUTSIDE 接口上创建 NAT 规则,它就不起作用。

它不应该在 NAT 和 UN-NAT 之后工作吗?

1个回答

鉴于您所说,我认为您忘记考虑交通方向。让我们从 TCP 连接的高级视图开始,然后我们将讨论它如何应用于 NAT。

假设我的计算机的 IP 为 10.1.1.1,而我正在与 IP 为 3.3.3.3 的服务器通话。假设我正在发出一个 WEB/HTTP 请求,该请求在 TCP 端口 80 上运行。在网络上,纠察队将具有以下属性:

Source IP       : 10.1.1.1
Source Port     : 1111 (randomly chosen)
Destination IP  : 3.3.3.3
Destination Port: 80 

当此数据包到达目标服务器并且该服务器生成响应时,源和目标将被翻转。因此,返回流量将具有以下属性:

Source IP       : 3.3.3.3
Source Port     : 80
Destination IP  : 10.1.1.1
Destination Port: 1111

建立后,让我们看看 NAT 是如何影响这个数据包的。特别要注意,源 IP 是私有 IP,因此在互联网上讲话时必须进行 NAT。

那么,我们想要的是让 NAT更改 Outbound 流量上的 Source IP更改 Return 流量上的 Destination IP如果 NAT 要更改出站流量的目标 IP 或返回流量的源,则通信将永远无法正常工作。


现在,在您的特定情况下,您希望将发往您的公共 IP 地址的入站流量通过您的 NAT 设备转发到内部网络上的特定主机。因此,使用上面的数据包属性,您希望对看起来像这样的数据包进行 NAT:

Source IP       : 9.9.9.9       (some IP address out there on the internet)
Source Port     : 9999          (randomly chosen)
Destination IP  : 2.2.2.2       (your External_IP)
Destination Port: 3389          (Remote Desktop Port)

并且您希望它被 NAT 到以下内容:

Source IP       : 9.9.9.9       (unchanged)
Source Port     : 9999          (unchanged)
Destination IP  : 192.168.0.20  (your Internal_IP)
Destination Port: 3389          (Remote Desktop Port)

请注意,您打算更改目标 IP,而不是但请记住,我们在这里查看的是传入数据包的属性,而不是返回流量的属性。如果我们要绘制返回流量,我们最终会得到以下结果:

Source IP       : 192.168.0.20  (your Internal_IP)
Source Port     : 3389          (Remote Desktop Port)  
Destination IP  : 9.9.9.9       (unchanged)
Destination Port: 9999          (unchanged)

返回流量上,您打算对进行 NAT 。


现在,我们终于可以回到你原来的问题了:

“原始”(来自互联网的传入数据包)不是去“external_ip:3389”吗?“翻译”应该是内部PC。基本上是我上面所说的触发器。

但是如果我像这样在 OUTSIDE 接口上创建 NAT 规则,它就不起作用。

它不应该在 NAT 和 UN-NAT 之后工作吗?

您的防火墙被告知将从NATinternal_ip:3389external_ip:3389这只是当流量到达防火墙的内部接口时的源 - 也就是说,当您的防火墙看到RDP 连接的返回流量时。

当您在 OUTSIDE 接口上创建 NAT 规则时,它仍在查看数据包的源 - 这就是连接不起作用的原因,因为您实际上并不想更改传入数据包的源,您想改变目的地。

通过在 INSIDE 接口上配置 NAT,您是在告诉防火墙,当 Source IP:Port 为internal_:3389时,将其更改为external_ip:3389. 幸运的是,您的防火墙会自动执行相反的操作:将 Destination IP:Port 从更改external_ip:3389internal_ip:3389当它在外部接口上看到它时。

最后,正如您已经发现的那样,不,NAT 语句在任一接口上配置时都不起作用。特定的 NAT 语句专门针对 Source,因此必须从何时需要更改 Source 的角度进行配置。如果您从外部接口配置它,更改源将不允许流量通过您的 NAT 并到达您的内部主机。