NAT:私有位址如何上網
全世界幾十億台裝置,IPv4 只有 43 億個位址。NAT 就是那個救火隊。
約 14 分鐘
NAT(Network Address Translation)在封包經過路由器時改寫 IP 位址。內部用私有位址,出去時換成公有位址,回來時再換回去。
四個名詞(考試必考)
| 名詞 | 中文 | 意思 | 例子 |
|---|---|---|---|
| Inside Local | 內部本地 | 內部裝置的私有 IP | 192.168.1.10 |
| Inside Global | 內部全域 | 內部裝置對外呈現的公有 IP | 203.0.113.5 |
| Outside Global | 外部全域 | 外部伺服器的真實公有 IP | 8.8.8.8 |
| Outside Local | 外部本地 | 外部伺服器在內部呈現的樣子(少用) | 8.8.8.8 |
三種 NAT
| 類型 | 對應關係 | 用途 |
|---|---|---|
| 靜態 NAT | 一對一,固定 | 對外提供服務的伺服器 |
| 動態 NAT | 多對多,從位址池抓 | 公有位址夠用時 |
| PAT / NAT Overload | 多對一,靠埠號區分 | 最常見,家用與企業出口 |
NAT 轉換表
內部本地 內部全域 外部
192.168.1.10:1234 → 203.0.113.5:1234 → 8.8.8.8:53
192.168.1.11:1234 → 203.0.113.5:5001 → 8.8.8.8:53
↑
埠號被改掉以避免衝突
一個公有 IP 理論上可服務數萬個連線
(每個連線用不同的來源埠)! 1. 定義哪些內部位址可以被轉換
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
! 2. 標記內部與外部介面(漏掉這步是最常見的錯誤!)
R1(config)# interface gi0/1
R1(config-if)# ip nat inside
R1(config)# interface gi0/0
R1(config-if)# ip nat outside
! 3a. PAT:直接用外部介面的 IP
R1(config)# ip nat inside source list 1 interface gi0/0 overload
! 3b. 或用一個位址池做 PAT
R1(config)# ip nat pool MYPOOL 203.0.113.5 203.0.113.5 netmask 255.255.255.248
R1(config)# ip nat inside source list 1 pool MYPOOL overload
! 靜態 NAT(把內部伺服器對外開放)
R1(config)# ip nat inside source static 192.168.1.100 203.0.113.10
! 驗證
R1# show ip nat translations
R1# show ip nat statistics
R1# clear ip nat translation *NAT 的缺點
- 破壞端到端連通性:外部無法主動連進來(除非做 port forwarding)。
- 某些協定會壞掉:把 IP 寫在封包內容裡的協定(如 FTP 主動模式、SIP)需要特別處理。
- 追蹤困難:所有人共用一個公有 IP,記錄檔難以對應到個別使用者。
- 增加延遲與 CPU 負擔:每個封包都要查表改寫。
立即測驗這一節(3 題)