有没有办法让 NPTv6 在 Linux 上进行连接跟踪?

hai*_*img 5 ipv6 ip-conntrack

显然,目前在 Linux 内核中的NPTv6(IPv6 网络前缀转换)的实现与连接跟踪不兼容。这非常令人失望,因为当您拥有来自 ISP 的动态 IPv6 前缀并希望拥有稳定的内部 IPv6 地址时,我觉得 NPTv6 是比 NAT66 更明智的解决方案。

我当然不想做 NAT66,但也需要有状态防火墙,特别是考虑到 NPTv6 保留端到端连接,因此连接跟踪是必须的。

我的问题是,有没有人知道任何补丁/附加组件/变通办法让我在同一主机上拥有 NPTv6 和转换流的连接跟踪?

hai*_*img 5

SNPT / DNPT 是专门为轻量级 NPTv6 创建的,专门在“mangle”表中完成并且与连接跟踪不兼容。

如果采用连接跟踪,则有一个 NETMAP 目标可以进行 IPv6 网络前缀转换。因此,文档对此不清楚,我怀疑是出于政治/宗教原因(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
Run Code Online (Sandbox Code Playgroud)

现在,要明确一点:NETMAP 执行 1:1 地址转换 (NAT),但我不确定它是否遵循 RFC6296 与校验和无关,或者它如何以其他方式与符合 RFC 的 NPTv6 不同,但它是对我来说足够好,而且它有效。