nftables 中的 snat 有什么问题?

nftables 中的 snat 有什么问题?

我有两个虚拟机(服务器、客户端)带有 wireguard vpn。当我尝试从客户端 ping 任何 IPv6 资源时,数据包不会返回到客户端。

Tcpdump 显示 enp0s3 接口(服务器)中的 ICMP 回复数据包,而不是 wg0(服务器上的 vpn 接口)。但如果禁用 nftables 并启动 ip6tables,则一切正常。完成此步骤后,我禁用 ip6tables 并启用 nftables... 一切继续正常...

软件版本:

NixOS: 17.09.git.ebaff59 (Hummingbird)
WireGuard: 0.0.20170706
Nftables: 0.7

使用以下命令构建 ISO 映像:

服务器:

nix-build -A config.system.build.isoImage -I nixos-config=./wireguard_server_10.nix ./nixpkgs/nixos/default.nix

客户:

nix-build -A config.system.build.isoImage -I nixos-config=./wireguard_client_20.nix ./nixpkgs/nixos/default.nix

这里是 nix 文件:

使用以下命令创建虚拟机:

服务器:

virt-install \
--name NixOSVS10 \
--ram 1024 \
--vcpus 1 \
--cdrom /tmp/nixos_10.iso \
--os-type linux \
--nodisk \
--network bridge=br0 \
--graphics vnc,password="ABCDEF",port=5910,listen=2a01:4f8:xx:xx::13 \
--autostart \
--noautoconsole

客户:

virt-install \
--name NixOSVS20 \
--ram 1024 \
--vcpus 1 \
--cdrom /tmp/nixos_20.iso \
--os-type linux \
--nodisk \
--network bridge=br0 \
--graphics vnc,password="ABCDEF",port=5920,listen=2a01:4f8:xx:xx::13 \
--autostart \
--noautoconsole

Nftables 规则:

服务器:

客户:

ip a、ip -6 route、route -6、wg、sysctl -a、dmesg、lsmod 的输出。

服务器:

客户:

来自客户端的 Tcpdump 日志。Ping IPv6 地址 2001:19f0:7400:87a2::64 (https://ipv6.net/

/proc/net/nf_conntrack 的输出:

使用 nftables:

使用 ip6tables:

Snat 在 nftables 中无法正常工作。但按照以下步骤操作即可:

[root@nixos:~]# systemctl stop nftables
[root@nixos:~]# ip6tables -t nat -A POSTROUTING -o enp0s3 -j SNAT --to-source 2a01:4f8:xx:xx::10

答案1

解决了。 http://marc.info/?l=netfilter-devel&m=150027256708621&w=2

您可能缺少需要注册的回复 NAT 链。

https://wiki.nftables.org/wiki-nftables/index.php/Performing_Network_Address_Translation_(NAT)

我现在正在更新 wiki,将其以粗体显示。

相关内容