メモも残してない。失敗した。そのうち見つけたらメモる。
FireWallが外部へ送信する時は、自身のIPアドレスは同じ(1つ)であり、外部からの
送信先 IPアドレスはFireWallのIPアドレスになると思うが、
さらにその先の社内のどのPCのIPアドレスへ送信すればよいかは、どうやって
判別するのか? (->DeepSeek)
良い質問です!これはFireWallの重要な機能である**NAT(Network Address Translation)** と**セッション管理**に関連します。
## NAT(IPマスカレード)の仕組み
### 送信時(社内→社外)
社内PC(192.168.1.10:1234) → FireWall → 変換後(203.0.113.1:50001) → 外部Webサーバ
– FireWallは送信元IPを**自身のグローバルIP**に変換
– **送信元ポートもランダムな高ポート番号に変更**
– この変換情報を**NATテーブル**に記録
### NATテーブルの例 | 内部IP | 内部ポート | 外部IP | 外部ポート | 宛先IP | 宛先ポート | |--------------|------------|-------------|-------------|---------------|------------| | 192.168.1.10 | 1234 | 203.0.113.1 | 50001 | 93.184.216.34 | 80 | | 192.168.1.11 | 5678 | 203.0.113.1 | 50002 | 93.184.216.34 | 80 |
## 応答時(社外→社内)の判別方法
### 1. ポート番号による識別
外部Webサーバ(93.184.216.34:80) → FireWall(203.0.113.1:50001) → 社内PC(192.168.1.10:1234)
– 外部サーバは**FireWallのグローバルIP(203.0.113.1)** と**変換されたポート(50001)** に応答
– FireWallはNATテーブルを参照:
– ポート50001 → 192.168.1.10:1234
– ポート50002 → 192.168.1.11:5678
### 2. 5タプルによるセッション特定
FireWallは以下の組み合わせでセッションを特定:
– 送信元IPアドレス
– 送信元ポート番号
– 宛先IPアドレス
– 宛先ポート番号
– プロトコル(TCP/UDP)
## 具体的な例
**PC-Aからのリクエスト**:
送信: 192.168.1.10:1234 → 93.184.216.34:80
NAT後: 203.0.113.1:50001 → 93.184.216.34:80
**PC-Bからの同時リクエスト**:
送信: 192.168.1.11:5678 → 93.184.216.34:80
NAT後: 203.0.113.1:50002 → 93.184.216.34:80
**応答の振り分け**:
93.184.216.34:80 → 203.0.113.1:50001 → 192.168.1.10:1234 (PC-A)
93.184.216.34:80 → 203.0.113.1:50002 → 192.168.1.11:5678 (PC-B)
このように、**ポート番号の変換と管理**によって、単一のグローバルIPアドレスで複数の社内PCからの通信を同時に扱えるのです。