- Access exclusive content
- Connect with peers
- Share your expertise
- Find support resources
解决方案
在你按照入门系列的前几篇文章设置了你的防火墙后,你可能需要开始设置服务器。除非你拥有一个足够大的公共IP子网来承载你所有的内部主机,下面的详细信息将指导你如何配置网络地址转换(NAT)或端口地址转换(PAT),使主机可以从外部到达,或使用一个特定的IP去到互联网。
在这一部分中,我将讨论,在确定如何配置NAT或PAT以最好地满足你的需要时,可能会用到的一些情况,并提出一些需要注意的事项。
多对一(Many-to-One),Hide NAT,源NAT(Source NAT)
Hide NAT是最常使用的地址转换。它将所有内部子网隐藏在一个单一的外部公共IP后面,与此类似:
这个NAT策略将转换所有来自信任区(trust zone)的会话,去到非信任区(untrust zone),并将源地址改变为分配给外部物理接口的IP。它还将随机化源端口。
返回的数据包将自动被反向转换,因为防火墙维护着一个跟踪所有活动会话及其NAT操作的状态表。
多对多NAT(Many-to-Many NAT)
简单的Hide NAT策略的变体是,如果有更多的源地址可用,就添加更多的源地址。例如,如果你的ISP提供了一个/29或更大的公共子网,你有额外的IP地址可以用于各种事情。如果你的内部网络相当大,可能需要这些额外的地址来防止NAT池的超额订阅。
对于这种配置,地址类型从 "接口 "改为 "转换地址"。然后,可用的IP地址被添加为一个IP范围,或一个IP子网:
防火墙将根据源IP地址的哈希值,从可用池中选择一个IP。对于来自该源IP的所有会话,该源地址将保持不变。源端口仍将是随机的。
如果源端口需要保持不变(一些应用程序可能需要一个特定的源端口),转换类型可以设置为动态IP,这将保留客户端的每个会话的源端口。转换的地址是通过 "下一个可用 "来分配的,意味着有一些注意事项:
如果上述标准通常都能满足,但有时可能会被打破,可以设置一个备份,以便失败时返回到动态IP和端口。转换地址和接口地址选项都可以使用,默认是没有:
一对一NAT, 静态NAT
如果你需要从互联网上提供一个服务器,如本地SMTP或Web服务器,需要创建一个一对一的NAT策略,将传入的连接转发到一个特定的服务器。有几种不同的方法来完成这个任务:
双向策略(Bi-directional policy):
在双向策略中,像上述NAT策略一样,创建常规的出站静态NAT策略,并设置双向标志(bi-directional flag),这允许系统创建一个(看不见的)隐含的入站策略。
该策略将来自信任区(trust),目的地为非信任区(untrust),源地址设置为服务器的内部IP,源转换为其公共NAT地址。一个隐含的策略将被创建,其源区(source zone)为不信任区(untrust),目的地为任何(Any),目的IP为公共NAT地址,目的转换为服务器的IP地址。
这是创建几个一对一转换的简单方法,如果几个服务器都有自己独特的公共IP地址,就能完美地工作,这给我们带来:
单一方向的策略(Uni-directional policy):
单一方向的NAT允许对策略的控制比双向的多一点,它允许PAT/端口地址转换。PAT使你能够在不同的内部服务上共享一个公共IP地址。
在接下来的3条规则中,你可以看到3个不同的入站静态NAT的例子:
注意事项:
安全策略应该被设置为源区(source zone)是不可信任的,目的区(destination zone)(最终目的区)是信任的,目的地址是公共地址,预NAT(pre-NAT)。
源和目的NAT
在某些情况下,可能需要同时执行源和目的NAT。一个常见的例子是U-Turn情况,即内部主机需要连接到一个内部服务器,该服务器与客户端在同一网络上,使用它的公共IP地址。
已经有一篇很好的文章和一个教程视频更详细地介绍了U-Turn,但简短的描述是这样的:
为了能够在一个公共IP上到达内部资源,需要创建一个新的NAT策略,以适应信任到不信任的(trust to untrust)转换。
如果源转换(source translation)不包括在这个策略中,服务器将收到原始源地址的数据包,导致服务器直接向客户发送回复数据包。
这就形成了一个不对称的循环:客户端-防火墙-服务器-客户端,防火墙会话将被终止,因为它违反了TCP的完整性检查。
解决办法是添加源转换,例如,防火墙IP,因此服务器的回复数据包被发送到防火墙,允许 "有状态(stateful)"会话。
额外的:VWire上的NAT
如果您能够编辑路由器上的路由表,也可以在VWire上实现NAT(一个ISP路由器可能不允许这样做)。理想情况下,你在VWire的两端都有一个路由器,以保持事情的简单性,但如果你想挑战一下,你也可以只用一个上游路由器来实现:
在两个路由器之间,你应该创建一个小的点对点子网,例如,10.0.0.0/30。给每个路由器分配一个IP,并在位于转换一侧的路由器上为转换后的IP地址添加路由,例如,在不信任的路由器上为198.51.100.1添加路由,指向信任路由器的IP。防火墙会处理剩下的事情。
注意事项
发送了1个ARPs
注意:如果一个NAT规则被配置为将转换应用于一个没有配置在接口上的子网,防火墙将为该子网的所有IP地址发送无故ARP。
超额订阅(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)