【ネットワーク基礎】NATの仕組みと動作

に公開

はじめに

前回は、NATが行なっていることをざっくりみてきましたが、今回は実際にはどんな動作をしているのかまとめていきたいと思います。

NATの基本動作フロー

NAT(Network Address Translation)は、ルーターが内部ネットワークと外部ネットワークの間でIPアドレスを変換するプロセスです。

NATテーブルとは

実際の動きを見ていく前に、NATテーブルについて理解しておく必要があります。
NATテーブルとは、プライベートIPアドレスとグローバルIPアドレスの対応表のことです。
NATテーブルは「送信元の変換記録」であり、ルーターはNATテーブルを見て戻りパケットを転送します。より具体的には、内部端末が外部と通信する際に「どのプライベートIP:ポートが、どのグローバルIP:ポートに変換されたか」を記録します。これにより、外部からの応答パケットが届いた時、正しい内部ネットワークの端末に転送することができます。

データの流れ


https://www.itbook.info/study/nat4.php より

1. 内部から外部への通信(出ていくパケット)

内部PC (192.168.1.10:5000)
→ ルーター (NAT処理)
→ [外部サーバー (203.0.113.5:80)]

① パケット送出
内部PC(192.168.1.10)がポート5000を使って外部サーバー(203.0.113.5:80)に接続を要求します。

② NATテーブル作成
内部PCが初めて外部に接続する時、ルーターは自動的にNATテーブルにエントリを追加します。このエントリは、通信が終了すると一定時間後に削除されます。

③ アドレス変換
送信元IPをプライベートアドレス(192.168.1.10)からルーターのグローバルアドレス(203.0.113.1)に変更します。
合わせて、送信元ポートを5000から6000に変更(ポート番号は動的に割り当て)します。

2. 外部から内部への応答(戻ってくるパケット)

外部サーバー (203.0.113.5:80)
→ ルーター (NAT逆処理)
→ 内部PC (192.168.1.10:5000)

外部からのパケットは、NATテーブルに対応エントリがある場合のみ転送されます。
これにより、内部ネットワークへの不正アクセスを防ぎます(簡易ファイアウォール機能)。

① パケット到着
外部サーバーからルーターのグローバルIP(203.0.113.1:6000)に応答が届きます。

② NATテーブル参照
ルーターはNATテーブルを検索し、ポート番号を変換します。

③ アドレス逆変換
宛先IPをグローバルアドレス(203.0.113.1)からプライベートアドレス(192.168.1.10)に戻し、宛先ポートを6000から5000に戻します。

通信終了後、タイムアウトでエントリが削除されます。

まとめ

今回は、NATの基本的なフローについてまとめました。
まだまだ勉強不足で理解が不足している点があると思いますので、不足していることや誤った情報がある場合は教えてください。

最後までお読みいただき、ありがとうございました。

参考・画像引用元URL

https://baremetal.jp/blog/2023/09/08/1298/
https://www.rtpro.yamaha.co.jp/RT/docs/nat-descriptor/hairpin_nat.html
https://xtech.nikkei.com/it/atcl/column/17/011900625/011900005/
https://www.infraexpert.com/study/ip10.html
https://itc.tokyo/network/nat/
https://www.itbook.info/study/nat4.php

Discussion