Что не так с 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)
Я сейчас обновляю вики, чтобы выделить это жирным шрифтом.