入门:网络地址转换(NAT)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
L2 Linker
No ratings

解决方案

在你按照入门系列的前几篇文章设置了你的防火墙后,你可能需要开始设置服务器。除非你拥有一个足够大的公共IP子网来承载你所有的内部主机,下面的详细信息将指导你如何配置网络地址转换(NAT)或端口地址转换(PAT),使主机可以从外部到达,或使用一个特定的IP去到互联网。

 

在这一部分中,我将讨论,在确定如何配置NAT或PAT以最好地满足你的需要时,可能会用到的一些情况,并提出一些需要注意的事项。

 

 

多对一(Many-to-One),Hide NAT,源NAT(Source NAT)

 

Hide NAT是最常使用的地址转换。它将所有内部子网隐藏在一个单一的外部公共IP后面,与此类似:

1.png

 这个NAT策略将转换所有来自信任区(trust zone)的会话,去到非信任区(untrust zone),并将源地址改变为分配给外部物理接口的IP。它还将随机化源端口。

 

返回的数据包将自动被反向转换,因为防火墙维护着一个跟踪所有活动会话及其NAT操作的状态表。

 

多对多NAT(Many-to-Many NAT)

 

简单的Hide NAT策略的变体是,如果有更多的源地址可用,就添加更多的源地址。例如,如果你的ISP提供了一个/29或更大的公共子网,你有额外的IP地址可以用于各种事情。如果你的内部网络相当大,可能需要这些额外的地址来防止NAT池的超额订阅。

 

对于这种配置,地址类型从 "接口 "改为 "转换地址"。然后,可用的IP地址被添加为一个IP范围,或一个IP子网:

2.png

 防火墙将根据源IP地址的哈希值,从可用池中选择一个IP。对于来自该源IP的所有会话,该源地址将保持不变。源端口仍将是随机的。

 

如果源端口需要保持不变(一些应用程序可能需要一个特定的源端口),转换类型可以设置为动态IP,这将保留客户端的每个会话的源端口。转换的地址是通过 "下一个可用 "来分配的,意味着有一些注意事项:

  • 支持不超过32.000个连续的IP地址
  • 转换的地址池需要与你的内部主机数量相同或更大,因为每个内部主机都被分配自己的转换地址。

 

如果上述标准通常都能满足,但有时可能会被打破,可以设置一个备份,以便失败时返回到动态IP和端口。转换地址和接口地址选项都可以使用,默认是没有:

03.png

 

一对一NAT, 静态NAT

 

如果你需要从互联网上提供一个服务器,如本地SMTP或Web服务器,需要创建一个一对一的NAT策略,将传入的连接转发到一个特定的服务器。有几种不同的方法来完成这个任务:

 

双向策略(Bi-directional policy):

 

在双向策略中,像上述NAT策略一样,创建常规的出站静态NAT策略,并设置双向标志(bi-directional flag),这允许系统创建一个(看不见的)隐含的入站策略。

4.png

该策略将来自信任区(trust),目的地为非信任区(untrust),源地址设置为服务器的内部IP,源转换为其公共NAT地址。一个隐含的策略将被创建,其源区(source zone)为不信任区(untrust),目的地为任何(Any),目的IP为公共NAT地址,目的转换为服务器的IP地址。

 

这是创建几个一对一转换的简单方法,如果几个服务器都有自己独特的公共IP地址,就能完美地工作,这给我们带来:

 

单一方向的策略(Uni-directional policy):

 

单一方向的NAT允许对策略的控制比双向的多一点,它允许PAT/端口地址转换。PAT使你能够在不同的内部服务上共享一个公共IP地址。

 

在接下来的3条规则中,你可以看到3个不同的入站静态NAT的例子:

  • 规则#1是一个传统的一对一规则,将所有入站端口转换到内部服务器,并保持目标端口
  • 规则#2只将目的端口80的入站连接转换到端口8080的内部服务器上
  • 规则#3像规则#2一样,转换同一公共IP地址的入站会话,但目的端口25到不同的内部服务器保持目的端口25

5.png

注意事项:

  • 为什么目的区域(destination zones)被设置为不信任(untrust),什么是目的接口?
  • "任何 "(any)可以作为一个入站(非信任到非信任)(untrust to untrust)NAT的目的地址吗?

 

安全策略应该被设置为源区(source zone)是不可信任的,目的区(destination zone)(最终目的区)是信任的,目的地址是公共地址,预NAT(pre-NAT)。

6.png

 

源和目的NAT

 

在某些情况下,可能需要同时执行源和目的NAT。一个常见的例子是U-Turn情况,即内部主机需要连接到一个内部服务器,该服务器与客户端在同一网络上,使用它的公共IP地址。

 

已经有一篇很好的文章和一个教程视频更详细地介绍了U-Turn,但简短的描述是这样的:

 

为了能够在一个公共IP上到达内部资源,需要创建一个新的NAT策略,以适应信任到不信任的(trust to untrust)转换。

 

如果源转换(source translation)不包括在这个策略中,服务器将收到原始源地址的数据包,导致服务器直接向客户发送回复数据包。

 

这就形成了一个不对称的循环:客户端-防火墙-服务器-客户端,防火墙会话将被终止,因为它违反了TCP的完整性检查。

 

解决办法是添加源转换,例如,防火墙IP,因此服务器的回复数据包被发送到防火墙,允许 "有状态(stateful)"会话。

 

9.png

 

额外的:VWire上的NAT

 

如果您能够编辑路由器上的路由表,也可以在VWire上实现NAT(一个ISP路由器可能不允许这样做)。理想情况下,你在VWire的两端都有一个路由器,以保持事情的简单性,但如果你想挑战一下,你也可以只用一个上游路由器来实现:

 

在两个路由器之间,你应该创建一个小的点对点子网,例如,10.0.0.0/30。给每个路由器分配一个IP,并在位于转换一侧的路由器上为转换后的IP地址添加路由,例如,在不信任的路由器上为198.51.100.1添加路由,指向信任路由器的IP。防火墙会处理剩下的事情。

11.png

 

注意事项

  • 区域的解决(Zone resolution)是通过路由查询实现的。当防火墙收到一个数据包时,会进行路由查询,以检查源子网和目标子网的路由位置,并将适当的区域(zone)分配给该会话。在来自互联网的入站流量的情况下,源区(source zone)将是不信任的(untrust),因为默认路由0.0.0.0/0指向不信任的接口,而目的IP地址pre-NAT,也是不信任的,因为它是连接到不信任的接口的IP(上述例子中的198.51.100.0/24)。

 

  • 在NAT策略中使用目的接口(destination interfaces)可以帮助防止在使用类似的NAT策略时发生冲突。 例如,如果存在两个外部接口,到两个不同的ISP,保持不同的公共IP地址,可以配置两个相同的出站NAT规则。

14.png

  • 假如使用的NAT IP没有在接口上进行物理配置(例如,接口198.51.100.1 ,为服务器198.51.100.5做NAT),防火墙将发送无故ARP数据包,通知邻居它承载了一个IP地址,并将回复上游设备的ARP请求。无故ARP也可以手动触发:admin@MyFW> test arp gratuitous interface ethernet1/1 ip 198.51.100.6

发送了1个ARPs

注意:如果一个NAT规则被配置为将转换应用于一个没有配置在接口上的子网,防火墙将为该子网的所有IP地址发送无故ARP。

 

  • 由于防火墙为目的(入站)NAT的目的地址中列出的地址提供代理ARP解析,目的地址子网必须与目的转换子网相匹配。不允许使用 "任何(any)"作为目的地址。

 

  • 当为内部客户端创建NAT策略以通过其公共IP到达dmz或受信任网络(trusted network)中的服务器时,无论如何确保将其置于Hide-NAT策略之上

 

超额订阅(Oversubscription)

 

当防火墙有多个(两个或更多)并发会话共享同一转换的IP地址和端口对时,就会发生超额订阅,并且当公共 IP 地址对于正在创建的会话数量来说太少时会提供可扩展性。例如,通常情况下,并发会话的最大数量是64K(65.000个源端口减去1024个 "服务器 "端口)。根据平台,超额订阅允许每个IP最多有512K并发会话,超额订阅为8x。

 

一些相关的文章:

如何改变NAT超额订阅率(How to Change the NAT Oversubscription Rate)

如何检查NAT规则的超额订阅(How to Check the Oversubscription on a NAT Rule)

Rate this article:
  • 959 Views
  • 0 comments
  • 0 Likes
Register or Sign-in
Contributors
Labels
Article Dashboard
Version history
Last Updated:
‎01-16-2023 06:29 PM
Updated by: