0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NATとNAPT

Last updated at Posted at 2023-01-10

アドレス変換の必要性

  • インターネットに接続するコンピュータは、
    自分自身を示すIPアドレスとして、世界で唯一のグローバルIPアドレスを使わなければなりません。
    なのでアドレス変換という方法を用いてインターネットと接続する。
    そこには2つの方法がある。
    NAT(ナット)NAPT(ナプト)だ。
  • 通常は、インターネットとの境界点となるルーターがこれを行う。

出典

  • p190 プライベートIPアドレスを持つノード(LAN内の機器)と、インターネット上のグローバルIPアドレスを持つノード(サーバなど)は、直接通信することができません。

出典

NAT(Network Addless Translation)

いくつかのグローバルIPアドレスをルーターに割り当てておりインターネットに接続する際にその割り当てられたグローバルIPアドレスのいづれかを使って通信する方法。

インターネットに同時に接続できるコンピュータの台数が、ルーターの持つグローバルIPアドレス数で制限される。

NAPT(Network Address Port Translation)

IPアドレスの変換と同時にポート番号も変換することで、一つのグローバルIPアドレスを複数のコンピュータで共用が可能になる。

IPアドレスとポート番号の組み合わせを、ルーターのグローバルIPアドレスとルーターが管理するポート番号の組み合わせに付け替える

出典

DNSとは?

p235 ホスト名からIPアドレスを割り出すために利用される。

出典

気づき

IP アドレスが変わるとホスト名も変わるのか。

NAT64/DNS64とは

NAT64とDNS64は、組み合わせて利用することで、IPv6アドレスのみを持つ端末から、 IPv4アドレスのみを持つ端末へのアクセスが可能なネットワークを構築できる技術です。
このため、IPv6ネットワークへの移行技術として注目されています。

NAT64/DNS64を利用するネットワークでは、 アドレスの変換に利用するIPv4-IPv6変換アドレス用プリフィクスを割り当て、 そのプリフィクス宛の通信をNAT64に到達するように構築します。
また、個々の端末は、DNS64サーバーに対してアドレス解決の問い合わせを行うように設定します。

NAT64

NAT64は、到達したパケットの宛先が割り当てられたIPv4-IPv6変換用プリフィクスである場合、 IPv6ヘッダをIPv4ヘッダに入れ替えて通信を中継します。 これにより、IPv6アドレスのみを持つ端末からIPv4アドレスのみを持つ端末にも通信が成立します。

DNS64

DNS64は、問い合わせ結果からIPv6アドレスが得られた場合は変換を行いませんが、 IPv4アドレスしか得られない場合には、割り当てたIPv4-IPv6変換プリフィクスを利用するよう、 IPv4アドレスをプリフィクスの末尾に埋め込む形でアドレスの合成を行います。 これにより、端末はIPv4-IPv6変換用アドレスを利用することができます。

出典

IPv4ヘッダとIPv6ヘッダ

IPには様々なバージョンがあり、それぞれでヘッダーの構造は全く違う。共通なのは、最初の4ビットがIPバージョンフィールドである点のみである。

よく使われるIPのバージョンはIPv4とIPv6だが、それぞれ次のように呼ばれる。

IPv4ヘッダー
IPv6ヘッダー
IPv4ヘッダーは、殆ど使われていないものも含め、対応する基本的な機能の全ての情報を含むため、無駄が多い。アドレスは32ビットである。

IPv6ヘッダーは、普段使わないものは全てオプションとして処理するよう改められ、シンプルになった。アドレスは128ビットであり、基本的なヘッダーサイズの80%はアドレスである。

出典

NAT64/DNS64の動作概要の関連記事

NAT64/DNS64を利用する端末は、IPv6アドレスのみが割り当てられています。
端末がNAT64/DNS64を利用した通信を行う際、端末はまずDNSで名前解決を行い、通信の宛先となるIPアドレスの取得を試みます。
このDNSクエリはDNS64が有効となっているDNSサーバに対して行うようにネットワークが設計されます。
通常は、DNSパケットを受信したDNS64サーバは、Aレコードのみが得られた場合のみ、その得られたIPv4アドレスとIPv4-IPv6変換アドレス用のプリフィクスを使ってIPv6アドレスを合成します。そして、合成したIPv6アドレスをAAAAレコードで通信を行った端末へ回答します

これにより端末は、IPv6アドレスとなった宛先アドレスの名前解決が完了しますので、合成されたIPv4-IPv6変換アドレスを宛先として通信を開始します。ここで利用されるネットワークは、設定されたIPv4-IPv6変換アドレスを宛先とした通信がNAT64へ到達するように設計されている必要があります。NAT64には利用するIPv4-IPv6変換アドレスを登録しておきます。NAT64は、設定されたプリフィクスが宛先となっているパケットが到達した場合、そのパケットのIPv6ヘッダをIPv4ヘッダに置き換えます。変換の際には設定されたNATプールのIPv4アドレスを送信元とし、IPv4-IPv6変換アドレスに埋め込まれたIPv4アドレスを読み取り、パケットの宛先として送信します。通信に応答があった場合には、今度はパケットのIPv4ヘッダをIPv6ヘッダに付け替え、元のIPv4-IPv6変換アドレスを送信元とし、通信を開始した端末へ返送します。これによりIPv6アドレスのみが利用される環境において、IPv4アドレスによってのみ提供されるサービスへの到達性が実現されます

出典

IPv4-IPv6変換アドレス

NAT64/DNS64を利用した通信では、RFC6052で定義されたIPv4-IPv6変換アドレスをNAT64とそれを利用する端末間の通信に利用します。この変換アドレスのWell-known prefixは、64:ff9b::/96となり、IPv4アドレスは、IPv4-IPv6変換アドレスの末尾に合成されます。

例としてexample.jpが192.0.20.1を持つときに、このIPv4アドレスを、IPv4-IPv6変換アドレスのWell-known prefixに合成した場合を示します。このケースの合成後のアドレスは、64:ff9b::192.0.20.1ですが、16進数表記では64:ff9b::c000:1401となります。

この例の場合、IPv4アドレスの最初の1バイトの192は16進数表記ではC0、続いて0が00、20が14、1が01となります。また、Well-knownアドレス以外の/96のprefixを変換アドレスとして使用することも可能です。
どのアドレスを利用する場合であっても、NAT64、DNS64そして通信に介在するネットワーク機器は同じIPv4-IPv6変換アドレス用のプリフィクスを使用するよう設定されている必要があります。

出典

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?