6.14.5. NAT 冲突
解决当 IPsec 主机也充当 NAT 路由器时发生的 NAT 冲突。不正确的 NAT 应用程序可以在加密之前转换源 IP 地址,导致数据包在网络上被未加密发送。
例如,如果在应用 IPsec 加密之前,如果数据包的源 IP 地址被伪装规则转换了,则数据包的源不再与 IPsec 策略匹配,并且 Libreswan 在网络上将其未经加密发送。
要解决这个问题,请添加一条防火墙规则,该规则从 NAT 中排除了 IPsec 子网之间的流量。在 POSTROUTING 链的开头插入此规则,以确保它在常规 NAT 规则之前进行处理。
例 6.1. 使用 nftables 框架的解决方案
以下示例使用 nftables 来配置基本的 NAT 环境,该环境不包括 192.0.2.0/24 和 198.51.100.0/24 子网之间的流量,从地址转换中排除:
# nft add table ip nat
# nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
# nft add rule ip nat postrouting ip saddr 192.0.2.0/24 ip daddr 198.51.100.0/24 return