# NAT網路位址轉換 (Network Address Translation) NAT是用來解決IPv4位址不足的一個方法,**當IP封包通過路由器或防火牆時,建立一個Private IP與Public IP的對應表格(NAT table),並且重寫封包內的傳送端 IP 位址與接收端 IP 位址。** 這種技術被普遍使用在有多台主機但只通過一個公有IP位址訪問網際網路的私有網路中。 ### NAT 伺服器運作方式:  圖(a)傳送封包:假設私有網路(內部網路)的電腦 A 要傳送封包到網際網路(外部網路),所以**將封包表頭內的傳送端 IP 位址設定為 192.168.1.1**。 圖(b)轉送封包:**NAT 伺服器將封包表頭的傳送端 IP 位址改成 140.112.66.88 再傳送到網際網路(外部網路),並且記錄這個封包來自電腦 A**。 圖(c)接收封包:**網際網路(外部網路)要傳送封包到電腦 A,但是封包表頭的接收端 IP 位址設定為 140.112.66.88**,因此先由 NAT 伺服器接收進來。 圖(d)轉送封包:**NAT 伺服器將封包表頭的接收端 IP 位址改成 192.168.1.1 再傳送到私有網路(內部網路)的電腦 A**。 ------------------------ ### NAT 伺服器功能 **封包偽裝(IP masquerade):** 可以私有 IP(內部IP)改成真實 IP(外部 IP)再傳送到網際網路,使網路上的人無法得知私有網路的 IP 分配情形增加網路安全性。 **封包過濾:** 攔截網際網路進入私有網路的封包阻擋攻擊,NAT伺服器是防火牆成員,也是一種「封包過濾器(Packet filter)」。 **平衡負載:** 通常使用在網頁伺服器(Web server),一般網頁伺服器同時可能會有數千人連線,如果只用一台主機負荷會過重,因此在入口處加裝一台 NAT 伺服器,改變外部網路進入內部網路的封包表頭接收端 IP 位址,讓進入的封包分散到不同的主機上,減輕單一主機的負擔,也可以增加網路安全性。  ------------------------ ### NAT 封包修改方式(Linux): **來源 NAT (Source NAT, SNAT) :** 修改封包表頭的『來源』項目,透過 NAT 表格的 POSTROUTING 來處理。 **SNAT 送出封包:**  1.用戶端所發出的封包表頭來源是 192.168.1.100,傳送到 NAT 這部主機; 2.NAT主機的內部介面 (192.168.1.2) 接收到封包後主動分析表頭資料,因為表頭資料顯示目的並非本機,所以經過路由將此封包轉到可以連接到 Internet 的 Public IP 處; 3.由於 private IP 與 public IP 不互通,所以主機透過 iptables 的 NAT table 內的 Postrouting 鏈將封包表頭的來源偽裝成為 Linux 的 Public IP ,並且將兩個不同來源 (192.168.1.100 及 public IP) 的封包對應寫入暫存記憶體當中, 然後將此封包傳送出去; **Internet 回傳封包:**  4.在 Internet 上的主機接到封包時,會將回應資料傳送給 Public IP 的主機; 5.當 NAT 伺服器收到來自 Internet 的回應封包後,會分析該封包的序號,並比對剛剛記錄到記憶體當中的資料,發現該封包為後端主機之前傳送出去的,因此在 NAT Prerouting 鏈中,會將目標 IP 修改成為後端主機(192.168.1.100),然後發現目標已經不是本機 (public IP),所以透過路由分析封包流向; 6.封包會傳送到 192.168.1.2 這個內部介面,然後再傳送到最終目標 192.168.1.100 機器上。 **目標 NAT (Destination NAT, DNAT)** DNAT 主要用在內部主機架設讓 Internet 可存取的伺服器。 假設內部主機 192.168.1.210 啟動了 WWW 服務,這個服務的 port 開在 port 80 , 那 Internet 上面的主機 (61.xx.xx.xx) 需透過 NAT 伺服器才能與WWW服務連線,所以 Internet 上面的機器必須要連接到我們的 NAT 的 public IP 才行。  1.外部主機想要連接到目的端的 WWW 服務,必須要連接到我們的 NAT 伺服器上; 2.NAT 伺服器已經設定好要分析出 port 80 的封包,所以當 NAT 伺服器接到這個封包後, 會將目標 IP 由 public IP 改成 192.168.1.210 ,且將該封包相關資訊記錄下來,等待內部伺服器的回應; 3.上述的封包在經過路由後,來到 private 介面處,然後透過內部的 LAN 傳送到 192.168.1.210 上 4.192.186.1.210 會回應資料給 61.xx.xx.xx ,這個會傳送到 192.168.1.2 上頭去; 5.經過路由判斷後,來到 NAT Postrouting 的鏈,然後透過剛剛第二步驟的記錄,將來源 IP 由 192.168.1.210 改為 public IP 後,就可以傳送出去。 ------------------------ ### NAT 三種類型: **1.靜態NAT :** 私有IP與公有IP進行一對一轉換,需要手動設定,通常用於SERVER服務,因SERVER需使用固定IP來提通服務,如FTP。  **2.動態NAT :** 與靜態NAT相同需一對一轉換,私有IP隨機配對公有IP,不需手動設定。  **3.超載NAT(Overloading)或稱PAT(Port Address Translation) :** 多個私有IP對應一個公有IP+port number,常見的NAT類型,當多私有IP配對到一個公有IP時,公有IP會各產生一組port number。  ------------------------------- ### 公有IP(Public address) & 私有IP(Private address) **公有IP(Public address):** 由網際網路服務供應商(ISP)分配,使用者向ISP申請網路後會給一組IP,若沒額外申請固定IP會是以浮動IP來發送,變更週期(大約3天左右)或重開機會重新配發一組IP,由最近的ISP網路伺服器配發。 A class公有IP: 1.0.0.0~9.255.255.255 11.0.0.0~126.255.255.255 B class公有IP: 128.0.0.0~172.15.255.255 172.32.0.0~191.255.255.255 C class公有IP: 192.0.0.0~192.168.255.255 192.169.0.0~223.255.255.255 **私有IP(Private address):** 依照RFC1918(IPv4)規範,定義出私人可使用的範圍IP,主要用於區域網路(LAN),由Router或Switch配發,可使用DHCP(Dynamic Host Configuration Protocol)或固定IP管理,外部網際網路無法直接連線,如果要上網必須使用網路位址轉換(NAT)讓私有IP轉換成公有IP。 私有IP地址範圍: A: 10.0.0.0~10.255.255.255 即10.0.0.0/8 B: 172.16.0.0~172.31.255.255 即172.16.0.0/12 C: 192.168.0.0~192.168.255.255 即192.168.0.0/16
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.