NATとNAPT

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

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

### 出典
https://gihyo.jp/book/2022/978-4-297-12377-2

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

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

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

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

# 出典
https://www.sbcr.jp/product/4797386677/

# DNSとは？
p２３５　ホスト名からIPアドレスを割り出すために利用される。

### 出典
https://gihyo.jp/book/2022/978-4-297-12375-8

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

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

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

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

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

# 出典
https://www.nic.ad.jp/ja/basics/terms/nat64dns64.html

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

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

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

IPv6ヘッダーは、普段使わないものは全てオプションとして処理するよう改められ、シンプルになった。```アドレスは128ビット```であり、基本的なヘッダーサイズの80%はアドレスである。
#### 出典
https://www.wdic.org/w/WDIC/IP%E3%83%98%E3%83%83%E3%83%80%E3%83%BC

### 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アドレスによってのみ提供されるサービスへの到達性が実現されます

#### 出典
https://www.nic.ad.jp/ja/newsletter/No64/0800.html#:~:text=NAT64/DNS64%E3%81%AE,NAT64%E5%8B%95%E4%BD%9C%E3%83%95%E3%83%AD%E3%83%BC

### 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変換アドレス用のプリフィクスを使用するよう設定されている必要があります。
#### 出典
https://www.nic.ad.jp/ja/newsletter/No64/0800.html#:~:text=NAT64%E5%8B%95%E4%BD%9C%E3%83%95%E3%83%AD%E3%83%BC-,IPv4%2DIPv6%E5%A4%89%E6%8F%9B%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9,%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82,-DNS64