如何通过nftables进行NETMAP

问题描述 投票:0回答:1

我的局域网中有一些家庭服务器,通过 adsl 连接到互联网 我的路由器是基于linux的x86服务器,我在上面写了脚本 几个月前我将脚本更新为 nftables...

在 ipv4 下一切正常......

有一天,我发现我的ISP通过dhcp-pd提供ipv6 由于ipv6地址可能会发生变化,因此很难在服务器上设置静态的全局ipv6地址。 然后我正在考虑使用唯一的本地地址。 我需要类似的东西: ip6tables -t nat -A POSTROUTING -o eth0 -s fc00::/64 -j NETMAP --to 2006::/64 将地址 nat 为全局地址(并使用适当的 dnat 规则) 但我在 nftables 中找不到类似的东西......

我查了官方wiki: nft_nat

但是我不明白如何使用nft_nat。

如果是 ipv4 中的 /24 块,甚至可以将所有地址枚举到映射中。但在 ipv6 中枚举 /64 块确实是不可能的...

那么有没有办法通过nftables来做netmap呢? 或者我必须恢复到 ip(6)tables? 或者还有什么建议吗?

谢谢你。

ipv6 nftables
1个回答
0
投票

对于像我这样寻找最新答案的人,可以使用

nftables
完成状态网络前缀转换(又名 NPT/NPTv6/NAT66)。有一个常规用例 – RFC 7157,无需网络地址转换的 IPv6 多宿主

只需将以下

ip6 snat
规则放入 nat postrouting 挂钩中(使用您的前缀大小),如下例所示:

table inet mytable {
  chain srcnat {
    type nat hook postrouting priority srcnat; policy accept;
    ip6 saddr <local-prefix>::/64 snat ip6 prefix to <public-prefix>::/64
  }
}

您可以通过指定仅匹配从特定接口发出的数据包:

    oifname "<outgoing-interface>" ip6 saddr <local-prefix>::/64 snat ip6 prefix to <public-prefix>::/64
© www.soinside.com 2019 - 2024. All rights reserved.