# 2.16. NAT/NAPTの設定

NAT（ネットワークアドレス変換）とNAPT（ネットワークアドレスポート変換）機能に対応しています。NATはIPv4アドレスのみを変換し、NAPTはIPv4アドレスの他、TCP/UDPのポート番号などを変換することで、端末のアドレスとは異なるアドレスで通信可能です。

図 2.16.1 NATとNAPTの構成図

プライベートアドレスとして使用できるIPv4アドレスは、RFC1918によって次のように定義されています。これ以外のアドレスでも変換は可能です。

- 10.0.0.0 ～ 10.255.255.255 (10/8 prefix)

- 172.16.0.0 ～ 172.31.255.255 (172.16/12 prefix)

- 192.168.0.0 ～ 192.168.255.255 (192.168/16 prefix)

## 2.16.1. NATの設定

ネットワークアドレス変換（NAT）は、プライベートIPv4アドレスを、グローバルIPv4アドレスに変換する機能です。 NATの登録は、次のように大別することができます。

> 項目 | 説明
> --- | ---
> 静的NAT（Static NAT） | 内部ネットワークの端末のアドレスと外部ネットワーク用に取得したアドレスを、 固定的に一対一にマッピングします。
> 動的NAT（Dynamic NAT） | 外部ネットワーク用に取得した複数のアドレスをプールし、 内部ネットワークの端末が外部にアクセスする際に、 動的に外部ネットワークアドレスを割り当てて通信を行います。

静的NATまたは動的NATで範囲指定内に設定されていないパケットを外部ネットワークから受信した場合は、内部ネットワーク内にグローバルアドレス空間があるものと判断し、内部ネットワーク向きにパケットを転送します。

### 2.16.1.1. 静的NAT（Static NAT）の設定

静的NATは、プロバイダから割り当てられたIPv4アドレスに対して、プライベートアドレス空間の端末のIPv4アドレスを、一対一で割り当てます。グローバルアドレスが十分確保できる場合は、この設定を利用してください。

図 2.16.2 静的NATの構成図

静的NATの設定および確認は次のコマンドを使用します。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip nat enable | NATの有効
  ip nat static | 変換テーブルの登録

- 表示コマンド

  項目 | 説明
  --- | ---
  show ip nat translation | 変換テーブルの表示
  show ip nat statistics | 統計情報の表示

  リスト 2.16.1 設定例

      interface GigaEthernet0.0
        ip address 10.0.0.254/24
        ip nat enable
        ip nat static 192.168.0.1 10.0.0.1
        ip nat static 192.168.0.2 10.0.0.2
        no shutdown

ネットワーク単位で静的NATの指定を行うことができます。この場合、アドレス部分は同じ値となります。複数の設定が重なっている場合は、プレフィックス長の長い方が優先されます。

> リスト 2.16.2 設定例

>     192.168.0.xを10.0.0.xに変換（xは0～127）

>     interface GigaEthernet0.0
>       ip address 10.0.0.254/24
>       ip nat enable
>       ip nat static network 192.168.0.0/25 10.0.0.0/25
>       no shutdown

### 2.16.1.2. 動的NAT（Dynamic NAT）の設定

動的NATは、グローバルアドレスの数が不足している場合に有効です（ただしNAPTの方が有効なので通常はNAPTを利用してください）。複数のIPv4アドレスをあらかじめプールに格納しておくことで、端末からグローバルアドレス空間へのアクセスがあった場合に、そのプールから自動的に送信元IPv4アドレスを割り当てます。

変換情報は通信が無くなった後も一定時間保持し、保持している間は同じアドレスで変換を行うことができます。情報を保持する時間はデフォルトでは3600秒で、変更することも可能です。

図 2.16.3 動的NATの構成図

動的NATの設定および確認は次のコマンドを使用します。

- グローバルコンフィグモード

  項目 | 説明
  --- | ---
  ip nat pool | グローバルIPv4アドレスのプールの設定

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip nat enable | NATの有効
  ip nat dynamic | 動的NATの設定
  ip nat translation | NATキャッシュ最大エントリ数，保持時間設定

- 表示コマンド

  項目 | 説明
  --- | ---
  show ip nat translation | 変換テーブルの表示
  show ip nat statistics | 統計情報の表示

  リスト 2.16.3 設定例

      ip access-list access-1 permit ip src 192.168.0.0/24 dest any
      ip nat pool pool-1 10.0.0.2 10.0.0.10
      !
      interface GigaEthernet0.0
        ip address 10.0.0.1/8
        ip nat enable
        ip nat dynamic list access-1 pool pool-1
        no shutdown

## 2.16.2. NAPTの設定

ネットワークアドレスポート変換（NAPT）機能は、内部ネットワークで使用しているプライベートIPv4アドレスとトランスポートレイヤのポートから、外部ネットワークアクセス用のグローバルIPv4アドレスとトランスポートレイヤのポートに変換します。

NAPTの登録は、次のように大別することができます。

項目 | 説明
--- | ---
NAPT | 内部ネットワークの端末のアドレスとアプリケーションを判断し、 外部ネットワーク用に取得したアドレス（１つのIPv4アドレス）と 必要なポートに動的に変換します。
静的NAPT（Static NAPT） | NAPT使用中に、特定の内部ネットワーク側の端末上の 特定のアプリケーションのポートを固定したい場合に使用します。
サーバーサービス設定 | NAPT使用中に、プライベートアドレス空間に存在するサーバーを グローバルアドレス空間に提供する場合に使用します。

図 2.16.4 NAPTの構成図

### 2.16.2.1. NAPTの設定

NAPTの設定および確認は次のコマンドを使用します。

- グローバルコンフィグモード

  項目 | 説明
  --- | ---
  ip access-list | 内部ネットワーク内の端末のIPv4アドレス範囲指定

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip napt enable | NAPTの有効
  ip napt address | NAPTアドレスの変更
  ip napt inside ... | 内部ネットワークの端末を選択します。 （この設定により、内部ネットワークについて、 グローバルアドレス空間と、プライベートアドレス空間を区別することができます。）
  ip napt inside ... outside ... | NAPTの複数設定に使用します。 インタフェースに２つ目以降のNAPTアドレスを割り当てたい場合に使用します。
  ip napt translation | NAPTキャッシュ最大エントリ数，保持時間設定

- 表示コマンド

  項目 | 説明
  --- | ---
  show ip napt translation | 変換テーブルの表示
  show ip napt statistics | 統計情報の表示

NAPTは、ip napt enableの設定だけで動作します。アドレス、範囲指定は省略することが可能です。これらを省略した場合は、内部的に以下の設定で動作します。

- ip napt address <インタフェースアドレス>

- ip napt inside <any>

  リスト 2.16.4 設定例：端末を指定しない場合

      interface GigaEthernet0.0
        ip address 10.0.0.1/24
        ip napt enable
        no shutdown

### 2.16.2.2. NAPT範囲指定（DMZの設定）

NAPT配下の内部ネットワークをプライベートアドレス空間とグローバルアドレス空間に分けることができます。これは、たとえばDMZ上に公開サーバーを設置するような場合に使用できます。

図 2.16.5 DMZの構成図

> リスト 2.16.5 設定例

>     ip access-list napt-list1 permit ip src 192.168.0.0/24 dest any
>     !
>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       ip napt enable
>       ip napt inside list napt-list1
>       no shutdown

この設定例では、napt-list1に当てはまらないパケットはNAPT変換対象外となります。ただし、NAPTアドレスに指定しているアドレス（ip napt addressがない本設定ではインタフェースアドレス）は、常にNAPTの変換対象です。

この設定より、外から内への通信時も、napt-list1で指定されていないIPアドレス宛ての場合は後述する静的NAPTやサーバーサービスの設定を行わなくともそのまま通信可能となり、ここではDMZへのアクセスが実現できます。napt-list1で指定されているIPアドレス空間についてはNAPT変換対象となるため、通常、外から内への通信は行えません。

注釈

- 内部ネットワークは基本的にアクセスリストのsrcアドレスで指定します。

- 必要な場合はdestアドレス、srcポート、destポート、プロトコルを指定することも可能ですが、ネットワークが複雑になるので注意して利用してください。また、これら以外のフィールドは設定しないでください。

### 2.16.2.3. NAPT複数指定

１つのI/Fに複数のNAPTアドレスを設定することも可能です。

> リスト 2.16.6 設定例1

>     送信元が10.10.10.0/24の場合はNAPTアドレスに10.0.0.2を使用
>     送信元が10.10.20.0/24の場合はNAPTアドレスに10.0.0.3を使用
>     送信元がそれ以外の場合は、NAPTしない

>     ip access-list access-1 permit ip src 10.10.10.0/24 dest any
>     ip access-list access-2 permit ip src 10.10.20.0/24 dest any
>     !
>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       ip napt enable
>       ip napt address 10.0.0.2
>       ip napt inside list access-1
>       ip napt inside list access-2 outside 10.0.0.3
>       no shutdown

> リスト 2.16.7 設定例2

>     送信元が10.10.10.0/24の場合はNAPTアドレスに10.0.0.2を使用
>     送信元が10.10.20.0/24の場合はNAPTアドレスに10.0.0.3を使用
>     送信元がそれ以外の場合は、NAPTアドレスに10.0.0.1のを使用

>     ip access-list access-1 permit ip src 10.10.10.0/24 dest any
>     ip access-list access-2 permit ip src 10.10.20.0/24 dest any
>     !
>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       ip napt enable
>       ip napt inside list access-1 outside 10.0.0.2
>       ip napt inside list access-2 outside 10.0.0.3
>       no shutdown

注釈

- NAPTアドレスを複数設定する場合の注意

  NAPTしない条件がある場合、設定例1のように、１つをip napt insideのoutside指定なしの設定にする必要があります（デフォルト動作の全アドレスをインタフェースのアドレスで変換する設定を無効化する必要があるため）。 それぞれのアクセスリストで許可されるアドレス範囲は重複しないよう設定してください。 なお、設定例2のケースはoutsideなしのinside listの設定は不要です。outsideありの設定を先に判定するため、範囲指定されなかった通信が10.0.0.1で変換されます。

> リスト 2.16.8 設定例3

>     送信元が10.10.10.0/24の場合はNAPTアドレスに10.0.0.2を使用
>     送信元が10.10.20.0/24または自発パケットの場合はNAPTアドレスに10.0.0.1を使用
>     送信元がそれ以外の場合は、NAPTしない

>     ip access-list access-1 permit ip src 10.10.10.0/24 dest any
>     ip access-list access-2 permit ip src 10.10.20.0/24 dest any
>     ip access-list access-2 permit ip src 10.0.0.1/24 dest any
>     !
>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       ip napt enable
>       ip napt address 10.0.0.2
>       ip napt inside list access-1
>       ip napt inside list access-2 outside 10.0.0.1
>       no shutdown

注釈

- outsideアドレスに物理アドレスを指定する場合の注意

  設定例3のように、outsideアドレスと物理アドレスを同じにする場合、outsideのinside listのアクセスリストに物理アドレス(設定例では10.0.0.1)を含める必要があります。 アクセスリストに設定をしない場合、自発パケットはNAPTの変換対象になりません。

### 2.16.2.4. 静的NAPT（Static NAPT）の設定

静的NAPTの設定では、NAPTアドレスで使用するプロトコル、ポート番号を特定の端末専用に割り当てることができます。

図 2.16.6 静的NAPTの構成図

静的NAPTの設定および確認は、NAPT設定コマンドに加え、次のコマンドを使用します。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip napt static | 内部ネットワーク内の端末とポートの設定

  リスト 2.16.9 設定例：TCP/UDPの場合

      interface GigaEthernet0.0
        ip address 10.0.0.1/24
        ip napt enable
        ip napt static 192.168.0.1 tcp 1000-1010
        no shutdown

  リスト 2.16.10 設定例：TCP,UDP以外のプロトコルの場合

      interface GigaEthernet0.0
        ip address 10.0.0.1/24
        ip napt enable
        ip napt static 192.168.0.1 41
        no shutdown

### 2.16.2.5. サーバーサービスの設定

サーバーサービス設定は、プライベートアドレス空間にあるサーバーに、グローバルアドレス空間にあるクライアントからアクセスするために使用します。

図 2.16.7 サーバーサービスの構成図

サーバーサービス設定は、インタフェースコンフィグモードで、ip napt service コマンドを使用して設定します。サーバーサービスの設定および確認は、NAPT設定コマンドに加え、次のコマンドを使用します。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip napt service | 内部ネットワーク内のサーバーとポートの設定

  リスト 2.16.11 設定例：登録されているサービスの場合

      interface GigaEthernet0.0
        ip address 10.0.0.1/24
        ip napt enable
        ip napt service ssh 192.168.1.1
        no shutdown

  リスト 2.16.12 設定例：登録されていないサービスの場合

      interface GigaEthernet0.0
        ip address 10.0.0.1/24
        ip napt enable
        ip napt service tftp 192.168.1.1 none udp 69
        no shutdown

### 2.16.2.6. NAPTキャッシュ数の制限の設定 - インタフェース単位での制限

NAPTキャッシュ数の制限の設定には、「インタフェース単位での制限」と「ホスト単位での制限」があります。

「インタフェース単位での制限」は、設定を行ったインタフェース上でのNAPTキャッシュのエントリ数の上限値になります。エントリ数が上限値に達している状態で新たなパケットを受信しても通信は行えません。頻繁にNAPTキャッシュのオーバーフローが発生している場合は仕様範囲内で「インタフェース単位での制限」の値を増やすか、タイムアウトを調整してください。

> リスト 2.16.13 設定例

>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       ip napt enable
>       ip napt translation max-entries 16384
>       no shutdown

### 2.16.2.7. NAPTキャッシュ数の制限の設定 - ホスト単位での制限

「P2Pアプリケーションの使用」「コンピューターウィルスの感染」などで一部のホストが大量にNAPTキャッシュを消費することが原因で、他のホストが通信できなくなってしまうことがあります。これを防ぐにはNAPTキャッシュの「ホスト単位での制限」を行ってください。

> リスト 2.16.14 設定例

>     interface GigaEthernet0.0
>       ip address 10.0.0.1/24
>       ip napt enable
>       ip napt translation max-entries 16384
>       ip napt translation max-entries per-address 1000
>       no shutdown

本設定により、配下のホストごと(一プライベートアドレスごと)に生成可能なNAPTキャッシュ数が1000個となります。インタフェース全体としては16384個までのNAPTキャッシュを生成可能です。

図 2.16.8 NAPTキャッシュ数制限の動作例

上図では、端末2は既にNAPTキャッシュを1000個生成しているため、オーバーフローが発生しています。その場合でも端末1と端末3はNAPTキャッシュを生成可能です。

### 2.16.2.8. ヘアピンNATの設定

注意

UNIVERGE IX-V シリーズをクラウドで利用する場合は、ヘアピンNATは利用できません。

ヘアピンNAT機能を有効にすることで、同一プライベートネットワークの端末同士がグローバルアドレスを用いて通信することが可能です。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip napt hairpinning | ヘアピンNATの設定

  リスト 2.16.15 設定例

      interface GigaEthernet0.0
        ip address 10.0.0.1/24
        ip napt enable
        ip napt hairpinning
        no shutdown

本設定により、プライベートネットワークの端末からNAPTアドレス宛てに送信されたパケットにNAPT変換を適用します。ヘアピンNATを適用するパケットはTCP、UDPとpingのみです。

ヘアピンNATはip napt addressコマンドで指定したアドレス宛のパケットにのみ適用します。ip napt addressコマンドが未設定の場合、インタフェースのプライマリアドレスを使用します。インタフェースのアドレスがアンナンバード設定の場合も使用可能です。

ヘアピンNATは1装置に1インタフェースのみ設定可能です。

注釈

- ヘアピンNAT機能では1回の変換あたり２つのNAPTキャッシュを生成します。

- 1インタフェースに複数のNAPTを設定した環境でのヘアピンNATはサポートしません。

### 2.16.2.9. NAPT変換テーブルの保持時間

またNAPTの変換情報はトラフィックがなくなっても一定時間保持されます。保持時間を変更するコマンドは以下のとおりです。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip napt translation | NAPTキャッシュ最大エントリ数，保持時間設定

保持時間のデフォルトと変更するパラメータは以下のとおりです。

> 項目 | デフォルト | 変更するパラメータ
> --- | --- | ---
> TCP | 900秒 | tcp-timeout
> TCPセッション開始 | 30秒 | syn-timeout
> TCPセッション終了後 （FINまたはRST片方向受信） | 60秒 | finrst-timeout:第1パラメータ
> TCPセッション終了後 （FINまたはRST双方向受信） | 1秒 | finrst-timeout:第2パラメータ
> UDP | 300秒 | udp-timeout
> DNS | 60秒 | dns-timeout
> ICMP | 60秒 | icmp-timeout
> GRE | 60秒 | gre-timeout
> その他 | 60秒 | other-timeout

## 2.16.3. 対応アプリケーション

ペイロードにもプライベートアドレスが記載されているなど、特殊な接続を行う通信については、それぞれ専用の変換処理が必要になります。これらの機能をアプリケーション・レベル・ゲートウェイ（ALG）と呼びますが、NAT/NAPTで対応しているALGは以下になります。

- FTP(ip napt algコマンドでポート番号を指定できます)

- TFTP

- ICMP

- PPTP

それ以外の特殊なプロトコルに関しては対応していません。

- H.323

- FTP以外でペイロードにIPv4アドレス情報が含まれるプロトコルなど

その他のヘッダ変換だけでよいプロトコルは対応しています。

- Telnet

- SSH

- SMTP

- POP3

- NTP

- HTTP 等

## 2.16.4. アクセスログ機能

NAPT環境から外部ネットワークに対して不正アクセスが行われた場合、不正アクセスを行ったユーザーを特定するために、NAPTの変換情報を記録するアクセスログ機能があります。

アクセスログ機能を有効にすることで、NAPTの変換ログを装置内に保存したり、syslogサーバーに送信することができます。

### 2.16.4.1. アクセスログ機能の設定

アクセスログ機能の設定は、次のコマンドを使用します。

- グローバルコンフィグモード

  項目 | 説明
  --- | ---
  ip napt access-log type ... size ... | アクセスログ機能を設定します。
  ip napt access-log access-list | ログに記録する条件を設定します。

ip napt access-log type ... size ... コマンドで、アクセスログに記録する情報のタイプと、装置内の保存領域のサイズを設定します。

タイプには、normal と compact の2種類のタイプがあります。それぞれのタイプで記録される情報と、1エントリのサイズは下記のとおりです。

> タイプ | 記録される情報 | サイズ
> --- | --- | ---
> normal | 送信元IPアドレス 送信元MACアドレス プロトコル NAPT変換ポート 送信先アドレス | 24 byte
> compact | 送信元IPアドレス プロトコル NAPT変換ポート 送信先アドレス | 16 byte

装置内の保存領域のサイズは Mbyte 単位で設定します。なお、アクセスログが大量に発生する環境など、装置内の保存領域ではサイズが不十分な場合は syslog の利用をご検討ください。

アクセスログはNAPT変換情報生成時(通信開始)と、情報削除時(通信終了)のそれぞれのログを記録します。なお、生成時のログがあれば、削除時のログがなくてもアドレス変換後の通信とアドレス変換前の通信を対応付けることは可能です。設定コマンドの末尾に「create-only」を指定することで、生成時のログのみを記録できます。

> リスト 2.16.16 設定例：タイプnormalでサイズ100Mbyte。生成と削除の両方を記録

>     ip napt access-log type normal size 100

> リスト 2.16.17 設定例：タイプcompactでサイズ32Mbyte。生成のみ記録

>     ip napt access-log type compact size 32 create-only

アクセスログ機能では、ip napt static、ip napt service の設定に合致するトラフィックは送信元アドレスを特定できるので、ログの記録対象になりません。

またアクセスリストにより、特定のトラフィックのみを記録することも可能です。

> リスト 2.16.18 設定例

>     TCPの宛先ポート80と443の通信のみを記録（HTTP/HTTPS）

>     ip access-list napt-log permit tcp src any sport any dest any dport eq 80
>     ip access-list napt-log permit tcp src any sport any dest any dport eq 443
>     ip napt access-log access-list napt-log

### 2.16.4.2. アクセスログ機能の表示

アクセスログ機能の確認は、次のコマンドを使用します。

- 表示コマンド

  項目 | 説明
  --- | ---
  show ip napt access-log | アクセスログを表示します。

表示コマンドは日時指定が可能です。定期的にログを収集する場合に1日単位や1時間単位でログを表示させることができます。

> リスト 2.16.19 設定例：日時指定なし

>     show ip napt access-log
>     保存されているすべてのログを表示

> リスト 2.16.20 設定例：年月日を指定

>     show ip napt access-log datetime 2023 7 7
>     2023/7/7 00:00:00～2023/7/7 23:59:59のログを表示

> リスト 2.16.21 設定例：年月日時を指定

>     show ip napt access-log datetime 2023 7 7 17
>     2023/7/7 17:00:00～2023/7/7 17:59:59のログを表示

> リスト 2.16.22 設定例：年月日時分を指定

>     show ip napt access-log datetime 2023 7 7 17 50
>     2023/7/7 17:50:00～2023/7/7 17:50:59のログを表示

### 2.16.4.3. アクセスログのsyslog送信機能

アクセスログ送信コマンドを利用し、通信負荷の小さい時間帯にsyslogを一定速度で送信することができます。また、アクセスログだけを異なるsyslogサーバーに送信することも可能です（syslog ip hostコマンドのmatch/unmatchコマンドを利用します）。

- グローバルコンフィグモード

  項目 | 説明
  --- | ---
  ip napt access-log send | アクセスログをsyslog送信します。
  syslog ip host | 送信先と送信内容を指定します。

ip napt access-log sendコマンドで、送信するアクセスログの送信周期および周期あたりの送信量を設定します。送信周期(interval)の単位はミリ秒[ms]で、周期あたりの送信量(count)は、1周期毎に送信する送信パケット数です。送信の停止はnoコマンドで行います。

> リスト 2.16.23 設定例

>     アクセスログを192.168.0.100のサーバーに送信。
>     他のsyslogはイベント発生時に192.168.0.101に送信。

>     syslog function nat warn
>     syslog ip host 192.168.0.100 match nat-access-log
>     syslog ip host 192.168.0.101 unmatch nat-access-log
>     !
>     ip napt access-log type normal size 32 create-only

> リスト 2.16.24 表示例

>     1ログ/10msの速度で送信。
>     Router(config)# ip napt access-log send interval 10 count 1

### 2.16.4.4. 注意事項

- アクセスログを時間帯をずらして送信する場合は、NATのログレベルをwarnまたはerrorにしてください。この方式では、syslog rate-limit（送信抑止機能）の影響を受けません。

- NATのログレベルをnotice, info, debugレベルに設定した場合やincludeオプションでnat - 089を有効にした場合は通常のsyslog送信になり、syslog rate-limit（送信抑止機能）の影響を受けます。利用する場合は送信抑止機能の無効化が必要です（no syslog rate-limit notice）。

- 送信中に送信コマンドを再実行することで、送信周期や送信量を変更できます。今回のみ早く終了させたい場合などに利用してください。送信中にコマンドを再実行しても、最初にコマンドを実行したときに保存されていたログまでしか送信しません。

### 2.16.4.5. 送信履歴と動作確認

次のコマンドで履歴や動作状況の確認ができます。

- 表示コマンド

  項目 | 説明
  --- | ---
  show ip napt access-log send | 送信履歴、動作情報を表示

本コマンドで最大10件の送信履歴を参照できます。また、送信中に実行することで、送信完了までの残り時刻を表示します。

なお、残り時刻は目安であり、装置負荷等により完了時刻が遅れる場合があります。

> リスト 2.16.25 表示例

>     Router(config)# show ip napt access-log send
>     Current:
>       2023/06/13 18:57:58 -
>         Time remaining: 0:01:36, 330/850 messages

>     History:
>       2023/06/13 17:22:00 - 2023/06/13 17:22:13,     1290 messages
>       2023/06/12 17:22:00 - 2023/06/12 17:22:13,     1290 messages

## 2.16.5. パケット評価フロー

NAT、NAPT機能は、処理の方向により以下の順番で処理します。

NATとNAPTを併用した場合、NATの設定が優先です。ただしNATでもNAPTのキャッシュを生成することがあるので、キャッシュ処理はNAPTを優先します。

説明中、記述は省略しますが、NAT/NAPT変換した場合は必ずキャッシュ生成も行います。

### 2.16.5.1. 外部ネットワーク向きのパケット評価フロー

以下の順番に処理します。

> リスト 2.16.26 外部ネットワーク向きの評価フロー

>     1. キャッシュ処理
>       1.1. NAPTキャッシュに該当する場合は、変換して終了
>       1.2. NATキャッシュに該当する場合は、変換して終了

>     2. NATが有効の場合は3、無効の場合は4へ

>     3. NAT処理
>       3.1. staticNATに該当する場合は、変換して終了
>       3.2. dynamicNATに該当し変換できる場合は、変換して終了
>       3.3. dynamicNATに該当し変換できない場合は、廃棄して終了

>     4. NAPTが有効の場合は5、無効の場合は6へ

>     5. NAPT処理
>       5.1. NAPT対象の判定を行い（範囲指定がなければすべて対象）、対象外の場合は6へ
>       5.2. staticNAPTに該当する場合は、変換して終了
>       5.3. serviceNAPTに該当する場合は、変換して終了
>       5.4. NAPT変換できる場合は、変換して処理終了
>       5.5. NAPT変換できない場合は、廃棄して終了

>     6. 処理終了（パケット透過）

3.3の「dynamicNATに該当し変換できない場合」は、変換アドレスが枯渇した場合です。

5.5の「NAPT変換できない場合」は、通信が競合しポート変換が必要なときに変換ポートが枯渇している場合です。ポートが存在しないプロトコルで通信が競合した場合も変換できません。

### 2.16.5.2. 内部ネットワーク向きのパケット評価フロー

以下の順番に処理します。

内部向きでは、staticまたはserviceの設定がないと、外部から通信は開始できません。

> リスト 2.16.27 内部ネットワーク向きの評価フロー

>     1. キャッシュ処理
>       1.1. NAPTキャッシュに該当する場合は、変換して終了
>       1.2. NATキャッシュに該当する場合は、変換して終了

>     2. NATが有効の場合は3、無効の場合は4へ

>     3. NAT処理
>       3.1. staticNATに該当する場合は、変換して終了

>     4. NAPTが有効の場合は5、無効の場合は6へ

>     5. NAPT処理
>       5.1. あて先がNAPTアドレスでもNAPTの内部アドレスでもない場合は6へ
>       5.2. あて先がNAPTの内部アドレス宛ての場合は、廃棄して終了
>       5.3. staticNAPTに該当する場合は、変換して終了
>       5.4. serviceNAPTに該当する場合は、変換して終了
>       5.5. 例外として、内部向けのトンネルパケット（IPsec等）は透過します。

>     6. 処理終了（パケット透過）

## 2.16.6. MAP-E(動的IPアドレス)トンネルでのNAPT動作モードについて

注意

UNIVERGE IX-V シリーズでは、MAP-Eは利用できません。

MAP-E(動的IPアドレス)サービスでは、他のIPv4インターネット接続と比べて、サービスの仕様上ルータが使用できる変換ポート数が制限されています。

そのため、UNIVERGE IX-R/IX-V シリーズでは、MAP-E(動的IPアドレス)で動作するトンネルインタフェースであっても多くのNAPTセッションを確立できるよう、NAPTのポート変換ルールを変更しています。

なお、このポート変換ルールはMAP-E(固定IPアドレス)トンネルや、MAP-Eでないインタフェースでは適用されません。

### 2.16.6.1. 変換ルール

MAP-E(動的IPアドレス)トンネルインタフェースでのNAPTポート変換ルールを以下のように行います。

図 2.16.9 NAPTでのポート変換例（宛先アドレスが異なる場合）

端末1から端末Aに通信する際、端末1は192.168.0.1、送信元ポート番号50001番(以降、192.168.0.1:50001と表記)から端末A(2.2.2.2:80)へ通信を行うものとします。 このときNAPTインタフェースは、変換空きポートの先頭、ここでは4001番を使用してポート変換を行います。 インターネット側の通信は、1.1.1.1:4001(IX-R)と2.2.2.2:80(端末A)の通信となります。

また、同時に端末1から端末Bに通信する際、端末1は192.168.0.1:50002から端末B(3.3.3.3:80)へ通信を行うものとします。 このときNAPTインタフェースでは、他に端末B(3.3.3.3:80)へポート変換しているNAPTセッションが存在しない場合は、同様に変換ポートとして4001番を使用してポート変換を行います。 インターネット側の通信は、1.1.1.1:4001(IX-R)と3.3.3.3:80(端末B)の通信となります。

上記のように、通信先のIPアドレスおよびポート番号が異なっているセッション同士の場合はUNIVERGE IX-R/IX-V シリーズでは同一のポート番号にポート変換を行います。 これにより、サービス側で変換ポート数が制限されているMAP-E(動的IPアドレス)でも変換ポート数以上のNAPTセッションを確立することができます。

図 2.16.10 NAPTでのポート変換例（宛先アドレスが同じ場合）

一方、複数のセッションを同一端末A(IPアドレス・ポート番号)へ確立した場合は、先に通信を開始した端末1から端末Aへの通信のポート変換は4001番で行いますが、後から通信を開始した端末2から端末Aへの通信のポート変換は、次の空きポートである4002番で行います。

インターネット側からの通信に対してNAPTインタフェースでポート変換前のIPアドレス・ポート番号への変換は、インターネット側の変換後IPアドレス・ポート(Outside)と接続先アドレス(Dest)の組から変換を行っているため、これらの２つが装置内で一意である必要があり、接続先アドレス(Dest)が同一の場合は上記のように異なるポート番号でポート変換を行っています。

ただし、MAP-E(動的IPアドレス)インタフェースで行っているポート変換ルールの場合、以下のようなP2P通信などで発生するポートパンチングを行う通信ができません。このような通信が発生する環境では、EIMモードNAPTをご利用ください。

図 2.16.11 NAPTでのポート変換によりポートパンチングができない例

インターネット側からの通信に対するNAPTはインターネット側の変換後IPアドレス・ポート(Outside)と接続先アドレス(Dest)の組から変換を行いますが、端末1は端末Bに対して通信を開始していないため、該当の変換情報(NAPTキャッシュ)が存在せず、端末Bからの通信をポート変換することができません。

### 2.16.6.2. EIMモードNAPT

MAP-E(動的IPアドレス)でのNAPT変換ルールの場合、上記のとおりP2P通信などで影響が発生する場合があります。

この場合、EIM(Endpoint independent Mapping)モードNAPTを使用することでポートパンチングを行う通信が可能になります。

以下に動作概要を説明します。

- インタフェースコンフィグモード

  項目 | 説明
  --- | ---
  ip napt eim-mode | EIMモードNAPTの有効化設定

図 2.16.12 NAPTでのポート変換例（EIM モードの場合）

EIMモードNAPTの場合は、インターネット側からの通信に対してNAPTインタフェースでポート変換前のIPアドレス・ポート番号への変換は、変換前IPアドレス・ポート(Inside)と変換後IPアドレス・ポート(Outside)と接続先アドレス(Dest)の組から変換を行います。

つまり、接続先(Dest)に関係なくNAPT変換前側の通信が発生すると、その通信に対応したポート番号を１つ消費します。

ただし、同じ変換前IPアドレス・ポート(Inside)から異なる接続先(Dest)への通信は同じポート番号で変換を行います。(Endpoint independent Mapping)

また、EIMモードNAPTはインターネット側からの通信に対して変換後IPアドレス・ポート(Outside)のみを使用して、変換前IPアドレス・ポート(Inside)へ変換を行うため、EIF(Endpoint Independent Filtering)となります。

EIMモードNAPTは変換前アドレス・ポートからの通信ごとに１つのポート番号を消費するため、MAP-E(動的IP)インタフェースで使用する場合は基本的にセッション数の上限はTCP・UDPでそれぞれサービスで定められた使用可能ポート数と同等になります。

なお、UDPのみEIMモードNAPTを動作させることができます。

EIMモードNAPTによるポートパンチングを行う通信でのUNIVERGE IX-R/IX-V シリーズの動作は以下のようになります。

図 2.16.13 NAPTでのポート変換（EIM モード）によりポートパンチングが可能な例

端末Bは1.1.1.1:4001宛に通信を行います。このとき、NAPTインタフェースでは端末Aとの通信開始時に192.168.0.1:50001からの通信で変換ポート4001番を割り当てているため、EIF動作により、1.1.1.1:4001宛の通信は対向の端末に関係なくすべて端末1(192.168.0.1:50001)にポート変換されます。 これにより端末Bから端末1への通信を開始することができます。

### 2.16.6.3. EIMモードNAPTの注意事項

- EIMモードNAPTは外部からの通信に対して透過性の高いNAPTとなっていますので、必要に応じて端末へのセキュリティ対策を推奨いたします。

- IPv4ダイナミックフィルタを併用した場合、ダイナミックフィルタはEIFの動作に対応しておりませんので、NAPTインタフェース外からの通信は廃棄されます。