基本情報技術者 2019年 秋期 午後 問04
NATに関する次の記述を読んで、設問1,2に答えよ。
IPv4のIPアドレスのうち、全世界で重複しないように管理されているグローバルIPアドレスはインターネットへの接続に利用でき、プライベートIPアドレスは社内LANなどの閉じたネットワークだけで利用できる。
プライベートIPアドレスだけが割り当てられている機器(以下、LAN内機器という)とインターネットに接続されている外部の機器(以下、インターネット機器という)とは直接通信することはできないが、例えば、NAT(Network Address Translation)を使うことによって通信することができるようになる。
本問で扱うNATは、NAPT(Network Address Port Translation)とも呼ばれる、ルータが搭載している機能であり、通過するパケットのIPアドレス及びポート番号を書き換えることによって、LAN内機器とインターネット機器との通信を可能にする。
表1に、LAN内機器とインターネット機器との通信の際にルータを通過するパケットの、IPアドレス及びポート番号の書換えの概要を示す。ここで、送信パケットとはLAN内機器がインターネット機器に向けて送信するパケットのことをいい、受信パケットとはルータがインターネット機器から受信するパケットのことをいう。

NATには、静的NATと動的NATがある。
静的NATでは、ルータのグローバルIPアドレス及びルータのポート番号の組みとLAN内機器のIPアドレス及びLAN内機器のポート番号の組みの対応をあらかじめ定義しておき、その定義に基づいて、送信パケットと受信パケットの書換え対象のIPアドレス及びポート番号を書き換える。
動的NATでは、送信パケットと受信パケットの書換え対象のIPアドレス及びポート番号を、次のように書き換える。
(1) 送信パケットの送信元IPアドレス及び送信元ポート番号の書換え
① 送信パケットの送信元IPアドレス及び送信元ポート番号の、書換え前の組み(LAN内機器のIPアドレス及びLAN内機器のポート番号の組み)と書換え後の組み(ルータのグローバルIPアドレス及びルータのポート番号の組み)とを、関連付けて一定期間記憶する。
② 送信パケットの送信元IPアドレス及び送信元ポート番号の組みを、書換え前の組みとして記憶している間は、関連付けられている書換え後の組みに書き換える。
③ 送信パケットの送信元IPアドレス及び送信元ポート番号の組みを、書換え前の組みとして記憶していないときは、ルータに割り当てられている幾つかのグローバルIPアドレスのうちの一つと、そのIPアドレスで使用されていないポート番号のうちの一つとの組みに書き換える。
(2) 受信パケットの宛先IPアドレス及び宛先ポート番号の書換え
① 受信パケットの宛先IPアドレスと宛先ポート番号の組みが、上記(1)①の書換え後の組みとして記憶されている間は、関連付けられている書換え前の組みに書き換える。
設問1:
問題文を見る 次の(1)〜(3)のケースのうち、静的NATよりも動的NATの方が適しているものを、解答群の中から選べ。
(1) インターネット機器からアクセス可能なサーバを、LAN内機器として設置する。
(2) LAN内機器から、インターネット機器にアクセスする。
(3) インターネットを介する異なるLANのLAN内機器同士が、あらかじめ決まった固定のポートを使い、相互に通信する。
解答群
ア:(1)だけ
イ:(1)と(2)
ウ:(1)と(3)
エ:(2)だけ
オ:(2)と(3)
カ:(3)だけ
模範解答
エ
解説
解答の導き方
この設問では、3つのケースのうち、静的NATより動的NATが向いているものを選びます。ポイントは、通信相手との対応をあらかじめ決めておく必要があるか、それとも通信を始めるときに作ればよいかです。
IP(Internet Protocol:ネットワーク間でデータを届けるための通信規約)のアドレスは、ネットワーク上の機器を識別するための番号です。LAN(Local Area Network:会社や家庭など限られた範囲のネットワーク)内の機器がインターネット側の機器と通信するには、ルータがパケット(ネットワークでやり取りするデータのまとまり)のIPアドレスやポート番号を書き換えます。
ポート番号は、機器の中でどの通信を扱うかを区別する番号です。本問のNAT(Network Address Translation:IPアドレスを変換する仕組み)は、ポート番号も変換するNAPT(Network Address Port Translation:IPアドレスとポート番号を変換する仕組み)を指しています。
- 静的NATでは、ルータのグローバルIPアドレス・ポート番号と、LAN内機器のIPアドレス・ポート番号との対応をあらかじめ定義します。
- 動的NATでは、LAN内機器から送信するときに対応を作り、一定期間記憶します。対応を記憶している間に返ってきたパケットは、その対応を使ってLAN内機器に届けます。
この違いを使って、各ケースを確認します。
(1) インターネット機器からアクセス可能なサーバを、LAN内機器として設置する
サーバ(他の機器からの要求に応じて情報や機能を提供する機器)には、インターネット側から新しく通信が始まることがあります。そのため、どのグローバルIPアドレス・ポート番号を、どのLAN内機器に結び付けるのかを、あらかじめ決めておく必要があります。
動的NATでは、基本的にLAN内機器が送信したときに対応が作られます。インターネット側からの通信をいつでも受け付ける用途には、静的NATの方が適しています。したがって、(1)は該当しません。
(2) LAN内機器から、インターネット機器にアクセスする
この場合は、LAN内機器から通信を始めます。動的NATは、送信時にLAN内機器のIPアドレス・ポート番号と、ルータ側のグローバルIPアドレス・ポート番号との対応を作ります。返事が来たときは、その対応を使って元のLAN内機器に届けられます。
通信相手との対応を前もって決めておく必要はないため、動的NATが適しています。したがって、(2)は該当します。
(3) インターネットを介する異なるLANのLAN内機器同士が、あらかじめ決まった固定のポートを使い、相互に通信する
一方のLAN内機器から始めた通信への返事だけでなく、相手側から始まる通信も受ける必要があります。また、使うポートがあらかじめ決まっています。どのポートへの通信をどのLAN内機器に届けるのかを、事前に設定できる静的NATが適しています。したがって、(3)は該当しません。
以上から、動的NATの方が適しているのは(2)だけなので、選択肢はエです。
誤りやすいポイント
-
「インターネットと通信するなら動的NAT」と考えてしまうこと
通信をLAN内機器から始めるのか、インターネット側から始めるのかを確認します。LAN内機器から始める場合は動的NATが向きますが、外からいつでもアクセスさせたい場合は、対応をあらかじめ決める静的NATが向きます。 -
動的NATでも、インターネット側からいつでも接続できると思うこと
動的NATの対応は、LAN内機器が送信したときに作られます。その対応がない状態では、インターネット側から届いた通信をどのLAN内機器に渡すか決められません。 -
ポート番号が固定かどうかを見落とすこと
(3)では、固定のポートを使って相互に通信します。ポート番号とLAN内機器との対応をあらかじめ定義する必要があるため、静的NATが適しています。
FAQ
Q: 動的NATでは、インターネットからの返事をどうやってLAN内機器に届けますか?
A: LAN内機器が送信したときに、ルータが送信元のIPアドレス・ポート番号と変換後のIPアドレス・ポート番号を対応付けて記憶します。返事がその変換後の組み合わせ宛てに届くと、記憶した対応を使ってLAN内機器に届けます。
A: LAN内機器が送信したときに、ルータが送信元のIPアドレス・ポート番号と変換後のIPアドレス・ポート番号を対応付けて記憶します。返事がその変換後の組み合わせ宛てに届くと、記憶した対応を使ってLAN内機器に届けます。
Q: 動的NATで作った対応は、ずっと残りますか?
A: 問題文では「一定期間記憶する」とされています。つまり、対応は永久に残るのではなく、一定期間が過ぎると使えなくなることがあります。
A: 問題文では「一定期間記憶する」とされています。つまり、対応は永久に残るのではなく、一定期間が過ぎると使えなくなることがあります。
Q: 静的NATと動的NATは、どちらが優れていますか?
A: どちらが優れているかではなく、通信の使い方で選びます。LAN内機器から通信を始める用途には動的NAT、外部から決まったLAN内機器へ接続させる用途には静的NATが向いています。
A: どちらが優れているかではなく、通信の使い方で選びます。LAN内機器から通信を始める用途には動的NAT、外部から決まったLAN内機器へ接続させる用途には静的NATが向いています。
関連キーワード: NAT、NAPT、静的NAT、動的NAT、ポート番号
設問2:
問題文を見る 次の記述中のに入れる正しい答えを、解答群の中から選べ。ここで、a1〜a3に入れる答えは、aに関する解答群の中から組合せとして正しいものを選ぶものとする。
IPv6とIPv4とは互換性がないので、IPv6のネットワーク内の機器(以下、IPv6機器という)とIPv4のネットワーク内の機器(以下、IPv4機器という)とは直接通信することができない。IPv6機器からIPv4機器にアクセスする方法の一つに、NATの機能を拡張したNAT64と、DNSの機能を拡張したDNS64との組合せによる方法がある。この方法によるIPv6機器からIPv4機器へのアクセスの流れを次に示す。
(1) IPv6機器は、アクセス先の機器のIPアドレスを、DNS64から入手する。DNS64はa1のネットワークに置かれるDNSであり、ホスト名に対応するIPアドレスの問合せに対し、対応するa2アドレスがあればそれを返し、対応するa2アドレスがなく、対応するa3アドレスがあればそれをa2アドレスに変換して返す。ここで、IPv4アドレスのIPv6アドレス表現は、当該IPv4アドレスを示す4バイトの前に、あらかじめ決められた12バイトのプレフィクスを付加したものである。
(2) IPv6機器は、入手したIPアドレスに宛ててIPv6のパケットを送信する。
(3) (2)のパケットがIPv4機器向けならば、当該パケットとその返信パケットは、NAT64の機能をもつルータ(以下、NAT64ルータという)が受信する。
(4) NAT64ルータは、IPv6機器からIPv4機器に向けて送信されたIPv6のパケットをIPv4のパケットに、その返信パケットであるIPv4のパケットをIPv6のパケットに、それぞれ変換し、転送する。このとき、IPアドレス及びポート番号は、動的NATによる書換えの考え方を用いて変換する。NAT64ルータによるIPアドレスとポート番号の変換例を、図1に示す。

aに関する解答群


b〜dに関する解答群
ア:192.168.0.0
イ:192.168.0.1
ウ:192.168.0.2
エ:64:ff9b::
オ:64:ff9b::c0a8:1
カ:64:ff9b::c0a8:2
キ:fc00::
ク:fc00::1
ケ:fc00::2
模範解答
a:エ、b:ウ、c:イ、d:カ
解説
解答の導き方
この問題では、DNS64が返すアドレスの種類と、NAT64ルータがIPv6パケットとIPv4パケットを変換するときのアドレス・ポート番号を順に考えます。
IPアドレスは、ネットワーク上で通信相手を示す番号です。ポート番号は、同じ機器で動く複数の通信を区別する番号です。IPv4(Internet Protocol version 4:IPv4形式のアドレスを使う通信方式)とIPv6(Internet Protocol version 6:IPv6形式のアドレスを使う通信方式)では、アドレスの形式が異なります。
1. a1〜a3は、DNS64が何を返すかから判断します。
DNS(Domain Name System:ホスト名とIPアドレスを対応付ける仕組み)は、ホスト名を使った問合せに対し、対応するIPアドレスを返します。DNS64は、DNSの機能を拡張し、IPv6機器がIPv4機器にアクセスできるようにする仕組みです。
設問では、DNS64は「対応するa2アドレスがあればそれを返し」、なければ「対応するa3アドレスがあればそれをa2アドレスに変換して返す」とあります。IPv6機器はIPv6のパケットを送るため、DNS64が返すアドレスはIPv6アドレスです。IPv6アドレスがなく、IPv4アドレスがある場合には、そのIPv4アドレスをIPv6アドレスの形に変換します。
また、DNS64はIPv6機器から使われるDNSなので、設置先はIPv6のネットワークです。したがって、a1はIPv6、a2もIPv6、a3はIPv4となり、組合せはエです。
2. bは、IPv6アドレスに含まれるIPv4機器のアドレスです。
IPv6機器が送るパケットの宛先IPアドレスは、図1では64:ff9b::c0a8:2です。図1の注記にあるプレフィクスは、アドレスの先頭に付ける決まった部分です。この例では、64:ff9b::がプレフィクスに当たります。
残りのc0a8:2は、IPv4アドレスの4バイトを16進数で表した部分です。2バイトずつに分けるとc0 a8 00 02です。これを10進数に直すと、c0は192、a8は168、00は0、02は2です。したがって、IPv4機器のIPアドレスは192.168.0.2です。よって、bはウです。
3. cは、送信パケットの送信元IPアドレスです。
NAT(Network Address Translation:パケット内のIPアドレスなどを書き換える仕組み)は、送信パケットの送信元を、ルータ側のアドレスに書き換えます。図1では、NAT64ルータのIPv4アドレスは192.168.0.1です。そのため、IPv4パケットの送信元IPアドレスとなるcは192.168.0.1で、選択肢はイです。
ポート番号も、送信元の50000から、ルータで使用する60000に書き換えられています。動的NATでは、変換前と変換後のIPアドレス・ポート番号の組を対応付けて記憶します。この例では、次の対応を記憶します。
この対応を記憶しておくことで、返信パケットを元のIPv6機器へ戻せます。
4. dは、返信パケットの送信元に対応するIPv6アドレスです。
返信パケットの宛先は192.168.0.1、ポート番号は60000です。NAT64ルータは、記憶している対応関係を使い、宛先をfc00::2、ポート番号50000に戻します。
一方、返信パケットの送信元はIPv4機器の192.168.0.2です。IPv6側でこの相手を表すには、先ほどと同じプレフィクスを付けます。その結果、送信元IPアドレスは64:ff9b::c0a8:2となります。したがって、dはカです。
誤りやすいポイント
- a2とa3を逆にしないようにします。DNS64が最終的にIPv6機器へ返すのはIPv6アドレスです。IPv4アドレスは、IPv6アドレスがない場合に変換元として使われます。
- bはNAT64ルータのアドレスではなく、IPv4機器のアドレスです。64:ff9b::c0a8:2の末尾に含まれるIPv4アドレスを読み取ります。
- cでは、図1に示されたNAT64ルータのIPv4アドレスを使います。ルータのIPv6アドレスであるfc00::1と取り違えないようにします。
- dはルータのIPv6アドレスではありません。返信してきたIPv4機器のアドレスを、プレフィクスを使ってIPv6アドレスの形にしたものです。
- 返信パケットでは、宛先が変換前の送信元に戻ります。送信時と返信時で、送信元・宛先の役割が入れ替わる点に注意します。
FAQ
Q: DNS64は、なぜIPv4アドレスをIPv6アドレスに変換するのですか?
A: IPv6機器はIPv6のパケットを送ります。アクセス先がIPv4アドレスしか持たない場合、そのままではIPv6機器が使う宛先アドレスとして扱えないため、IPv6形式のアドレスを作って返します。
A: IPv6機器はIPv6のパケットを送ります。アクセス先がIPv4アドレスしか持たない場合、そのままではIPv6機器が使う宛先アドレスとして扱えないため、IPv6形式のアドレスを作って返します。
Q: 返信パケットのポート番号が60000から50000に戻るのはなぜですか?
A: NAT64ルータが、送信時に「fc00::2のポート番号50000」と「192.168.0.1のポート番号60000」を対応付けて記憶しているからです。返信を受け取ると、その対応を逆向きにたどって元の機器へ届けます。
A: NAT64ルータが、送信時に「fc00::2のポート番号50000」と「192.168.0.1のポート番号60000」を対応付けて記憶しているからです。返信を受け取ると、その対応を逆向きにたどって元の機器へ届けます。
Q: dがfc00::1ではないのはなぜですか?
A: fc00::1はNAT64ルータのIPv6アドレスです。dは返信パケットを送ってきたIPv4機器をIPv6側で表すアドレスなので、IPv4機器の192.168.0.2にプレフィクスを付けたアドレスになります。
A: fc00::1はNAT64ルータのIPv6アドレスです。dは返信パケットを送ってきたIPv4機器をIPv6側で表すアドレスなので、IPv4機器の192.168.0.2にプレフィクスを付けたアドレスになります。
関連キーワード: NAT、NAT64、DNS64、IPv4、IPv6、ポート番号



