VyOSでNAT64してIPv6-Mostlyなネットワークをつくる

なぜ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できていることが確認できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください