IPv6 / NAT46・NAT64
NAT46とNAT64は、IPv4パケットとIPv6パケットを相互変換することで、IPv4専用端末(以下、IPv4端末)とIPv6専用端末(以下、IPv6端末)との間の通信を実現する機能です。IPv4端末はIPv4アドレス、IPv6端末はIPv6アドレスしか持っていないため、そのままでは両者の通信は行えませんが、IPv4端末に仮想的なIPv6アドレスを、IPv6端末に仮想的なIPv4アドレスを用意し、中継機器で適切なパケット変換を行えば、両者の通信が可能になります。
本製品では、パケットの変換を行う「NAT46」、「NAT64」と DNSリレーのオプション機能である「DNS46」、「DNS64」を併用することで、中継機器として以下の構成を実現することができます。
- NAT46/DNS46 - IPv4端末にIPv6ネットワークへの接続性を提供する構成
- NAT64/DNS64 - IPv6端末にIPv4ネットワークへの接続性を提供する構成
NAT46/DNS46
NAT46/DNS46は、IPv4端末にIPv6ネットワークへの接続性を提供するための機能です。
- IPv4端末は、通信相手であるIPv6端末のIPv4アドレスを知るため、DNSサーバー(ここでは本製品のDNSリレー機能)に対し、IPv6端末のホスト名に対応するIPv4アドレス(Aレコード)を問い合わせます。
- 本製品のDNSリレー機能は、IPv4端末からのDNS問い合わせを上位のDNSサーバーに中継しますが、DNS46オプションが有効になっている場合は、Aレコード(IPv4アドレス)の問い合わせしか受けていなくても、上位DNSサーバーにはAレコードとAAAAレコード(IPv6アドレス)の両方を問い合わせます。
- 本構成の前提として、上位DNSサーバーには、IPv6端末の実IPv6アドレスと、それに対応するNAT46用の仮想的なIPv4アドレスが、それぞれAAAAレコード、Aレコードとして事前に登録されています。DNSリレー/DNS46機能から問い合わせを受けた上位DNSサーバーは、登録内容にしたがってIPv6端末のIPv6アドレスとIPv4アドレスを返答します。
- 本製品のDNSリレー/DNS46機能は、上位DNSサーバーが回答したIPv6アドレスとIPv4アドレスをIPv6端末用のNAT46変換ルール(4to6マッピング)としてダイナミック登録するとともに、IPv4端末にはIPv6端末の仮想的なIPv4アドレス(Aレコード)だけを返送します。
- IPv6端末の(仮想的な)IPv4アドレスを取得したIPv4端末は、同アドレスを宛先とするIPv4パケットを作成して送信します。
- 本製品のNAT46機能は、事前に設定されたIPv4端末のNAT46変換ルール(4to6マッピング)にもとづいてIPv4端末のIPv4アドレス(IPv4パケットの始点アドレス)を仮想的なIPv6アドレスに変換し、さらに手順4でダイナミック登録したIPv6端末用の変換ルール(6to4マッピング)にしたがってIPv6端末の仮想IPv4アドレス(IPv4パケットの終点アドレス)を同端末の実IPv6アドレスに変換して、IPv6パケットを作成し、IPv6端末宛てに送信します。
(IPv6端末からの戻りパケットに対しても、NAT46機能が逆向きの変換を行います)
基本設定
ここでは、以下の構成を例として、NAT46の基本的な設定手順を説明します。
NAT46の設定においては、IPv4端末とIPv6端末の両方のアドレスを変換する必要があります。
本機能では、IPv4端末、IPv6端末の変換ルール(NAT46マッピング)をそれぞれ次の場所で定義します。
- IPv4端末のアドレス変換ルール(4to6マッピング)
- map4to6コマンドでスタティック登録
- map4to6コマンドでスタティック登録
- IPv6端末のアドレス変換ルール(6to4マッピング)
- DNSリレーのオプションであるDNS46機能によってダイナミックに取得(=DNSサーバー側で定義)
- map6to4コマンドでスタティック登録
- DNSリレーのオプションであるDNS46機能によってダイナミックに取得(=DNSサーバー側で定義)
IPv4端末の変換ルール(4to6マッピング)はコマンドでスタティックに登録する必要がありますが、IPv6端末の変換ルール(6to4マッピング)はDNSサーバー側で事前登録したルールをDNS46によってダイナミックに取得する方式と、コマンドでスタティックに登録する方式があります。
以下では、それぞれの方法について設定手順を説明します。
前提
以下の説明では、次のような環境を仮定します。- IPv4ネットワーク 192.168.1.0/24 内の全 IPv4 端末から、IPv6ネットワーク 2001:db8:2::/64 内のIPv6 端末への通信を可能にします。
- 本製品(ルーター)は前記 IPv4 ネットワークと IPv6 ネットワークに下記インターフェースで接続されています(カッコ内はインターフェースのアドレス)。
- IPv4ネットワーク - vlan1 (192.168.1.1/24)
- IPv6ネットワーク - eth1 (2001:db8:2::1/64)
- IPv4ネットワーク - vlan1 (192.168.1.1/24)
- IPv4端末には、IPv6端末から見たときの仮想IPv6アドレスとして 2001:db8:2::c0a8:1xx を割り当てます。
前半64ビットは eth1 のプレフィックス 2001:db8:2::/64 を使い、末尾32ビットの c0a8:1xx はオリジナルのIPv4アドレス192.168.1.X をそのまま埋め込む形です(192 = c0, 168 = a8, 1 = 1, X = xx)。
- IPv6端末には、IPv4端末から見たときの仮想IPv4アドレスとして 192.168.2.X を割り当てます。
そのマッピングは、DNS46を使用する場合は次に述べるDNSサーバーに、使用しない場合は本製品に設定します。
- DNS46を使用する環境では、IPv6ネットワーク上にDNSサーバー 2001:db8:2::3 が存在しており、下記 DNSレコードによって 前記IPv6端末用のNAT46マッピングが登録されているものとします。
- AAAA 2001:db8:2::5
- A 192.168.2.5
- AAAA 2001:db8:2::5
- IPv4・IPv6の変換はNAT46トンネルインターフェースにおいて行われます。
- IPv4からIPv6への変換は、IPv4パケットがNAT46トンネルインターフェースに転送されたときに行われるため、IPv6端末の仮想IPv4アドレス宛てのIPv4パケットをトンネルインターフェースに転送するようなスタティック経路を設定する必要があります。
- IPv6からIPv4への変換もIPv6パケットがNAT46トンネルインターフェースに転送されたときに行われますが、これはIPv4端末用のNAT46マッピング設定にしたがって自動的に行われます。
具体的には、IPv4端末の仮想IPv6アドレス宛てのIPv6パケットを受信した場合、同IPv6パケットをNAT46トンネルインターフェースに転送します。また、IPv6パケットを受信する前の動作になりますが、他の機器からIPv4端末の仮想IPv6に対するNSパケット(Neighbor Solicitationパケット)を受信した場合は、自動的に本製品が代理応答します(map4to6コマンドでipv6-interfaceを指定した場合)。
- IPv4からIPv6への変換は、IPv4パケットがNAT46トンネルインターフェースに転送されたときに行われるため、IPv6端末の仮想IPv4アドレス宛てのIPv4パケットをトンネルインターフェースに転送するようなスタティック経路を設定する必要があります。
DNS46を使用する場合(ダイナミック登録)
NAT46とDNS46を併用する場合の基本設定は次のとおりです。- NAT46変換ルールの設定を取りまとめるNAT46マッピングインスタンスを作成します。これには4to6-mappingコマンドを使います。
awplus(config)# 4to6-mapping NAT46
- IPv4端末のアドレス変換ルール(4to6マッピング)を定義します。これにはmap4to6コマンドを使います。
ここでは、サブネット 192.168.1.0/24 内の全 IPv4 端末を対象として、これらの端末のIPv4アドレスを、IPv6ネットワーク側インターフェースである eth1 にアサインされているIPv6プレフィックス(2001:db8:2::/64)とオリジナルのIPv4アドレスの組み合わせた IPv6アドレスに変換するよう設定しています。
awplus(config-4to6-mapping)# map4to6 subnet 192.168.1.0/24 ::/96 ipv6-interface eth1 awplus(config-4to6-mapping)# exit
- NAT46トンネルインターフェースを作成します。これには、interface、tunnel mode map4to6コマンドを使います。
awplus(config)# interface tunnel0 awplus(config-if)# tunnel mode map4to6
- NAT46トンネルインターフェースにNAT46マッピングインスタンスを関連付けます。これには、tunnel 4to6-mappingコマンドを使います。
awplus(config-if)# tunnel 4to6-mapping NAT46
- NAT46トンネルインターフェースはIPv4パケットとIPv6パケットを相互変換するため、ip addressコマンドでIPv4インターフェースとして、ipv6 enableコマンドでIPv6インターフェースとして設定します。また、TCPパケットに適切なMSSが設定されるようMSS書き換えの設定をip tcp adjust-mssコマンドで行います。
awplus(config-if)# ip address 192.168.0.1/32 awplus(config-if)# ipv6 enable awplus(config-if)# ip tcp adjust-mss pmtu awplus(config-if)# exit
- IPv4端末からIPv6端末の仮想IPv4アドレス宛てのIPv4パケットがNAT46トンネルインターフェースに転送されるよう、ip routeコマンドでIPv4のスタティック経路を設定します。
awplus(config)# ip route 192.168.2.0/24 tunnel0
- IPv4端末にIPv6端末の仮想IPv4アドレスを通知するとともに、IPv6端末のアドレス変換ルール(6to4マッピング)をダイナミックに取得するため、DNSリレーおよびDNS46機能の設定を行います。ip name-serverコマンドでDNSサーバーアドレスを指定し、ip dns forwardingコマンドでDNSリレーを有効化、さらに ip dns forwarding dns46コマンドでDNS46機能を有効化し、ip dns forwarding dns46(mapping)コマンドでNAT46マッピングインスタンスの指定を行います。
awplus(config)# ip name-server 2001:db8:2::3 awplus(config)# ip dns forwarding awplus(config)# ip dns forwarding dns46 awplus(config)# ip dns forwarding dns46 NAT46
アドレス変換ルール(NAT46マッピング)はshow 4to6-mappingコマンドで確認できます。
DNS46機能の設定はshow ip dns forwarding dns46コマンドで確認できます。
DNS46機能によって自動登録されたNAT46変換ルール(ダイナミックマッピング)はclear 4to6-mappingコマンドで削除できます。
ダイナミックマッピングのアドレス範囲は、ip dns forwarding dns46 subnetコマンドで制限できます。同コマンド未設定時は無制限です。
ダイナミックマッピングの登録数や有効期間には、limitsコマンドで上限を設けることができます。初期設定では無制限です。
DNS46を使用しない場合(スタティック登録)
NAT46では、DNS46を使用せず、IPv6端末のアドレス変換ルール(6to4マッピング)をスタティックに設定することもできます。その場合、IPv4端末はDNSを利用してホスト名からIPv6端末の仮想IPv4アドレスを調べることができないため、IPv4端末の利用者に対し、IPv6端末の仮想IPv4アドレスをあらかじめ通知しておく、IPv6端末のホスト名と仮想IPv4アドレスの対応を記述したhostsファイルを配布しておく、あるいは、IPv4端末用のDNSサーバーにIPv6端末の仮想IPv4アドレスを登録しておく、などの対策が必要になります。
- NAT46変換ルールの設定を取りまとめるNAT46マッピングインスタンスを作成します。これには4to6-mappingコマンドを使います。
awplus(config)# 4to6-mapping NAT46
- IPv4端末のアドレス変換ルール(4to6マッピング)を定義します。これにはmap4to6コマンドを使います。
ここでは、サブネット 192.168.1.0/24 内の全 IPv4 端末を対象として、これらの端末のIPv4アドレスを、IPv6ネットワーク側インターフェースである eth1 にアサインされているIPv6プレフィックス(2001:db8:2::/64)とオリジナルのIPv4アドレスの組み合わせた IPv6アドレスに変換するよう設定しています。
awplus(config-4to6-mapping)# map4to6 subnet 192.168.1.0/24 ::/96 ipv6-interface eth1
- IPv6端末のアドレス変換ルール(6to4マッピング)を定義します。これにはmap6to4コマンドを使います。
ここでは、IPv6端末の実IPv6アドレスである 2001:db8:2::5 と仮想IPv4アドレス 192.168.2.5 を一対一で相互変換するよう設定します。
awplus(config-4to6-mapping)# map6to4 single 2001:db8:2::5 192.168.2.5 awplus(config-4to6-mapping)# exit
- NAT46トンネルインターフェースを作成します。これには、interface、tunnel mode map4to6コマンドを使います。
awplus(config)# interface tunnel0 awplus(config-if)# tunnel mode map4to6
- NAT46トンネルインターフェースにNAT46マッピングインスタンスを関連付けます。これには、tunnel 4to6-mappingコマンドを使います。
awplus(config-if)# tunnel 4to6-mapping NAT46
- NAT46トンネルインターフェースはIPv4パケットとIPv6パケットを相互変換するため、ip addressコマンドでIPv4インターフェースとして、ipv6 enableコマンドでIPv6インターフェースとして設定します。また、TCPパケットに適切なMSSが設定されるようMSS書き換えの設定をip tcp adjust-mssコマンドで行います。
awplus(config-if)# ip address 192.168.0.1/32 awplus(config-if)# ipv6 enable awplus(config-if)# ip tcp adjust-mss pmtu awplus(config-if)# exit
- IPv4端末からIPv6端末の仮想IPv4アドレス宛てのIPv4パケットがNAT46トンネルインターフェースに転送されるよう、ip routeコマンドでIPv4のスタティック経路を設定します。
awplus(config)# ip route 192.168.2.0/24 tunnel0
設定は以上です。
アドレス変換ルール(NAT46マッピング)はshow 4to6-mappingコマンドで確認できます。
NAT64/DNS64
NAT64/DNS64は、IPv6端末にIPv4ネットワークへの接続性を提供するための機能です。
- IPv6端末は、通信相手であるIPv4端末のIPv6アドレスを知るため、DNSサーバー(ここでは本製品のDNSリレー機能)に対し、IPv4端末のホスト名に対応するIPv6アドレス(AAAAレコード)を問い合わせます。
- 本製品のDNSリレー機能は、IPv6端末からのDNS問い合わせを上位のDNSサーバーに中継しますが、DNS64オプションが有効になっている場合は、AAAAレコード(IPv6アドレス)の問い合わせしか受けていなくても、上位DNSサーバーにはAAAAレコード(IPv6アドレス)とAレコード(IPv4アドレス)の両方を問い合わせます。
- DNSリレー/DNS64機能から問い合わせを受けた上位DNSサーバーは、登録内容にしたがってIPv4端末のAAAAレコード(IPv6アドレス)とAレコード(IPv4アドレス)を返答しますが、IPv4端末はIPv6アドレスを持っていないため、AAAAレコード(IPv6アドレス)の問い合わせに対してはNXDomain(該当ドメインなし)で答えます。
- 本製品のDNSリレー/DNS64機能は、上位DNSサーバーから受け取ったAレコードに含まれるIPv4アドレスの前に、あらかじめ設定されたIPv6プレフィックスを連結し、IPv4端末の仮想的なIPv6アドレスを組み立て、これをAAAAレコード(IPv6アドレス)としてIPv6端末に返送します。
- IPv4端末の(仮想的な)IPv6アドレスを取得したIPv6端末は、同アドレスを宛先とするIPv6パケットを作成して送信します。
- 本製品のNAT64機能は、事前に設定されたIPv6端末のNAT64変換ルール(6to4マッピング)にもとづいてIPv6端末のIPv6アドレス(IPv6パケットの始点アドレス)を仮想的なIPv4アドレスに変換し、さらにIPv4端末の仮想IPv6アドレス(IPv6パケットの終点アドレス)を同端末の実IPv4アドレスに変換して、IPv4パケットを作成し、IPv4端末宛てに送信します。
(IPv4端末からの戻りパケットに対しても、NAT64機能が逆向きの変換を行います)
基本設定
ここでは、以下の構成を例として、NAT64の基本的な設定手順を説明します。
前提
NAT64の設定にあたっては事前に下記のアドレスを把握・決定しておく必要があります。- NAT64対象のIPv6プレフィックス
NAT64の動作対象となるIPv6ネットワークのプレフィックスです。
ここでは「2001:db8::/64」とします。
- IPv6プレフィックスに対応する仮想IPv4サブネット
前記IPv6ネットワークのプレフィックスに対応する仮想IPv4サブネットを決定します。
IPv4端末からIPv6端末を見たとき、IPv6端末はこのIPv4サブネットに所属したIPv4端末に見えます。
ここでは「10.1.1.0/24」とします。
- IPv4 → IPv6変換用のIPv6プレフィックス
IPv4端末のIPv4アドレスを仮想IPv6アドレスに変換するとき、IPv4アドレスの前に連結する96ビットのIPv6プレフィックスを決定します。
ここではNAT64の標準で定義されている「64:ff9b::/96」を使うものとします。
これらを踏まえ、以下の説明では次のような環境を仮定します。
- IPv6ネットワーク 2001:db8::/64 内の全 IPv6 端末から、IPv4ネットワーク上の任意のIPv4 端末への通信を可能にします。
- IPv6端末(本製品を含む)には下記のIPv6アドレスを設定します(固定またはDHCPv6)。
2001:db8::10.1.1.X
- 本製品(ルーター)はIPv6 ネットワークと IPv4 ネットワークにそれぞれ下記のインターフェースで接続されています(カッコ内はインターフェースのアドレス)。
- IPv6ネットワーク - vlan1 (2001:db8::10.1.1.1/64)
- IPv4ネットワーク - eth1 (192.0.2.1/24)
- IPv6ネットワーク - vlan1 (2001:db8::10.1.1.1/64)
- 本製品のDNSリレー機能およびオプションのDNS64機能を有効にし、上位DNSサーバーとしてIPv4ネットワーク上の192.0.2.3を使うよう設定します。
- IPv6端末にはDNSサーバーとして本製品(DNSリレー機能)のIPv6アドレス 2001:db8::10.1.1.1 を設定します(固定またはDHCPv6)。
- IPv4端末の実アドレスが A.B.C.D の場合、IPv6端末から見たときの仮想IPv6アドレスは「64:ff9b::A.B.C.D」とします。
- IPv6・IPv4の変換はNAT46トンネルインターフェースにおいて行われます。
- IPv6からIPv4への変換は、IPv6パケットがNAT46トンネルインターフェースに転送されたときに行われるため、IPv4端末の仮想IPv6アドレス宛てのIPv6パケットをトンネルインターフェースに転送するIPv6のスタティック経路を設定する必要があります。
- IPv4からIPv6への変換もIPv4パケットがNAT46トンネルインターフェースに転送されたときに行われるため、IPv6端末が所属する仮想IPv4サブネット宛てのIPv4パケットをトンネルインターフェースに転送するIPv4のスタティック経路を設定する必要があります。
- IPv6からIPv4への変換は、IPv6パケットがNAT46トンネルインターフェースに転送されたときに行われるため、IPv4端末の仮想IPv6アドレス宛てのIPv6パケットをトンネルインターフェースに転送するIPv6のスタティック経路を設定する必要があります。
設定手順
NAT64とDNS64を併用する場合の基本設定は次のとおりです。- NAT64変換ルールの設定を取りまとめるNAT46マッピングインスタンスを作成します。これには4to6-mappingコマンドを使います。
awplus(config)# 4to6-mapping NAT64
- IPv6端末のアドレス変換ルール(6to4マッピング)を定義します。これにはmap6to4コマンドを使います。
ここでは、2001:db8::/96 にマッチする IPv6 端末を対象として、これらの端末のIPv6アドレス末尾32ビットを取り出して、同端末の仮想IPv4アドレスを生成するよう設定しています。
この設定により、IPv6端末のIPv6アドレス「2001:db8::10.1.1.5」はIPv4ネットワーク側では「10.1.1.5」になります。
awplus(config-4to6-mapping)# map6to4 subnet 2001:db8::/96 0.0.0.0/0
- IPv4端末のアドレス変換ルール(4to6マッピング)を定義します。これにはmap4to6コマンドを使います。
ここでは、すべてのIPv4端末を対象として、これらの端末のIPv4アドレスに固定的なIPv6プレフィックス「64:ff9b::/96」を連結して、同端末の仮想IPv6アドレスを生成するよう設定します。
この設定により、IPv4端末のIPv4アドレス「192.0.2.5」はIPv6ネットワーク側では「64:ff9b::192.0.2.5」になります。
awplus(config-4to6-mapping)# map4to6 subnet 0.0.0.0/0 64:ff9b::/96 awplus(config-4to6-mapping)# exit
- NAT46トンネルインターフェースを作成します。これには、interface、tunnel mode map4to6コマンドを使います。
awplus(config)# interface tunnel0 awplus(config-if)# tunnel mode map4to6
- NAT46トンネルインターフェースにNAT46マッピングインスタンスを関連付けます。これには、tunnel 4to6-mappingコマンドを使います。
awplus(config-if)# tunnel 4to6-mapping NAT64
- NAT46トンネルインターフェースはIPv4パケットとIPv6パケットを相互変換するため、ip addressコマンドでIPv4インターフェースとして、ipv6 enableコマンドでIPv6インターフェースとして設定します。また、TCPパケットに適切なMSSが設定されるようMSS書き換えの設定をip tcp adjust-mssコマンドで行います。
awplus(config-if)# ip address 192.168.0.1/32 awplus(config-if)# ipv6 enable awplus(config-if)# ip tcp adjust-mss pmtu awplus(config-if)# exit
- IPv6端末からIPv4端末の仮想IPv6アドレス宛てのIPv6パケットがNAT46トンネルインターフェースに転送されるよう、ipv6 routeコマンドでIPv6のスタティック経路を設定します。
awplus(config)# ipv6 route 64:ff9b::/96 tunnel0
- IPv4端末からIPv6端末の仮想IPv4アドレス宛てのIPv4パケットがNAT46トンネルインターフェースに転送されるよう、ip routeコマンドでIPv4のスタティック経路を設定します。
awplus(config)# ip route 10.1.1.0/24 tunnel0
- DNSリレーおよびDNS64機能の設定を行います。ip name-serverコマンドでDNSサーバーアドレスを指定し、ip dns forwardingコマンドでDNSリレーを有効化、さらに ip dns forwarding dns64コマンドでDNS64機能を有効化するとともにNAT46マッピングインスタンスを指定します。
awplus(config)# ip name-server 192.0.2.3 awplus(config)# ip dns forwarding awplus(config)# ip dns forwarding dns64 NAT64
アドレス変換ルール(NAT46マッピング)はshow 4to6-mappingコマンドで確認できます。