$Date: 2023/07/06 20:30:27 $
NAT46/DNS46 機能とは、IPv4 パケットを IPv6 パケットに変換して転送する機能です。
本来、IP バージョンが異なるネットワークにあるホスト同士では、通信ができません。しかし、本機能を利用すると、LAN が IPv4 ネットワーク、WAN が IPv6 ネットワークという構成において、LAN にある PC から WAN にあるサーバーへのアクセスが可能になります。
すでに IPv4 アドレスで構築された LAN を変更することなく、IPv6 アドレスで提供されているサービスを利用できます。
以降、特に断りがない限り以下の構成で説明します。
ヤマハ RT シリーズでは、以下の機種およびファームウェアで、NAT46/DNS46 機能をサポートしています。
機種 | ファームウェア |
---|---|
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 : : : :
tunnel translation TYPE
no tunnel translation [TYPE]
設定値 | 説明 |
---|---|
nat46 | NAT46 トンネル |
トンネルインターフェースの変換種別を設定する。
tunnel encapsulation コマンドとの併用はできず、後から入力したコマンドが有効となる。
nat46 ip address pool IPADDRESS_LIST
no nat46 ip address pool [IPADDRESS_LIST]
NAT46 機能で IPv4 アドレスを IPv6 アドレスに変換するために使用する IPv4 アドレスのプールを設定する。
DNS46 機能が AAAA レコードを A レコードに変換するとき、AAAA レコードの IPv6 アドレスを当コマンドで設定した範囲内の IPv4 アドレスに変換する。
DNS46 機能で行われた IPv4 アドレスと IPv6 アドレスとの対応づけは、以降の通信において NAT46 機能が IP ヘッダーを変換する際に使用する。
IPADDRESS_LIST は 8 個まで設定可能。ただし、IPADDRESS_LIST に含まれる IPv4 アドレス の合計が 254 個を超えた場合はコマンドエラーとなる。
tunnel translation コマンドで変換種別として nat46 を選択した場合だけ有効である。
nat46 ipv6 prefix PREFIX_ID
no nat46 ipv6 prefix [PREFIX_ID]
NAT46 機能で送信元 IPv4 アドレスを送信元 IPv6 アドレスに変換するために使用するプレフィックスを設定する。
ipv6 prefix コマンドで設定したプレフィックス番号を指定する。
本コマンドで指定する ipv6 prefix コマンドのプレフィックスは以下の条件を満たす必要がある。
LAN2 で受信した /64 の RA のプレフィックスから、NAT46 機能で使用する IPv6 プレフィックスを設定する。
RA で配られる プレフィックス(/64):XXXX:XXXX:XXXX:XXXX:0000:0000:0000:0000/64 IPv4 アドレスに付与するプレフィックス:XXXX:XXXX:XXXX:XXXX:0000:0000:0000:0000/96 IPv6 アドレスに変換された IPv4 アドレス:XXXX:XXXX:XXXX:XXXX:0000:0000:YYY.YYY.YYY.YYY # ipv6 prefix 1 ra-prefix@lan2::/96 # nat46 ipv6 prefix 1
nat46 static ID IPv4_ADDRESS IPv6_ADDRESS
no nat46 static ID [[IPv4_ADDRESS] IPv6_ADDRESS]
NAT46 機能で使用する宛先の IPv6 アドレスに対応する IPv4 アドレスを静的に設定する。
宛先にホスト名ではなく IPv4 アドレスを指定してアクセスする場合 ( DNS46 機能で名前解決させずに NAT46 機能を使用する場合) に設定する。
nat46 ip address pool コマンドで設定している IPv4 アドレスとは異なるアドレスを設定する必要がある。
dns server IP_ADDRESS [edns=SW] [nat46=TUNNEL_NUM] [IP_ADDRESS [edns=SW] [nat46=TUNNEL_NUM]...]
no dns server [IP_ADDRESS [edns=SW] [nat46=TUNNEL_NUM]...]
設定値 | 説明 |
---|---|
on | 対象の DNS サーバーへの通信を EDNS で行う |
off | 対象の DNS サーバーへの通信を DNS で行う |
DNS サーバーの IP アドレスを指定する。
この IP アドレスは、ルーターが DHCP サーバーとして機能する場合に DHCP クライアントに通知するためや、IPCP の MS 拡張オプションで相手に通知するためにも使用される。
他のコマンドでも DNS サーバーが設定されている場合は、最も優先順位の高いコマンドの設定が使用される。DNS サーバー を設定する各種コマンドの優先順位は、本章冒頭の説明を参照。
edns オプションを省略、または edns=off を指定すると、対象の DNS サーバーへの名前解決は DNS で通信を行う。
edns=on を指定すると、対象の DNS サーバーへの名前解決は EDNS で通信を行う。
edns=on で名前解決ができない場合、edns=off に変更すると名前解決できる場合がある。
EDNS はバージョン 0 に対応。
nat46 オプションを指定すると DNS46 機能が有効になり、この DNS サーバー宛ての A レコードの問い合わせを AAAA レコードの問い合わせに変換する。
また、DNS サーバーからの応答に含まれる AAAA レコードを、nat46 ip address pool コマンドの設定値を使用して A レコードに変換する。変換した A レコードは、DNS キャッシュに登録する。
TUNNEL_NUM には、tunnel translation nat46 コマンドを設定したトンネルインターフェースの番号を指定する。
RTX5000、RTX3500 は Rev.14.00.29 以降。
RTX1210 は Rev.14.01.35 以降。
NVR700W は Rev.15.00.17 以降。
NVR510 は Rev.15.01.16 以降。
RTX830 は Rev.15.02.14 以降。
RTX3510、RTX1300、RTX1220 で指定可能。
NVR700W は Rev.15.00.23 以降。
NVR510 は Rev.15.01.23 以降。
RTX830 は Rev.15.02.20 以降。
RTX1220 は Rev.15.04.04 以降。
RTX3510、RTX1300 で指定可能。
dns server select ID SERVER [edns=SW] [nat46=TUNNEL_NUM] [SERVER2 [edns=SW] [nat46=TUNNEL_NUM]] [TYPE] QUERY [ORIGINAL-SENDER] [restrict pp CONNECTION-PP]
dns server select ID pp PEER_NUM [edns=SW] [DEFAULT-SERVER [edns=SW]] [TYPE] QUERY [ORIGINAL-SENDER] [restrict pp CONNECTION-PP]
dns server select ID dhcp INTERFACE [edns=SW] [nat46=TUNNEL_NUM] [DEFAULT-SERVER [edns=SW] [nat46=TUNNEL_NUM]] [TYPE] QUERY [ORIGINAL-SENDER] [restrict pp CONNECTION-PP]
dns server select ID pdp WAM_INTERFACE [edns=SW] [DEFAULT-SERVER [edns=SW]] [TYPE] QUERY [ORIGINAL-SENDER] [restrict pp CONNECTION-PP]
dns server select ID reject [TYPE] QUERY [ORIGINAL-SENDER]
no dns server select ID
設定値 | 説明 |
---|---|
a | ホストの IP アドレス |
aaaa | ホストの IPv6 アドレス |
ptr | IP アドレスの逆引き用のポインタ |
mx | メールサーバー |
ns | ネームサーバー |
cname | 別名 |
any | すべてのタイプにマッチする |
省略 | 省略時は a |
設定値 | 説明 |
---|---|
type が a、aaaa、mx、ns、cname の場合 | QUERY はドメイン名を表す文字列であり、後方一致とする。例えば、"yamaha.co.jp" であれば、rtpro.yamaha.co.jp などにマッチする。"." を指定するとすべてのドメイン名にマッチする。 |
type が ptr の場合 | QUERY は IP アドレス (ip_address[/masklen]) であり、masklen を省略したときは IP アドレスにのみマッチし、masklen を指定したときはネットワークアドレスに含まれるすべての IP アドレスにマッチする。DNS 問い合わせに含まれる.in-addr.arpa ドメインで記述された FQDN は、IP アドレスへ変換された後に比較される。すべての IP アドレスにマッチする設定はできない。 |
reject キーワードを指定した場合 | QUERY は完全一致とし、前方一致、及び後方一致には "*" を用いる。つまり、前方一致では、"NetVolante.*" であれば、NetVolante.jp、NetVolante.rtpro.yamaha.co.jp などにマッチする。また、後方一致では、"*yamaha.co.jp" と記述する。 |
設定値 | 説明 |
---|---|
on | 対象の DNS サーバーへの通信を EDNS で行う |
off | 対象の DNS サーバーへの通信を DNS で行う |
DNS 問い合わせの解決を依頼する DNS サーバーとして、DNS 問い合わせの内容および DNS 問い合わせの送信元および回線の接続状態を確認する接続相手先情報番号と DNS サーバーとの組合せを複数登録しておき、DNS 問い合わせに応じてその組合せから適切な DNS サーバーを選択できるようにする。テーブルは小さい番号から検索され、DNS 問い合わせの内容にQUERY がマッチしたら、その DNS サーバーを用いて DNS 問い合わせを解決しようとする。一度マッチしたら、それ以降のテーブルは検索しない。すべてのテーブルを検索してマッチするものがない場合には、他のコマンドで指定された DNS サーバーを用いる。DNS サーバー を設定する各種コマンドの優先順位は、本章冒頭の説明を参照。
reject キーワードを使用した書式の場合、QUERY がマッチしたら、その DNS 問い合わせパケットを破棄し、DNS 問い合わせを解決しない。
restrict pp 節が指定されていると、CONNECTION-PP で指定した相手先がアップしているかどうかがサーバーの選択条件に追加される。相手先がアップしていないとサーバーは選択されない。相手先がアップしていて、かつ、他の条件もマッチしている場合に指定したサーバーが選択される。
edns オプションを省略、または edns=off を指定すると、対象の DNS サーバーへの名前解決は DNS で通信を行う。
edns=on を指定すると、対象の DNS サーバーへの名前解決は EDNS で通信を行う。
edns=on で名前解決ができない場合、edns=off に変更すると名前解決できる場合がある。
EDNSはバージョン 0 に対応。
nat46 オプションを指定すると DNS46 機能が有効になり、この DNS サーバー宛ての A レコードの問い合わせを AAAA レコードの問い合わせに変換する。
また、DNS サーバーからの応答に含まれる AAAA レコードを、nat46 ip address pool コマンドの設定値を使用して A レコードに変換する。変換した A レコードは、DNS キャッシュに登録する。
TUNNEL_NUM には、tunnel translation nat46 コマンドを設定したトンネルインターフェースの番号を指定する。
SRT100 Rev.10.00.38 以降。
RTX1200 Rev.10.01.53 以降。
RTX810 Rev.11.01.21 以降。
RTX5000 / RTX3500 Rev.14.00.12 以降。
RTX1210、NVR700W、RTX830、RTX1220、RTX1300、RTX3510 で指定可能。
SRT100 Rev.10.00.60 以降。
RTX1200 Rev.10.01.32 以降。
RTX810、RTX1210、NVR700W、NVR510、RTX830、RTX1220、RTX1300、RTX3510 で指定可能。
RTX5000、RTX3500 は Rev.14.00.29 以降。
RTX1210 は Rev.14.01.35 以降。
NVR700W は Rev.15.00.17 以降
NVR510 は Rev.15.01.16 以降
RTX830 は Rev.15.02.14 以降。
RTX1220、RTX1300、RTX3510 で指定可能。
NVR700W は Rev.15.00.23 以降。
NVR510 は Rev.15.01.23 以降。
RTX830 は Rev.15.02.20 以降。
RTX1220 は Rev.15.04.04 以降。
RTX1300、RTX3510 で指定可能。
show status nat46 table [tunnel TUNNEL_NUM] [TYPE]
設定値 | 説明 |
---|---|
static | 静的エントリーの情報を表示する |
dynamic | 動的エントリーの情報を表示する |
all | 静的エントリーと動的エントリーの情報を表示する |
NAT46 エントリーを表示する。TYPE を省略した場合は、静的エントリーと動的エントリーの情報を表示する。
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 アドレスプールを使い果たした。 |