網路層:轉送與 IP

網路位址轉換(NAT)

/ nat /

網路位址轉換(NAT)讓整個網路的裝置共用單一個公有 IP 位址。想像一間公司的總機只有一個對外電話號碼:裡面數十名員工用私有分機,總機把來電與去電的號碼改寫,使外界永遠只看到那一個主號碼。NAT 就是 IP 位址版的這台總機——你家的路由器對網際網路呈現一個公有位址,而後面所有裝置都用私有位址。

它的運作方式是在封包穿越路由器時,改寫 IP 與傳輸標頭裡的位址(與連接埠)。當 192.168.1.20、來源埠 5000 的裝置送出封包時,NAT 裝置把來源改寫成它的公有位址(例如 203.0.113.5)與一個選定的埠(例如 40001),並把這筆對應(192.168.1.20:5000 ↔ 203.0.113.5:40001)記在轉換表裡。當回覆回到 203.0.113.5:40001 時,NAT 查表、把目的改寫回 192.168.1.20:5000。由於它也在玩弄連接埠號碼,這種常見形式稱為 PAT(連接埠位址轉換)或 NAPT,它讓內部成千上萬條連線共用一個公有位址。

NAT 是為了 IPv4 位址耗盡而發明的權宜之計,效果出奇地好——但要誠實面對它的代價。它破壞了端對端原則:外部主機無法直接對內部裝置發起連線,因為在內部裝置先開口之前根本沒有對應。這讓點對點應用、網路電話與遊戲變得複雜,於是它們需要 STUN、TURN、打洞(hole punching)之類的技巧。而 NAT 雖然順帶把內部主機藏起來,那並不是真正的安全;IPv6 擁有足夠每個裝置使用的位址,正是設計來讓 NAT 變得不必要。

你路由器後面的兩台筆電都在上網。筆電 A(192.168.1.20:5000)對應到 203.0.113.5:40001;筆電 B(192.168.1.21:5000)對應到 203.0.113.5:40002。網站只看到 203.0.113.5;路由器靠不同的連接埠,把每個回覆送回正確的筆電。

同一個公有位址上的不同連接埠,讓許多內部主機得以共用它。

NAT 是位址節約,不是安全機制。它也打破了「任何主機都能直接連到另一台」的假設——而這正是讓點對點與對內連線變得困難的那道阻力。

又稱
NATPATport address translationIP masquerading網路位址轉換連接埠位址轉換