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에서 제대로 테스트되었습니다.

관련 정보