Назад | Перейти на главную страницу

Что не так со снатом в 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 от клиента. Пинг 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

Решено. http://marc.info/?l=netfilter-devel&m=150027256708621&w=2

Вероятно, вам не хватает цепочки NAT ответов, которую необходимо зарегистрировать.

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

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