Scyphus Draft — Articles

本稿では,NAT64実装の一つであるEcdysis,DNS64をサポートしたBIND 9.8,およびDHCPv6をサポートしたISC DHCP 4を用いてIPv6 onlyネットワークを構築する手順を説明する.

Custom Search

IPv6 onlyネットワークの構築〜Ecdysis (NAT64) / BIND 9.8 (DNS64) / ISC DHCP 4 (DHCPv6)〜

Date: Oct. 31, 2011
Author: 浅井 大史

使用ソフトウェア等

ネットワークトポロジー・構成

ネットワークトポロジー例
ネットワークトポロジー例

本稿では,Fig. 1のネットワークトポロジーにてIPv6 onlyネットワークを構成する.また,本稿ではNAT64にてIPv6-IPv4変換されるプレフィックスとしてWell-known NAT64 prefixである64:ff9b::/96を用いるが,インターネット上で用いられている他のプレフィックスと重複しない別のプレフィックスを用いても良い.但し,このプレフィックスに32ビットであるIPv4アドレスをマッピングするため,プレフィックス長は96 (即ち128-32ビット) 以下である必要がある.また,このプレフィックスに対してインターネットからの到達性がある場合は,外部の機器からの通信を中継しないようにNAT64機器などに適切なフィルタを設定する必要がある

NAT64/DNS64の動作

各機器およびソフトウェアの設定を説明する前に,NAT64およびDNS64の動作について概説する.

NAT64/DNS64の動作例
NAT64/DNS64の動作例

Fig. 2はIPv4サーバであるwww.example.netのTCP 80番ポートへのアクセス時のNAT64およびDNS64の動作を示したものである.

まず,IPv6 onlyネットワーク内の機器にはDNSサーバとしてDNS64サーバが設定されているものとする.これはDHCPv6または手動により設定できる.この機器がwww.example.netのAAAAレコードを解決する際,そのリクエストを受け取ったDNS64サーバは,まず,通常の名前解決と同様にwww.example.netのAAAAレコードの解決を試みる.AAAAレコードが解決できればDNS64サーバはそのAAAAレコードをレスポンスとして返す.この図におけるwww.example.netのようにAAAAレコードが設定されていない場合,DNS64サーバはwww.example.netのAレコードを解決し,このIPv4アドレスをNAT64プレフィックス(本稿では64:ff9b::/96)の下32ビットに付与したIPv6に変換し,AAAAレコードとしたレスポンスを返す.これにより,IPv6 onlyネットワーク内の機器はAAAAレコードを解決できる.

次に,IPv6 onlyネットワーク内の機器は,解決したAAAAレコードを用い, 対象のサーバへの通信を開始する.ここで,解決したAAAAレコードがNAT64プレフィックスで無い場合は通常のIPv6の通信となる.解決したAAAAレコードがNAT64プレフィックスの場合は,このプレフィックス宛のパケットをNAT64サーバへとルーティングし,NAT64により,IPv6からIPv4への変換・送信元ポート番号の変換およびこれらの変換状態の記憶を行う.この変換状態を保持することで,IPv4でのNAPTと同様に,IPv4サーバ(www.example.net)からの通信をIPv4からIPv6へ変換した上で適切な宛先ポート番号に変換することでIPv6 onlyネットワーク内の機器へとパケットが配送される.

NAT64/DNS64で通信できないもの

NAT64によりアドレスファミリーの変換が行われるためには,DNS64にて対象のIPv4アドレスをNAT64プレフィックスにマッピングしたIPv6アドレス(AAAAレコード)を解決できる必要がある.そのため,IPv6 onlyネットワーク内のクライアントがDHCPv6で設定されるべきDNS64ではない独自のDNSサーバを設定していたり,名前解決をDNSに頼らないアプリケーションやIPv4アドレスを直接指定したりアドレスファミリーを指定して通信するアプリケーションは,DNS64やIPv6自体を利用できないため正常に通信ができない.

また,NAT64はIPv4におけるNAPT(ステートフルNAT)のようにポート番号の変換も行うものであるため,従来のNAPTと同様に様々な制限があるが,前述のIPv6やDNS64を使用できないことに由来する問題と比較して,軽微であると考えられる.