ネットワークアドレス変換(NAT)技術の詳細解説
NAT概要
インターネットの発展とネットワークアプリケーションの増加に伴い、限られたIPv4公開アドレスはネットワーク発展のボトルネックとなっています。この問題を解決するために、NAT(Network Address Translation、ネットワークアドレス変換)技術が生まれました。NAT技術は主に内部ネットワークのホストが外部ネットワークにアクセスする実現に使用されます。一方でNATはIPv4アドレス不足の問題を緩和し、もう一方では外部ネットワークがプライベートアドレスを使用する内部ネットワークと直接通信できないようにするため、内部ネットワークのセキュリティを向上させます。
NATの背景
- インターネットユーザーの増加に伴い、IPv4の公開アドレス資源はますます不足しています。
- 同時に、IPv4公開アドレス資源にはアドレス分配の不均衡問題があり、一部の地域ではIPv4利用可能な公開アドレスが深刻に不足しています。
- この問題を解決するため、IPv4公開アドレス不足を解決する移行技術を使用することが特に必要です。
プライベートIPアドレス
- 公開アドレス:専門の機関が管理・分配し、インターネット上で直接通信できるIPアドレスです。
- プライベートアドレス:組織や個人が任意に使用でき、インターネット上では直接通信できず、内部ネットワークでのみ使用されるIPアドレスです。
- A、B、Cクラスアドレスの中には、プライベートIPアドレス専用に予約されたアドレスがあります:
- Aクラス:10.0.0.0 ~ 10.255.255.255
- Bクラス:172.16.0.0 ~ 172.31.255.255
- Cクラス:192.168.0.0 ~ 192.168.255.255
NAT技術の原理
NAT:IPデータパケット内のIPアドレスを変換する技術で、現行ネットワークで広く展開されている技術です。通常、ルーターやファイアウォールなどのネットワーク出口デバイスに配置されます。
NATの典型的な応用シナリオ:内部プライベートネットワーク(キャンパス、家庭)でプライベートアドレスを使用し、出口デバイスにNATを配置します。「内部から外部」へのトラフィックについては、ネットワークデバイスがNATを通じてデータパケットの送信元アドレスを変換(特定の公開アドレスに変換)します。一方、「外部から内部」へのトラフィックについては、データパケットの宛先アドレスを変換します。
プライベートアドレスの使用とNAT技術を組み合わせることで、公网IPv4アドレスを効果的に節約できます。
静的NAT
静的NATの原理
静的NAT:各プライベートアドレスには対応する固定の公開アドレスがあり、プライベートアドレスと公開アドレスの関係は1対1のマッピングです。
双方向相互アクセスをサポート:プライベートアドレスがインターネットにアクセスする際に出口デバイスのNAT変換を経ると、対応する公開アドレスに変換されます。同時に、外部ネットワークが内部ネットワークにアクセスする場合、パケットに含まれる公開アドレス(宛先アドレス)もNATデバイスによって対応するプライベートアドレスに変換されます。
静的NATの設定方法
- 方法1:インターフェースビューでの静的NAT設定
[Router-GigabitEthernet0/0/0] nat static global {global-address} inside {host-address}globalパラメータは外部公開アドレスを設定し、insideパラメータは内部プライベートアドレスを設定します。
- 方法2:システムビューでの静的NAT設定
[Router] nat static global {global-address} inside {host-address}設定コマンドは同じですが、ビューはシステムビューで、その後具体的なインターフェースで静的NATを有効にします。
[Router-GigabitEthernet0/0/0] nat static enableインターフェースでnat static機能を有効にします。
静的NAT設定例
ルーターR1で静的NATを設定し、内部ネットワークホストのプライベートアドレスを公開アドレスに1対1でマッピングします。
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]ip address 203.0.113.1 24
[R1-GigabitEthernet0/0/1]nat static global 203.0.113.1 inside 10.1.1.1
[R1-GigabitEthernet0/0/1]nat static global 203.0.113.2 inside 10.1.1.2
[R1-GigabitEthernet0/0/1]nat static global 203.0.113.3 inside 10.1.1.3
動的NAT
動的NATの原理
動的NAT:静的NATは厳密に1対1でアドレスマッピングを行うため、内部ホストが長時間オフラインでデータを送信しない場合でも、対応する公開アドレスは使用状態のままです。アドレスの浪費を避けるため、動的NATはアドレスプールの概念を導入しました:利用可能なすべての公開アドレスでアドレスプールを構成します。内部ホストが外部ネットワークにアクセスする際に、一時的にプール内の未使用アドレスを割り当て、そのアドレスを「使用中」としてマークします。このホストが外部ネットワークへのアクセスを停止すると、割り当てられたアドレスを回収し、「未使用」として再マークします。
動的NAT変換例
(図解を追加する予定)
動的NATの設定方法
- アドレスプールの作成
[Router] nat address-group group-index start-address end-address公開アドレス範囲を設定します。group-indexはアドレスプール番号、start-addressとend-addressはそれぞれアドレスプールの開始アドレスと終了アドレスです。
- アドレス変換のACLルール設定
[Router] acl number [Router-acl-basic-number] rule permit source source-address source-wildcard動的変換が必要な送信元アドレス範囲を一致させるための基本ACLを設定します。
- インターフェースビューでのアドレスプール付きNATアウトバウンド設定
[Router-GigabitEthernet0/0/0] nat outbound acl-number address-group group-index [no-pat]インターフェースでACLとアドレスプールを関連付けて動的アドレス変換を行います。no-patパラメータはポート変換を行わないことを指定します。
動的NAT設定例
ルーターR1で動的NATを設定し、内部ネットワークホストのプライベートアドレスを公開アドレスに動的にマッピングします。
[R1]nat address-group 1 203.0.113.1 203.0.113.3
[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 10.1.1.0 0.0.0.255
[R1-acl-basic-2000]quit
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 no-pat
NAPT、Easy-IP
NAPTの原理
動的NATがアドレスプールからアドレスを選択してアドレス変換を行う際にポート番号を変換しない、つまりNo-PAT(No-Port Address Translation、非ポートアドレス変換)の場合、公開アドレスとプライベートアドレスは依然として1対1のマッピング関係であり、公開アドレスの利用率を高めることができません。
NAPT(Network Address and Port Translation、ネットワークアドレスポート変換):アドレスプールからアドレスを選択してアドレス変換を行う際にIPアドレスだけでなくポート番号も変換し、公開アドレスとプライベートアドレスの1対nのマッピングを実現し、公開アドレスの利用率を効果的に高めることができます。
NAPT設定例
ルーターR1でNAPTを設定し、内部ネットワークのすべてのプライベートアドレスが203.0.113.1を介してインターネットにアクセスできるようにします。
[R1]nat address-group 1 203.0.113.1 203.0.113.1
[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 10.1.1.0 0.0.0.255
[R1-acl-basic-2000]quit
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
Easy IPの原理
Easy IP:実装原理はNAPTと同じで、IPアドレスと伝送層ポートを同時に変換しますが、Easy IPにはアドレスプールの概念がなく、インターフェースアドレスをNAT変換の公開アドレスとして使用します。Easy IPは固定の公開IPアドレスを持たないシナリオに適しています:DHCPやPPPoEダイヤルでアドレスを取得するプライベートネットワーク出口など、取得した動的アドレスを直接変換に使用できます。
Easy IP設定例
ルーターR1でEasy-IPを設定し、内部ネットワークのすべてのプライベートアドレスが203.0.113.1を介してインターネットにアクセスできるようにします。
[R1]acl 2000
[R1-acl-basic-2000]rule 5 permit source 10.1.1.0 0.0.0.255
[R1-acl-basic-2000]quit
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]nat outbound 2000
NAT Server
NAT Serverの使用シナリオ
NAT Server:[公開アドレス:ポート]と[プライベートアドレス:ポート]の1対1マッピング関係を指定し、内部ネットワークサーバーを公開ネットワークにマッピングします。プライベートネットワーク内のサーバーが公開ネットワークにサービスを提供する必要がある場合に使用します。外部ネットワークのホストが[公開アドレス:ポート]にアクセスすることで、内部ネットワークサーバーにアクセスします。
NAT Server設定例
ルーターR1でNAT Serverを設定し、内部ネットワークサーバー10.1.1.100の80ポートを公開アドレス203.0.113.1の8080ポートにマッピングします。
[R1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1]ip address 203.0.113.1 24
[R1-GigabitEthernet0/0/1]nat server protocol tcp global 203.0.113.1 8080 inside 10.1.1.100 80