web-dev-qa-db-ja.com

nftablesのsnatの何が問題になっていますか?

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
1
Sorcus

解決しました。 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を更新しています。

0
Sorcus