ipv6 dnatのnftables匿名マッピング

ipv6 dnatのnftables匿名マッピング

dnatルールを作成するときは、次のコマンドを指定できます。

nft 'add rule ip  twilight prerouting ip  daddr 1.2.3.0/24 dnat ip  prefix to ip  daddr map { 1.2.3.0/24 : 2.3.4.0/24 }'

次に、マップされたアドレスのdnatを取得します1.2.3.4 -> 2.3.4.4。たとえば、コマンドは期待どおりにnftables v1.0.4 (Lester Gooch #3)応答に従って動作します。ここ

ipv6で同じことを行うには、次のコマンドを使用します。

nft 'add rule ip6 twilight prerouting ip6 daddr aa:bb:cc:dd::/64 dnat ip6 prefix to ip6 daddr map { [aa:bb:cc:dd::]/64 : [bb:cc:dd:ee::]/64 }'
nft 'add rule ip6 twilight prerouting ip6 daddr aa:bb:cc:dd::/64 dnat ip6 prefix to ip6 daddr map { aa:bb:cc:dd::/64 : bb:cc:dd:ee::/64 }'
nft 'add rule ip6 twilight prerouting ip6 daddr aa:bb:cc:dd::/64 dnat ip6 prefix to ip6 daddr map { "aa:bb:cc:dd::/64" : "bb:cc:dd:ee::/64" }'

これにより、次のエラーメッセージが表示されます。

Error: syntax error, unexpected newline
add rule ip6 twilight prerouting ip6 daddr aa:bb:cc:dd::/64 dnat ip6 prefix to ip6 daddr map { [aa:bb:cc:dd::]/64 : [bb:cc:dd:ee::]/64 }
                                                                                                                                        ^
Error: syntax error, unexpected newline
add rule ip6 twilight prerouting ip6 daddr aa:bb:cc:dd::/64 dnat ip6 prefix to ip6 daddr map { aa:bb:cc:dd::/64 : bb:cc:dd:ee::/64 }
                                                                                                                                    ^
Error: syntax error, unexpected newline
add rule ip6 twilight prerouting ip6 daddr aa:bb:cc:dd::/64 dnat ip6 prefix to ip6 daddr map { "aa:bb:cc:dd::/64" : "bb:cc:dd:ee::/64" }
                                                                                                                                        ^

nftablesで匿名のipv6マッピングを作成する方法はありますか?

答え1

重要な要約:少なくともnftablesバージョン> = 1.0.5が必要です。


存在するバージョン 1.0.5:

      scanner: allow prefix in ip6 scope

どちらが一致するのか今回提出してください:

スキャナー:IP6範囲のプレフィックスを許可

「ip6プレフィックス」は有効な構文であるため、スキャナがip6コンテキストでもそれを認識していることを確認してください。

テストケースも追加してください。

[...]

diff --git a/tests/shell/testcases/sets/0046netmap_0 b/tests/shell/testcases/sets/0046netmap_0
index 2804a4a2..60bda401 100755
--- a/tests/shell/testcases/sets/0046netmap_0
+++ b/tests/shell/testcases/sets/0046netmap_0
@@ -8,6 +8,12 @@ EXPECTED="table ip x {
                           10.141.13.0/24 : 192.168.4.0/24 > }
             }
      }
+     table ip6 x {
+            chain y {
+                    type nat hook postrouting priority srcnat; policy accept;
+                    snat ip6 prefix to ip6 saddr map { 2001:db8:1111::/64 : 2001:db8:2222::/64 }
+            }
+     }
 "
 
 set -e

対応する回帰テストはOPの試みと似ています。 OPの構文はnftables 1.0.7で正しくテストされました。

関連情報