Checkpoint防火墙有两种NAT模式:静态NAT(1对1的内部IP到外部IP)和隐藏NAT,在Cisco等公司中被称为“过载”。
虽然没有说得很清楚,但似乎静态 NAT 不会改变任何端口号,只会改变 IP。
相比之下,隐藏 NAT 会将传出数据包的源端口更改为某个随机的“动态分配”,然后在表中安装允许反向数据包转换的规则。清除连接端(TCP FIN、RST)或超时时会删除此规则。这基本上是所有当前支持 NAT 的设备始终执行的操作。
我只有一个外部 IP 地址,因此我需要使用隐藏 NAT 变体。但是,我想稍微增强它,因为我有一个非常特殊的主机,它运行一个非常特殊的服务,它特别不喜欢更改和随机选择其源端口号。我需要一个标准的隐藏 NAT,它用于“动态分配”除一个端口之外的所有端口(例如不将任何内容转换为 UDP 33333),并且来自该特定端口的此特定服务的数据包应始终且仅转换为此端口号。
在 Linux 中,我可以使用以下规则轻松做到这一点:
iptables -t nat -s MY-SPECIAL-HOST -p udp --sport MY-SPECIAL-SERVICE-PORT -j SNAT --to-source MY-WHITE-IP:MY-SPECIAL-SERVICE-PORT
iptables -t nat -s MY-LOCAL-NETWORK -p udp -j SNAT --to-source MY-WHITE-IP:10000-[MY-SPECIAL-SERVICE-PORT - 1]
iptables -t nat -s MY-LOCAL-NETWORK -j SNAT --to-source MY-WHITE-IP
(我知道我限制了传出 UDP 对话的端口数量,但这不是问题,因为实际的服务端口位于范围的末尾某处。)
如何在检查点中实现相同功能?如果需要的话,我有 GAIA R77.10 ClusterXL 和两个成员。
答案1
您可以使用静态 NAT、源和目标更改端口。只需查看策略的 NAT 选项卡,左侧是原始数据包(必须匹配才能触发转换的条件),右侧是转换后的数据包,您可以在其中进行必要的更改。因此,您所要做的就是为您的特殊主机创建一条带有静态 NAT 的规则,并为其他内容创建一条带有隐藏 NAT 的规则。