[index] AT-AR3050S/AT-AR4050S/AT-AR4050S-5G コマンドリファレンス 5.5.4

# IPv6 / NAT46

基本設定
前提
DNS46を使用する場合（ダイナミック登録）
DNS46を使用しない場合（スタティック登録）

NAT46は、IPv4パケットとIPv6パケットを相互変換することで、IPv4専用端末（以下、IPv4端末）とIPv6専用端末（以下、IPv6端末）との間の通信を実現する機能です。
IPv4端末はIPv4アドレス、IPv6端末はIPv6アドレスしか持っていないため、そのままでは両者の通信は行えませんが、IPv4端末に仮想的なIPv6アドレスを、IPv6端末に仮想的なIPv4アドレスを用意し、中継機器で適切なパケット変換を行えば、両者の通信が可能になります。
本製品では、パケットの変換を行う「NAT46」と DNSリレーのオプション機能である「DNS46」を併用することで、次のような構成を実現することができます。

この構成において、IPv4端末はおおよそ次の流れでIPv6端末と通信します。

1. IPv4端末は、通信相手であるIPv6端末のIPv4アドレスを知るため、DNSサーバー（ここでは本製品のDNSリレー機能）に対し、IPv6端末のホスト名に対応するIPv4アドレス（Aレコード）を問い合わせます。
2. 本製品のDNSリレー機能は、IPv4端末からのDNS問い合わせを上位のDNSサーバーに中継しますが、DNS46オプションが有効になっている場合は、Aレコード（IPv4アドレス）の問い合わせしか受けていなくても、上位DNSサーバーにはAレコードとAAAAレコード（IPv6アドレス）の両方を問い合わせます。
3. 本構成の前提として、上位DNSサーバーには、IPv6端末の実IPv6アドレスと、それに対応するNAT46用の仮想的なIPv4アドレスが、それぞれAAAAレコード、Aレコードとして事前に登録されています。DNSリレー/DNS46機能から問い合わせを受けた上位DNSサーバーは、登録内容にしたがってIPv6端末のIPv6アドレスとIPv4アドレスを返答します。
4. 本製品のDNSリレー/DNS46機能は、上位DNSサーバーが回答したIPv6アドレスとIPv4アドレスをIPv6端末用のNAT46変換ルール（レスポンダーマッピング）としてダイナミック登録するとともに、IPv4端末にはIPv6端末の仮想的なIPv4アドレス（Aレコード）だけを返送します。
5. IPv6端末の（仮想的な）IPv4アドレスを取得したIPv4端末は、同アドレスを宛先とするIPv4パケットを作成して送信します。
6. 本製品のNAT46機能は、事前に設定されたIPv4端末のNAT46変換ルール（オリジネーターマッピング）にもとづいてIPv4端末のIPv4アドレス（IPv4パケットの始点アドレス）を仮想的なIPv6アドレスに変換し、さらに手順4でダイナミック登録したIPv6端末用の変換ルール（レスポンダーマッピング）にしたがってIPv6端末の仮想IPv4アドレス（IPv4パケットの終点アドレス）を同端末の実IPv6アドレスに変換して、IPv6パケットを作成し、IPv6端末宛てに送信します。
   （IPv6端末からの戻りパケットに対しても、NAT46機能が逆向きの変換を行います）

本解説編では、NAT46/DNS46の基本的な設定方法について説明します。

## 基本設定

NAT46の設定においては、IPv4端末とIPv6端末の両方のアドレスを変換する必要があります。
本機能では、IPv4端末をオリジネーター（Originator）、IPv6端末をレスポンダー（Responder）と称し、それぞれの変換ルール（NAT46マッピング）を次の場所で定義します。

- IPv4端末のアドレス変換ルール（オリジネーターマッピング）
  - originatorコマンドでスタティック登録
- IPv6端末のアドレス変換ルール（レスポンダーマッピング）
  - DNSリレーのオプションであるDNS46機能によってダイナミックに取得（＝DNSサーバー側で定義）
  - responderコマンドでスタティック登録

IPv4端末の変換ルール（オリジネーターマッピング）はコマンドでスタティックに登録する必要がありますが、IPv6端末の変換ルール（レスポンダーマッピング）は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端末には、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
- 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パケット）を受信した場合は、自動的に本製品が代理応答します（originatorコマンドでipv6-interfaceを指定した場合）。

### DNS46を使用する場合（ダイナミック登録）

NAT46とDNS46を併用する場合の基本設定は次のとおりです。

1. NAT46変換ルールの設定を取りまとめるNAT46マッピングインスタンスを作成します。これには4to6-mappingコマンドを使います。

       awplus(config)# 4to6-mapping test ↓

2. IPv4端末のアドレス変換ルール（オリジネーターマッピング）を定義します。これにはoriginatorコマンドを使います。
   ここでは、サブネット 192.168.1.0/24 内の全 IPv4 端末を対象として、これらの端末のIPv4アドレスを、IPv6ネットワーク側インターフェースである eth1 にアサインされているIPv6プレフィックス（2001:db8:2::/64）とオリジナルのIPv4アドレスの組み合わせた IPv6アドレスに変換するよう設定しています。

       awplus(config-4to6-mapping)# originator subnet 192.168.1.0/24 ::/96 ipv6-interface eth1 ↓
       awplus(config-4to6-mapping)# exit ↓

   > Note

   > > すべてのIPv4端末をNAT46の変換対象にするには、originatorコマンドで 0.0.0.0/0 を指定します。

   > >     awplus(config-4to6-mapping)# originator subnet 0.0.0.0/0 ::/96 ipv6-interface eth1 ↓

3. NAT46トンネルインターフェースを作成します。これには、interface、tunnel mode map4to6コマンドを使います。

       awplus(config)# interface tunnel0 ↓
       awplus(config-if)# tunnel mode map4to6 ↓

4. NAT46トンネルインターフェースにNAT46マッピングインスタンスを関連付けます。これには、tunnel 4to6-mappingコマンドを使います。

       awplus(config-if)# tunnel 4to6-mapping test ↓

5. NAT46トンネルインターフェースはIPv4パケットとIPv6パケットを相互変換するため、ip addressコマンドでIPv4インターフェースとして、ipv6 enableコマンドでIPv6インターフェースとして設定します。また、TCPパケットに適切なMSSが設定されるようMSS書き換えの設定をip tcp adjust-mssコマンドで行います。

   > Note

   > > NAT46トンネルインターフェースのIPv4アドレスには、ネットワーク上で使われていない任意のアドレスを設定してください。

       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 ↓

6. IPv4端末からIPv6端末の仮想IPv4アドレス宛てのIPv4パケットがNAT46トンネルインターフェースに転送されるよう、ip routeコマンドでIPv4のスタティック経路を設定します。

       awplus(config)# ip route 192.168.2.0/24 tunnel0 ↓

7. IPv4端末にIPv6端末の仮想IPv4アドレスを通知するとともに、IPv6端末のアドレス変換ルール（レスポンダーマッピング）をダイナミックに取得するため、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 test ↓

   > Note

   > > この例では上位DNSサーバー（ip name-server）をIPv6アドレスで指定していますが、変換ルール（レスポンダーマッピング）をAAAAレコードとAレコードで登録してありさえすれば、DNSサーバーへのアクセスはIPv6でもIPv4でもかまいません。

   > Note

   > > DNS46を使用する場合は、下記の仕様にご留意ください。
   > > 1. IPv6端末用のNAT46変換ルール（レスポンダーマッピング）をDNSサーバーに登録しておく必要があります。
   > >    このとき、実IPv6アドレスをAAAAレコード、仮想IPv4アドレスをAレコードとして、対になるよう登録してください。
   > > 2. IPv4端末からのIPv4アドレス（Aレコード）問い合わせに対し、DNSリレーのDNS46機能はAレコードとAAAAレコードの両方を上位DNSサーバーに問い合わせます。
   > > 3. 上位DNSサーバーからの回答に応じて、DNS46機能は次の動作を行います。
   > >    - 上位DNSサーバーからIPv4アドレス（Aレコード）とIPv6アドレス（AAAAレコード）が対で返ってきた場合は、これらを一対一のレスポンダーマッピングとしてダイナミックに登録し、IPv4端末にIPv4アドレス（Aレコード）を返答します。
   > >      AレコードとAAAAレコードがそれぞれ複数返ってきた場合は、IPv4アドレスとIPv6アドレスを返却順に組み合わせて、複数のレスポンダーマッピングを登録します。
   > >    - 上位DNSサーバーから返ってきたIPv4アドレス（Aレコード）とIPv6アドレス（AAAAレコード）の数が異なる場合は、レスポンダーマッピングを登録せず、端末にはSERVFAIL（Server Failure）エラーを返します。
   > > 4. ip dns forwarding dns46 subnetコマンドを使うことで、前項 3 におけるDNS46機能の動作を特定のIPv4/IPv6アドレスサブネット（アドレス範囲）だけに限定することもできます。この場合は、レスポンダーマッピングをダイナミックに登録したいIPv4/IPv6サブネットをすべて指定してください。

   > >        awplus(config)# ip dns forwarding test subnet 192.168.2.0/24 ↓
   > >        awplus(config)# ip dns forwarding test subnet 2001:db8:2::/64 ↓

設定は以上です。
■ アドレス変換ルール（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端末のアドレス変換ルール（レスポンダーマッピング）をスタティックに設定することもできます。
その場合、IPv4端末はDNSを利用してホスト名からIPv6端末の仮想IPv4アドレスを調べることができないため、IPv4端末の利用者に対し、IPv6端末の仮想IPv4アドレスをあらかじめ通知しておく、IPv6端末のホスト名と仮想IPv4アドレスの対応を記述したhostsファイルを配布しておく、あるいは、IPv4端末用のDNSサーバーにIPv6端末の仮想IPv4アドレスを登録しておく、などの対策が必要になります。

1. NAT46変換ルールの設定を取りまとめるNAT46マッピングインスタンスを作成します。これには4to6-mappingコマンドを使います。

       awplus(config)# 4to6-mapping test ↓

2. IPv4端末のアドレス変換ルール（オリジネーターマッピング）を定義します。これにはoriginatorコマンドを使います。
   ここでは、サブネット 192.168.1.0/24 内の全 IPv4 端末を対象として、これらの端末のIPv4アドレスを、IPv6ネットワーク側インターフェースである eth1 にアサインされているIPv6プレフィックス（2001:db8:2::/64）とオリジナルのIPv4アドレスの組み合わせた IPv6アドレスに変換するよう設定しています。

       awplus(config-4to6-mapping)# originator subnet 192.168.1.0/24 ::/96 ipv6-interface eth1 ↓

   > Note

   > > すべてのIPv4端末をNAT46の変換対象にするには、originatorコマンドで 0.0.0.0/0 を指定します。

   > >     awplus(config-4to6-mapping)# originator subnet 0.0.0.0/0 ::/96 ipv6-interface eth1 ↓

3. IPv6端末のアドレス変換ルール（レスポンダーマッピング）を定義します。これにはresponderコマンドを使います。
   ここでは、IPv6端末の実IPv6アドレスである 2001:db8:2::5 と仮想IPv4アドレス 192.168.2.5 を一対一で相互変換するよう設定します。

       awplus(config-4to6-mapping)# responder single 192.168.2.5 2001:db8:2::5 ↓
       awplus(config-4to6-mapping)# exit ↓

4. NAT46トンネルインターフェースを作成します。これには、interface、tunnel mode map4to6コマンドを使います。

       awplus(config)# interface tunnel0 ↓
       awplus(config-if)# tunnel mode map4to6 ↓

5. NAT46トンネルインターフェースにNAT46マッピングインスタンスを関連付けます。これには、tunnel 4to6-mappingコマンドを使います。

       awplus(config-if)# tunnel 4to6-mapping test ↓

6. NAT46トンネルインターフェースはIPv4パケットとIPv6パケットを相互変換するため、ip addressコマンドでIPv4インターフェースとして、ipv6 enableコマンドでIPv6インターフェースとして設定します。また、TCPパケットに適切なMSSが設定されるようMSS書き換えの設定をip tcp adjust-mssコマンドで行います。

   > Note

   > > NAT46トンネルインターフェースのIPv4アドレスには、ネットワーク上で使われていない任意のアドレスを設定してください。

       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 ↓

7. IPv4端末からIPv6端末の仮想IPv4アドレス宛てのIPv4パケットがNAT46トンネルインターフェースに転送されるよう、ip routeコマンドでIPv4のスタティック経路を設定します。

       awplus(config)# ip route 192.168.2.0/24 tunnel0 ↓

設定は以上です。
■ アドレス変換ルール（NAT46マッピング）はshow 4to6-mappingコマンドで確認できます。

(C) 2015 - 2024 アライドテレシスホールディングス株式会社

PN: 613-002107 Rev.BC