【基本情報技術者試験対策】NAT,NAPT,Proxyの違い
基本情報技術者試験では、数年で数回程度NATやNAPTに関する問題が出題されます。
以下が実際に出題された問題の1つです。(平成31年度秋季)
ネットワークは特別な計算などを行うのではなく、基本的に知っていればすぐに解くことができます。ただし、覚えることが非常にたくさんあります。
今回は、基本情報技術者試験の過去問題を取り上げ、NATやNAPTの特徴や違いについて説明します。また、そもそも何故これらの技術が必要なのかについても解説します。
さらに関連してProxyと呼ばれる技術もあるので、あわせて解説します。
まず、この記事は以下のような人を対象としています。
対象者・NAT,NAPT,Proxyの違いについて知りたい人
・グローバルIPアドレスとプライベートIPアドレスの違いについて知りたい人
・基本情報技術者試験の過去問題のうち、NATに関する解説を知りたい人
この記事を読むと、次のようなことが理解できるようになります。
この記事を読むとできること・NAT,NAPT,Proxyの特徴について理解することができる
・グローバルIPアドレスとプライベートIPアドレスの違いについて理解することができる
・基本情報技術者試験の過去問題の解き方を知ることができる
基本情報技術者試験の過去問題を見ていたら、NATという用語ができました。調べていくと、NAPTという似た用語もでてきました。どう違うのですか?
ネットワークを勉強する場合、似たような用語(略語)が出てきて戸惑うかも知れません。今回は、それぞれの特徴について説明します。
ネットワーク全般について勉強したい人は次の書籍がおススメです!!
より詳細に勉強したい人は図式が満載な次の書籍がおススメです!!
基本情報技術者試験の対策をしたい人は次の書籍がおススメです!!
グローバルIPアドレスとプライベートIPアドレス
インターネット接続に限らず、現在「TCP/IP」と呼ばれる技術を使った通信では、全ての端末に「IPアドレス」の設定が必要です。
IPアドレス(IPv4)には「グローバルIPアドレス」と「プライベートアドレス」の2種類があります。端末をどこに設置して利用するのかによって、どちらのIPアドレスを設定するかが決まります。
グローバルIPアドレス
インターネットで利用する端末には、グローバルIPアドレスを設定しなければなりません。グローバルIPアドレスは世界中で厳格に管理されていて、自由に使用することができません。申請し、使用料金を支払う必要があります。
インターネットでホームページや動画を配信しているサーバには、必ずこのグローバルIPアドレスが設定されています。
サーバに接続する場合、サーバに設定されているグローバルIPアドレスを利用します。複数のサーバに同じグローバルIPアドレスが設定されていると、どのサーバに接続するのか判断することができません。したがって、グローバルアドレスは世界中で唯一の値を設定しなければなりません。
更に、インターネットを利用するユーザの端末にもグローバルIPアドレスが設定されている必要があります。
つまり、インターネットを利用する端末はサーバやクライアントに限らず、必ずグローバルIPアドレスを設定しておかなければなりません。
プライベートIPアドレス
プライベートIPアドレスはLAN内の端末に設定するIPアドレスです。
LANは施設内、家庭内などで構築・利用されるネットワークで、インターネットと直接通信はできません。インターネットを利用しないため、これらの端末にはグローバルIPアドレスを設定する必要はありません。
このようにインターネットとは無関係な私的なネットワーク内で利用するIPアドレスなので「プライベートIPアドレス」と呼びます。
プライベートIPアドレスは自由に値を設定することができますが、使用が推奨されている範囲が示されています。通常、これらの範囲の内のどれかを設定します。
設定できるIPアドレスの範囲 |
10.0.0.0~10.255.255.255 |
172.16.0.0~172.31.255.255 |
192.168.0.0~192.168.255.255 |
ルータはプライベートIPアドレスからのインターネット通信は拒否する働きがあります。したがって、プライベートIPアドレスが設定されている端末はインターネット接続することは不可能です。
逆にインターネットからプライベートIPアドレスが設定されている端末に直接通信することも不可能なので、外部からの不正アクセスを防ぐことができます。
プライベートIPアドレスを利用する利点は次の2つです。
- 使用が推奨されている範囲内であれば、誰でも自由に、無料で利用することができる。
- インターネットからの不正アクセスを防ぐことができる。
一方、欠点は以下の通りです。
- インターネットを利用することができない。
なお、IPアドレスについて、詳しく知りたい人は以下の記事を参照してください。
プライベートIPアドレスの端末からのインターネット接続
LAN内の端末には、通常プライベートIPアドレスを設定します。しかし、これではインターネット接続ができません。
現在の日常生活や仕事ではインターネット接続が必須です。ホームページを見たり、メールの送受信をするためにはインターネットに接続しなければなりません。
インターネットに接続するためには、それぞれの端末にグローバルIPアドレスを取得し、設定する必要があります。しかし、複数のグローバルIPアドレスを取得するためには莫大な使用料が必要となります。
実はグローバルIPアドレスは無限に利用できる訳ではなく、絶対数が決まっています。
IPv4は32ビットで表現されるため、約42億個のIPアドレスが用意されていますが、そのすべてをグローバルIPアドレスとして使用できません。端末には設定できないIPアドレスが存在するため、実際に利用できるアドレス数はもっと少なくなります。
そもそも、私たちは一人でパソコン、タブレットやスマホなど複数の端末を使ってインターネットに接続しています。現在の世界の人口は約78億人で、半分の人が一人で1台スマホを使っているとすると、それだけでIPv4で利用できるアドレス数を超えてしまいます。
このような問題を解決するために考えられた機能が「NAT/NAPT/Proxy」となります。これらの機能を利用すれば、プライベートIPアドレスが設定されている端末がグローバルIPアドレスがなくてもインターネットに接続できるようになります。
NATの仕組み
NATは「Network Address Translation」の略で、「1つのプライベートIPアドレスと1つのグローバルIPアドレスの相互変換を行う機能」です。通常、ルータに実装されている機能です。
プライベートIPアドレスが設定されている端末がインターネットに接続しようとすると、そのデータはルータに転送されます。ルータは宛先のIPアドレスがグローバルIPアドレスの場合、プライベートIPアドレスをルータ自身に設定されているグローバルIPアドレスに置き換えて、インターネットに接続します。
この時、どのプライベートIPアドレスがルータのグローバルIPアドレスを使用しているのか、情報を記録しておきます。
インターネットから返信が帰ってくると、ルータは記憶していた情報から、プライベートIPアドレスを求め、その端末にデータを届けます。
以下がNAT処理の流れです。
ルータに設定されている「192.168.0.254/24」はデデフォルトゲートウェイの値です。また、ルータのインターネット側に設定されているアドレス「a.a.a.a」は取得してあるグローバルIPアドレスを示します。
インターネット側にはグローバルIPアドレス「b.b.b.b」が設定されているサーバがあるものとします。
端末がインターネットのサーバにアクセスしようとすると、ネットワークアドレスが異なるため直接通信することができません。そこで、データはデフォルトゲートウェイとして設定されているルータに転送されます。
ルータは受け取ったデータからインターネットと接続するデータだと判断し、プライベートIPアドレスをルータ自身に設定されているグローバルIPアドレスにアドレスを変換します。そして、その変換した内容を別途記憶しておきます。
受け取ったデータ内の送信元IPアドレスをルータのグローバルIPアドレスに修正してインターネット上に送信します。インターネットでは、様々なルータに中継されて、目的のサーバに届けられます。
サーバは、送信元となるルータのグローバルIPアドレス「a.a.a.a」に向けて処理結果を送信します。これでサーバからの応答がルータまで戻ってきます。
ルータはNAT時に保存しておいた変換情報からグローバルIPアドレス「a.a.a.a」宛に届いたデータが、「192.168.0.1」のプライベートIPアドレスの端末からの要求だったことを確認します。
ルータはIPアドレス「a.a.a.a」に届いたデータの送信先アドレスを変換情報を元に「192.168.0.1」に変更し、LAN側のインターフェースからデータを送信します。
このような流れでプライベートIPアドレスが設定されている端末がNATを利用してインターネットに接続しています。
プライベートIPアドレスが設定されているLAN内の端末がインターネットに接続するために、NATは非常に重要な役割を果たしています。
NATの機能を利用すると、LAN内の端末がインターネットに接続することができます。しかし、大きな問題は、1台の端末がNATを利用してインターネットに接続している場合、他の端末は一切インターネットに接続することができません。
なお、グローバルIPアドレスを1つしか取得していない場合は1台の端末のみインターネットに接続できますが、複数のグローバルIPアドレスを取得していれば、その数分だけ同時にインターネットに接続することができます。
NATの問題点を解決するのが、次に説明する「NAPT」です。
NAPTの仕組み
NAPTは「Network Address Port Translation」の略で、「複数のプライベートIPアドレスと1つのグローバルIPアドレスの相互変換を行う機能」です。この機能もルータに実装されています。
NATとの違いは、同時に接続できる端末の台数が増えるということです。接続できる端末数の上限は使用するルータの仕様によります。一般的には数百台の端末が同時に接続しても問題ありません。
グローバルIPアドレスが1つしかないのに、何故複数の端末が同時にインターネットに接続できるのでしょうか?
この仕組みを実現しているのが、「ポート番号」になります。
TCP/IPでは、通信する場合に「ソケット」と呼ばれるデータの送受信を行うためのストリーム(パイプのようなもの)が作られます。このソケットは1つの通信で1つ作られます。そして、このソケットには識別情報として「ポート番号」が設定されています。
みなさんも1台の端末から複数のインターネット上のサーバにアクセスしたことがあると思います。この時、それぞれのサーバと通信するソケットには別々のポート番号が設定されているので、ポート番号を調べれば、端末内のどのプログラムからアクセスされたのか判断することができます。
ルータでプライベートIPアドレスをグローバルIPアドレスに変換する時にポート番号の情報も登録します。端末ごとに異なるポート番号が設定されているので、IPアドレスとポート番号の組み合わせを利用すれば、複数の端末の中から特定の1台を特定することができます。
以下がNAPT処理の流れです。
ネットワーク内にはプライベートIPアドレスが設定されている端末が2台存在します。ルータに設定されている「192.168.0.254/24」はデフォルトゲートウェイの値です。また、ルータのインターネット側に設定されているアドレス「a.a.a.a」は取得してあるグローバルIPアドレスを示します。
インターネット側にはグローバルIPアドレス「b.b.b.b」が設定されているサーバがあるものとします。このサーバはWebサーバとしますので、ポート番号「80」でサービスが提供されている状態です。
2台の端末がインターネット上のWebサーバにアクセスしようすると、ネットワークアドレスが異なるため直接通信することはできません。そこで、デフォルトゲートウェイが設定されているルータにデータの送信し、転送を依頼します。この際、送信元の情報としてIPアドレスの他にポート番号が渡されます。
送信元のポート番号はパソコンがランダムで求めて設定します。なお、接続先のサーバに設定されているポート番号はきちんと設定しなければなりません。Webサーバで使われるポート番号は通常「80」です。
また、2台の端末で同じポート番号が使われても問題ありません。IPアドレスとポート番号の2つの値の組み合わせで識別されるため、ポート番号が同じでもIPアドレスが異なれば、別の端末からの通信とみなされます。
ルータは受け取ったデータからインターネットと接続するデータだと判断し、プライベートIPアドレスとポート番号の組み合わせをルータ自身に設定されているグローバルIPアドレスとランダムなポート番号の組み合わせに変換します。そして、その変換した内容を別途記憶しておきます。
グローバルIPアドレスは「a.a.a.a」の1つしかありませんが、異なるポート番号と組み合わせることでそれぞれが異なる通信だと識別できるようになります。つまり、1つのグローバルIPアドレスを複数の端末で共有できます。
受け取ったデータ内の送信元IPアドレスをルータのグローバルIPアドレスに修正してインターネット上に送信します。インターネットでは、様々なルータに中継されて、目的のサーバに届けられます。
サーバは、送信元となるルータのグローバルIPアドレス「a.a.a.a」に向けて処理結果を送信します。これでサーバからの応答がルータまで戻ってきます。
ルータはNAPT時に保存しておいた変換情報からグローバルIPアドレス「a.a.a.a:10000」宛に届いたデータが「192.168.0.1:5000」、「a.a.a.a:20000」宛に届いたデータが「192.168.0.2:5000」で識別できる端末からの要求だったことを確認します。
ルータはIPアドレス「a.a.a.a」に届いたデータを2台の端末のIPアドレスとポート番号に変更し、LAN側のインターフェースからデータを送信します。
このような流れでプライベートIPアドレスが設定されている複数の端末がNAPTを利用してインターネットに接続しています。
現在複数の端末が同時にインターネットに接続することが多いので、NATではなくNAPTの方がよく使用されています。
NATとNAPTの違いは、アドレス変換する時にポート番号を使うか、使わないかの違いです。
TCP/IPでは、通信する際必ずポート番号が指定されています。NATを利用する場合も、やり取りされているデータ内にはポート番号が含まれています。しかし、NATではポート番号はアドレス変換では使いません。一方のNAPTでは、ポート番号も使います。
Proxyの仕組み
プライベートIPアドレスが設定されている端末は、NATかNAPTを利用すればインターネットに接続することができます。同じような機能として「Proxy」と呼ばれるものもあります。このProxyはNATやNAPTと合わせて利用するのが一般的です。併用することで、NATやNAPTでは実現できない便利な機能が更に使えるようになります。
NAT/NAPTは「どんな通信をする場合でも利用できる」汎用的なインターネット接続ができます。一方、Proxyは「HTTP/HTTPS,FTP通信のみ」のインターネット接続でしか利用できません。特定の通信に特化した機能です。
Proxyは「代理」を意味します。LAN内の端末がインターネットに接続しようとすると、直接目的のWebサーバにアクセスするのではなく、組織内に構築されたProxyサーバにアクセスします。データを受信したProxyサーバはユーザに代わり(代理)、目的のWebサーバにアクセスします。Webサーバから受信したデータを端末に返します。
端末側を利用しているユーザはProxyサーバを経由して、インターネットに接続していることを意識する必要はありません。
なお、実際にルータからインターネットに接続する場合は、NATかNAPTが利用されます。
Proxyの利点
Proxyを利用すると様々な利点があります。
フィルタリングを設定できる
職場などでWebサーバへの接続を許可する場合、不適切なサイトへの接続を制御したい場合があります。「仕事中にYoutubeを見て仕事をサボらないようにしたい」といった要望に応えることができます。Webサーバに接続を拒否するサイトのURLを登録しておくと、ユーザがそのURLにアクセスしようとするとProxyサーバが接続を拒否します。または、接続を許可するサイトのURLを登録しておくと、そのサイトのみに接続でき、それ以外は一切接続できないようにすることもできます。
また、URL以外でも特定のIPアドレスが設定されている端末の接続を禁止したり、接続できる時間や曜日を限定する、といった使い方も可能です。
ProxyはWebサーバへ接続するデータの内部を解析して、接続するかどうかを判断することができます。
アクセスログを残すことができる
「誰が、いつ、どこのサイトに接続したのか」といった履歴(アクセスログ)を保存することができます。ユーザ(端末)の通信履歴を管理/監視することができます。
アクセスログは、不正な接続がなかったか、あるは不正な接続があった場合、いつどの端末から行われたのか、を調べることができます。場合によっては、知らない間に端末がウィルス感染し、勝手に不正アクセスを行い内部の情報を漏洩させている危険性もあります。
インターネット接続の管理/監視することができるのが、Proxyを利用する大きな利点のひとつと言えます。
Webページを高速に表示することができる
ProxyサーバはアクセスしたWebページを一時的にキャッシュ(メモリ)に保存しています。もし、他のユーザが同じサイトに接続しようとした場合は、Webサーバにアクセスせずキャッシュしていたデータをユーザに返します。直接Webサーバにアクセスしないので、すぐにユーザのWebブラウザにはWebページが表示されます。なお、該当するWebサーバのデータがキャッシュに保存されていない場合は、Webサーバにアクセスして、Webページを取得します。
Webページがすぐに表示されるので有効な機能ですが、キャッシュされているデータは以前アクセスして保存していたデータなので、古いデータの可能性があります。頻繁にデータが更新されるようなWebページの場合は、必要であればキャッシュを利用せず、毎回Webサーバにアクセスするようにしなければなりません。
基本情報技術者試験の過去問題
以上、NAP/NAPT/Proxyについて説明してきました。では、実際に関連する基本情報技術者試験の過去問題を確認していきます。
平成31年秋季 第33問 / 平成29年春季 第32問
この記事の冒頭で提示した問題です。今までの解説を読んでいれば、問題文を読み終えた瞬間に答えを求めることできます。
「複数のPCがインターネットを利用する」という文章がポイントです。同時に複数の端末がインターネットを利用するために必要な機能は「NAPT」なので、答えは「イ」となります。
「DHCP(Dynamic Host Configuration Protocol)」は「電源を投入したら、自動的にIPアドレスなどのネットワークの情報を設定するための機能」です。「PPPoE(Point to Point Protocol over Ehternet)」は「電話を使ったインタネット接続用の機能(PPP)をイーサネットでも利用できるようにした機能」です。「パケットフィルタリング」は「受信/送信するデータの通過を許可/拒否する機能」でファイアウォール(ルータ)を示します。
平成29年秋季 第33問
この問題は、NATの特徴を求める問題です。選択肢の中から、「アドレス変換」について説明しているものを選択します。したがって、答えは「エ」となります。
「選択肢ア」は「Proxy」、「選択肢イ」は「WAF(Web Application Firewall)」、「選択肢ウ」は「パケットフィルタリング(ルータ)」についての説明です。
まとめ
今回は、インターネット接続で利用されるNAT,NAPT,Proxyについて説明しました。
どれも「プライベートIPアドレスが設定されている端末がそのままインタネットに接続するための機能」ですが、その実現方法がそれぞれ異なります。
特にNATとNAPTはどちらも同じアドレス変換なので、その違いを理解しておく必要があります。
・インターネットを利用する端末にはグローバルIPアドレスを設定する
・LAN内の端末にはプライベートIPアドレスを設定する
・プライベートIPアドレスが設定されている端末はそのままではインターネットに接続できない
・プライベートIPアドレスが設定されている端末はNAT,NAPT,Proxyを利用してインターネットに接続させる
・NAT,NAPTはプライベートIPアドレスをグローバルIPアドレスに変換する機能である
NAT,NAPTの違いは理解できましたか?
IPアドレスとかポート番号とか、色々な用語がでてきて大変です!!
ネットワークは色々な用語がたくさんあるので覚えるのが大変ですね。
IPアドレスやポート番号はとても重要なので、是非この機会に覚えて下さい!!
用語は整理してこれから勉強します!!
用語を勉強する際は、正式名称もあわせてチェックしてくださいね
基本情報技術者試験の午前問題の伝送速度や回線利用率を求める問題の解説は以下の記事で説明していますので、是非ご覧ください。