なぜIPv6-Mostly ネットワークが求められるのか
IPv4アドレスの枯渇からいずれIPv6に移行する必要が出てきます。IPv4とIPv6のデュアルスタック構成では、アドレスの2重管理になることの運用負荷の増大が課題になってしまいます。これらから今後IPv6 onlyのネットワークが必要になると考えられます。
しかし、IPv6のみのネットワークからIPv4ネットワークとの接続性をどのようにするかが課題になってきます。
IPv6-Mostlyネットワークでは、464XLATによってIPv4ネットワークとの接続性を確保しながら、ほぼIPv6なネットワークへの移行を進めることができます。
464XLATとは
464XLATとは、IPv6とIPv4の共存技術の一つです。
IPv4ネットワークにアクセスするときは、クライアント側でIPv4アドレスをIPv6アドレスに変換(CLAT: Client side translator)します。
IPv4ネットワークに出る時は、IPv4アドレスを変換したIPv6アドレスをルーター側でIPv4アドレスに変換(PLAT: Provider side translator)します。ここでNAT64が使われます。
これによってIPv6 onlyネットワークからIPv4ネットワークへの接続性を確保します。
詳細は、インターネット用語1分解説~464XLATとは~ – JPNIC や 「IPv6時代のIPv4を考える」 ~第二章~ 【464XLAT 事前公開資料】 が分かりやすいです。
VyOSでNAT64を実装する
VyOSのバージョンは2025.11.14-0020-rollingを使用しました。VyOSでNAT64とDNS64を実装しました。なぜDNS64かというと後述でも述べますが、Windows11はCLATに対応していないため、VyOSのDNSサーバで、IPv4アドレスをAAAAレコードに変換する必要があります。
VyOSのインタフェース設定
グローバル側のインタフェースをeth0、IPv6 onlyネットワーク側のインタフェースをeth1とします。
eth0側のネットワークはSLAACでアドレスを設定するのですが、ここではinterface-identifierを設定してIPv6アドレスを固定化しています。
set interfaces ethernet eth0 address '192.168.0.10/24'
set interfaces ethernet eth0 ipv6 address autoconf
set interfaces ethernet eth0 ipv6 address interface-identifier '::0:0:1ab0:1000'
set interfaces ethernet eth1 address '2001:db8:2000::1/64'
set interfaces ethernet eth1 ipv6 address
実験用IPv6ネットワークをNAT66で作る
私の環境ではグローバルIPv6アドレスは/64で配られているため、実験用のIPv6ネットワークのアドレスは、任意で割り当てて、NAT66でグローバルIPv6アドレスに変換することにしました。
set nat66 source rule 10 outbound-interface name 'eth0'
set nat66 source rule 10 source prefix '2001:db8::/32'
set nat66 source rule 10 translation address 'masquerade'
show nat66 source translations コマンドで、NAT66されていることが確認できます。

Router Advertisementの設定
eth1にRouter Advertisementを設定していきます。ここで2行目の設定でnat64 prefixをRAで配布します。IPv4アドレスを変換したIPv6アドレスのWell-known prefixは、64:ff9b::/96となるので、その値で設定します。
set service router-advert interface eth1 prefix 2001:db8:2000::/64
set service router-advert interface eth1 nat64prefix 64:ff9b::/96
set service router-advert interface eth1 name-server '2001:db8:2000::1'
以下のパケットのようにRouter AdvertisementにPref64 Optionが含まれるようになり、クライアント側はIPv4アドレスをIPv6アドレスに変換できるようになります。

NAT64の設定
NAT64の設定では、送信元のIPv4アドレスとなるアドレスとポート範囲、およびIPV4に変換する送信元IPv6アドレスのprefixを指定します。
set nat64 source rule 10 source prefix '64:ff9b::/96'
set nat64 source rule 10 translation pool 10 address '192.168.0.10'
set nat64 source rule 10 translation pool 10 port '1024-65535'
DNS64設定
DNS64の設定は以下のように設定を入れます。
set service dns forwarding allow-from '2001:db8:2000::/64'
set service dns forwarding dns64-prefix '64:ff9b::/96'
set service dns forwarding listen-address '2001:db8:2000::1'
動作確認
Windows11 25H2で、動作を確認しました。IPv4アドレスが設定されていない状態で、IPv6のみとなっています。


ブラウザで、IPv4のサイトに接続しても、IPv6アドレスに変換され、ページを表示できることが確認できます。

2025年12月時点でのWindows11は、CLATに対応していません。従って、以下のように直接IPv4アドレスを指定しても通信できません。

今後対応する予定があるようなので、その時は再度確認してみたいと思います。
iPad OSでも確認してみました。CLATできていることが確認できます。

