显然,实施NPTv6当前 Linux 内核中的(IPv6 网络前缀转换)与连接跟踪不兼容。这非常令人失望,因为我觉得当您拥有来自 ISP 的动态 IPv6 前缀并希望拥有稳定的内部 IPv6 地址时,NPTv6 是比 NAT66 更明智的解决方案。
我当然不想做NAT66,但也需要状态防火墙,特别是考虑到NPTv6保留端到端连接,因此连接跟踪是必须的。
我的问题是,有谁知道任何补丁/附加组件/解决方法可以让我在同一主机上拥有 NPTv6 和翻译流的连接跟踪?
答案1
SNPT / DNPT 是专门为轻量级 NPTv6 创建的,专门在“mangle”表中完成,并且与连接跟踪不兼容。
如果采用连接跟踪,则存在可以执行 IPv6 网络前缀转换的 NETMAP 目标。因此,文档对此并不清楚,我怀疑是出于政治/宗教原因(NETMAP 目标实际上是 NAT66 的一种形式,许多人不喜欢它)。
因此,如果2607:xxx::/64
是外部前缀、fda3:xxx::/64
是内部前缀、eth0.99
是传出接口,则执行以下操作:
ip6tables -t nat -A POSTROUTING -o eth0.99 -j NETMAP --to 2607:xxx::/64 -s fda3:xxx::/64
ip6tables -t nat -A PREROUTING -i eth0.99 -j NETMAP -d 2607:xxx::/64 --to fda3:xxx::/64
现在,需要明确的是:NETMAP 执行 1:1 地址转换 (NAT),但我不确定它在校验和中立方面是否遵循 RFC6296,或者它如何以其他方式偏离 RFC 兼容的 NPTv6,但它是对我来说足够好了,而且它有效。