NPTv6 を nftables で実行したかったけど無理かった話
T/O.
ある Linux サーバのグローバル向けインターフェイスについているIPv6プレフィクスを、そのまま内部のユニークローカルアドレスに1:1でNATする (NPTv6) ケースを考える。
ip6tables であれば、以下のコマンドで実現できる。
# 環境例
#
# * グローバル向けインターフェイス
# インターフェイス名: eth0
# IPv6アドレスブロック: 2001:db8:abcd:1234::/64
# eth0にセットした自IPv6アドレス: 2001:db8:abcd:1234::1
#
# * LAN内で利用するユニークローカルアドレス
# fd3e:342:8694::/64
#
# 2001:db8:abcd:1234::/64 <---> fd3e:342:8694::/64 を1:1でマッピングする
# (※ただしeth0にセットした2001:db8:abcd:1234::1は除く)
ip6tables -A PREROUTING ! -d 2001:db8:abcd:1234::1/128 -i eth0 -j DNPT \
--src-pfx 2001:db8:abcd:1234::/64 --dst-pfx fd3e:342:8694::/64
ip6tables -A POSTROUTING -s fd3e:342:8694::/64 -o eth0 -j SNPT \
--src-pfx fd3e:342:8694::/64 --dst-pfx 2001:db8:abcd:1234::/64
これを nft に変換できないかと思ったが、 ip6tables-translate では対応していないようだ。
$ sudo ip6tables-save -t mangle > save $ sudo ip6tables-restore-translate -f save # Translated by ip6tables-restore-translate v1.8.4 on Tue Nov 28 20:09:36 2023 add table ip6 mangle : # -t mangle -A PREROUTING -d 2001:db8:abcd:1234::1/128 -i eth0 -j DNPT --src-pfx 2001:db8:abcd:1234::/64 --dst-pfx fd3e:342:8694::/64 # -t mangle -A POSTROUTING -s fd3e:342:8694::/64 -o eth0 -j SNPT --src-pfx fd3e:342:8694::/64 --dst-pfx 2001:db8:abcd:1234::/64 # Completed on Tue Nov 28 20:09:36 2023
何か正しい方法があるのか知りたい。