Что не так с snat в nftables?

У меня есть две виртуальные машины (сервер, клиент) с WireGuard vpn. Когда я пытаюсь пропинговать любой ресурс IPv6 из клиентских пакетов, клиент не возвращается.

Tcpdump показывает мне пакеты ответа ICMP в интерфейсе enp0s3 (сервер), а не в 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)

Я сейчас обновляю вики, чтобы выделить это жирным шрифтом.

Другие вопросы по тегам