Wireguard VPNを備えた2つの仮想マシン(サーバー、クライアント)があります。クライアントパケットからIPv6リソースにpingを実行しようとすると、クライアントに戻りません。
Tcpdumpは、wg0(サーバー上のvpnインターフェイス)ではなく、enp0s3インターフェイス(サーバー)でICMP応答パケットを表示します。ただし、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にpingを実行します( 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)
私は今、これを太字にするためにwikiを更新しています。