iptablesでNATを試した(が忘れた)

メモも残してない。失敗した。そのうち見つけたらメモる。

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からの通信を同時に扱えるのです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です