Создано 2 виртуальных машины (сервер, клиент). Между ними настроен Wireguard VPN.
В nftables настроен snat, forwarding включен.
Пакеты ICMP Request уходят с клиента на сервер через VPN.
Но обратно пакеты (ICMP Reply) не возвращаются.
Конечная точка ICMP Reply пакетов - интерфейс enp0s3 на сервере.
На интерфейсе wg0 на сервере видны только Request пакеты, но не Reply.
Но, если выключить nftables и вместо него запустить ip6tables с таким же snat правилом,
то пакеты будут приходит и уходить без каких-либо проблем.
Если после этого отключить 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
Команда для сборки ISO образа клиента:
nix-build -A config.system.build.isoImage -I nixos-config=./wireguard_client_20.nix ./nixpkgs/nixos/default.nix
Nix файлы (там же nftables правила):
https://gist.github.com/MrSorcus/d6d8b8b6acff71536...
Команда для создания виртуальной машины (сервер):
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
Вывод команд ip a, ip -6 route, route -6, wg, sysctl -a, dmesg, lsmod.
https://gist.github.com/MrSorcus/1a8c9f5aacf895750... - сервер.
https://gist.github.com/MrSorcus/b7dc077249ca513ca... - клиент.
Выхлоп tcpdump с клиента. Пинг IPv6 адреса сайта (
https://ipv6.net/)
https://gist.github.com/MrSorcus/03e716fba67c41197... - логи с интерфейсов enp0s3 & wg0 клиента и сервера.
Выхлоп /proc/net/nf_conntrack с nftables:
https://gist.github.com/MrSorcus/601170680ff644c52...
Выхлоп /proc/net/nf_conntrack с ip6tables:
https://gist.github.com/MrSorcus/e043101f98e787c8c...
После команды:
[root@nixos:~]# ip6tables -t nat -A POSTROUTING -o enp0s3 -j SNAT --to-source 2a01:4f8:xx:xx::10
Все работает. Т.е. IPv6 ресурсы успешно пингуются.
И продолжает работать, если отключить ip6tables и включить обратно nftables.