$Date: 2025/08/19 09:53:08 $
NAT46/DNS46 機能とは、IPv4 パケットを IPv6 パケットに変換して転送する機能です。
本来、IP バージョンが異なるネットワークにあるホスト同士では、通信ができません。しかし、本機能を利用すると、LAN が IPv4 ネットワーク、WAN が IPv6 ネットワークという構成において、LAN にある PC から WAN にあるサーバーへのアクセスが可能になります。
すでに IPv4 アドレスで構築された LAN を変更することなく、IPv6 アドレスで提供されているサービスを利用できます。
以降、特に断りがない限り以下の構成で説明します。
ヤマハ RT シリーズでは、以下の機種およびファームウェアで、NAT46/DNS46 機能をサポートしています。
| 機種 | ファームウェア |
|---|---|
| RTX840 | すべてのリビジョン |
| RTX3510 | |
| RTX1300 | |
| RTX1220 | Rev.15.04.04 以降 |
| RTX830 | Rev.15.02.20 以降 |
| NVR510 | Rev.15.01.23 以降 |
| NVR700W | Rev.15.00.23 以降 |
IPv6 ネットワークに存在するホストの IPv6 アドレスと、変換用にプールした IPv4 アドレスを対応づけた一つの組。
NAT46 エントリーをキャッシュし、管理するテーブル。
本機能は、NAT46 機能と DNS46 機能で構成されます。動作の流れは以下のとおりです。
DNS46 機能は、AAAA レコードを A レコードに変換する機能です。動作は以下のとおりです。
DNS46 機能は、対応づけた IPv4 アドレスを A レコードとして DNS キャッシュに登録します。また、対応づけた IPv4 アドレス宛ての通信が発生したら、NAT46 機能によって、NAT46 テーブルにも登録します。
PTR レコードの問い合わせを中継する場合は、問い合わせる IPv4 アドレスを IPv6 アドレスに変換します。変換後の IPv6 アドレスには、A レコードを AAAA レコードに変換したときに、IPv4 アドレスに対応づけられたものを使用します。MX レコードなどの IP アドレスを含まないレコードの問い合わせを行う場合は、そのまま転送します。
NAT46 機能は、IPv4 パケットを IPv6 パケットに変換する機能です。動作は以下のとおりです。
NAT46 機能では、IP ヘッダーを変換するインターフェースとしてトンネルインターフェースを使用します。
NAT46 機能を利用した転送において、IP フィルターは以下の順に機能します。
WAN のホストに IPv6 アドレス、LAN のホストに IPv4 アドレスが設定されている構成にて、以下のように IP フィルターを設定するとそれぞれのホストが持つ本来の IP アドレスを指定できます。
LAN から WAN へ転送するパケットに対して、送信元アドレス、宛先アドレスの両方を指定して IP フィルターを設定したい場合は、以下のように指定できます。
NAT46 機能では、WAN のIPv6 プレフィックス ( 96bit ) と LAN の IPv4 アドレス ( 32bit ) を結合して生成した IPv6 アドレスを使用します。
このため、プレフィックス長が /96 の IPv6 プレフィックスを使用する必要があります。
ルーターでは、RA または DHCPv6 で受け取った IPv6 プレフィックスから /96 の範囲を割り当てるように設定してください。
NAT46 変換した IPv6 アドレスを IPv6 フィルターなどで設定する場合は、以下のように IPv6 プレフィックスに続けて IPv4 アドレスを指定できます。
IPv6 アドレスの形式 ( IPv6 プレフィックス ):( IPv4 アドレス ) 例. IPv6 プレフィックス 2001:db8:abcd::/96 IPv4 アドレス 192.168.100.2 ipv6 filter 1 pass 2001:db8:abcd::192.168.100.2
なお、show config コマンドやログの表示などで、NAT46 変換した IPv6 アドレスを表示すると 8bit ごと ( ドットの区切りごと ) に 16 進数の 2 桁で表示されます。
ipv6 filter 1 pass 2001:db8:abcd::c0a8:6402
↑ | ↑
| 16 進数で表示した IPv4 アドレス ( 192.168.100.2 )
IPv6 プレフィックス ( 2001:db8:abcd::/96 )
10 進数 16 進数
192 -> c0
168 -> a8
100 -> 64
2 -> 02
NAT46/DNS46 機能の設定例を示します。ルーター全体の設定は、「設定例」を参照してください。
ip route 172.16.0.0/24 gateway tunnel 1 ------------ a ipv6 prefix 1 ra-prefix@lan2::1:0:1/96 ------------- b ipv6 lan2 address ra-prefix@lan2::1/64 ipv6 lan2 dhcp service client ir=on tunnel select 1 tunnel translation nat46 ------------------------- c nat46 ip address pool 172.16.0.2-172.16.0.254 ---- d nat46 ipv6 prefix 1 ------------------------------ e ip tunnel mtu 1480 ------------------------------- f ipv6 tunnel mtu 1500 ----------------------------- f tunnel enable 1 dns server dhcp lan2 nat46=1 ----------------------- g
NAT46 機能を設定したトンネルインターフェースの情報は、show status tunnel コマンドで確認します。show status tunnel コマンドでは、以下の情報が表示されます。
# トンネルUP時
show status tunnel
TUNNEL[1]:
説明:
インターフェースの種類:NAT46
トンネルインタフェースは接続されています
開始: 2020/07/13 13:22:07
通信時間: 38分31秒
受信: (IPv6->IPv4) 0 パケット [0 オクテット]
送信: (IPv4->IPv6) 0 パケット [0 オクテット]
IPv6プレフィックス
2001:db8:abcd::/96
IPv4アドレスの範囲
172.16.0.2-172.16.0.254
10個使用中
有効なNAT46エントリーの個数
動的エントリー : 15
静的エントリー : 1
# トンネルDOWN時(UPしたことがない場合) show status tunnel TUNNEL[1]: 説明: インターフェースの種類:NAT46 トンネルインタフェースは一度も接続されていません
# トンネルDOWN時(UPしたことがある場合) show status tunnel TUNNEL[1]: 説明: インターフェースの種類:NAT46 トンネルインタフェースは接続されていません 開始: 2020/07/13 13:22:07 終了: 2020/07/13 14:00:38 通信時間: 38分31秒 受信: (IPv6->IPv4) 0 パケット [0 オクテット] 送信: (IPv4->IPv6) 0 パケット [0 オクテット]
NAT46 エントリーの情報は、show status nat46 table コマンドで確認します。show status nat46 table コマンドでは、以下の情報が表示されます。
show status nat46 table
IPv6 プレフィックス
2001:db8:abcd::/96
IPv4 アドレスの範囲
172.16.0.2-172.16.0.254
有効なNAT46エントリーの個数
動的エントリー : 15
静的エントリー : 1
-------------------------------- 静的エントリー --------------------------------
No. ホスト IPv4 アドレス IPv6 アドレス TTL(秒)
1 ローカル 192.168.100.2 2001:db8:abcd::c0a8:6402 100
リモート 172.16.0.1 2001:db8:1234::1
-------------------------------- 動的エントリー --------------------------------
No. ホスト IPv4 アドレス IPv6 アドレス TTL(秒)
1 ローカル 192.168.100.2 2001:db8:abcd::c0a8:6402 100
リモート 172.16.0.2 2001:db8:1234::2
2 ローカル 192.168.100.2 2001:db8:abcd::c0a8:6402 50
リモート 172.16.0.3 2001:db8:1234::3
3 ローカル 192.168.100.3 2001:db8:abcd::c0a8:6403 20
リモート 172.16.0.3 2001:db8:1234::3
: : : :
ip route 172.16.0.0/24 gateway tunnel 1 ipv6 prefix 1 ra-prefix@lan2::1:0:1/96 ip lan1 address 192.168.100.1/24 ipv6 lan2 address ra-prefix@lan2::1/64 ipv6 lan2 secure filter out 200 299 ipv6 lan2 dhcp service client ir=on tunnel select 1 tunnel translation nat46 nat46 ip address pool 172.16.0.2-172.16.0.254 nat46 ipv6 prefix 1 nat46 static 1 172.16.0.1 2001:db8:1234::1 ip tunnel mtu 1480 ip tunnel secure filter out 100 101 199 ipv6 tunnel mtu 1500 tunnel enable 1 ip filter 100 reject 192.168.100.10 * ip filter 101 reject 192.168.100.11 example.com ip filter 199 pass * * ipv6 filter 200 reject * 2001:db8:1234::10 ipv6 filter 299 pass * * dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.2-192.168.100.191/24 dns server dhcp lan2 nat46=1
本機能において出力されるSYSLOGメッセージの一覧を以下に示します。
| レベル | 出力メッセージ | 意味 |
|---|---|---|
| DEBUG | [NAT46] Translate error (IPv4 to IPv6). The packet need to fragment, could not fragment due to DF bit (mtu=XXX). | NAT46 変換 ( IPv4 アドレスから IPv6 アドレスへの変換 ) に失敗した。IP ヘッダーの DF ビットが原因でフラグメント化できなかった。 |
| [NAT46] Translate error (IPv6 to IPv4). Segments left in the routing extension header is not 0. | NAT46 変換 ( IPv6 アドレスから IPv4 アドレスへの変換 ) に失敗した。IPv6 ルーティングヘッダーの残りセグメントが 0 ではない。 | |
| [NAT46] Prefix is updated to PREFIX/PREFIX_LEN. | NAT46 変換で使用する IPv6 プレフィックスが更新された。 | |
| [NAT46] IPv4 address is exhausted. | NAT46 変換で使用する IPv4 アドレスプールを使い果たした。 |