160 likes | 304 Views
NAT 伺服器. 指導老師:溫翔安 組員:溫允中 4970E011 李雅俐 4970E025 蕭積遠 4970E026 陳欣暉 4970E086. 摘要. 內部 LAN 有任何一部主機想要傳送封包出去時 來源 NAT, SNAT 目標 NAT, DNAT. NAT 伺服器的設定.
E N D
NAT 伺服器 指導老師:溫翔安 組員:溫允中4970E011 李雅俐4970E025 蕭積遠4970E026 陳欣暉4970E086
摘要 • 內部 LAN 有任何一部主機想要傳送封包出去時 • 來源 NAT, SNAT • 目標 NAT, DNAT
NAT 伺服器的設定 • NAT 的全名是 Network Address Translation,字面上的意思是『網路位址的轉換』。由字面上的意思我們來想一想, TCP/IP 的網路封包上面有 IP 位址,那 IP 位址不是有來源與目的嗎?我們的 iptables指令就能夠修改 IP 封包的表頭資料, 連目標或來源的 IP 位址都可以修改。甚至連 TCP 封包表頭的 port number 也能修改。
單一網域,僅有一個路由器的環境示意圖 NAT 伺服器功能可以達到類似下圖所介紹類似 IP 分享的功能,然而不同的功能取決於我們的 NAT 是修改: (1)來源 IP 還是 (2)目標 IP。
內部 LAN 有任何一部主機想要傳送封包出去時 • 那這個封包要如何透過 Linux 主機而傳送出去? • 1.先經過 NAT table 的 PREROUTING 鏈 • 2.經由路由判斷確定這個封包是要進入本機與否,若不進入本機,則下一步 • 3.再經過 Filter table 的 FORWARD 鏈 • 4.通過 NAT table 的 POSTROUTING 鏈,最後傳送出去。
PREROUTING 與 POSTROUTING • 重點在於修改 IP !但是這兩條鏈修改的 IP 是不一樣的! POSTROUTING 在修改來源 IP ,PREROUTING 則在修改目標 IP 。由於修改的 IP 不一樣,所以就稱為來源 NAT (Source NAT, SNAT) 及目標 NAT (Destination NAT, DNAT)。
來源 NAT, SNAT • 修改封包表頭的『來源』項目 • Linux 主機就是 IP 分享器,那麼他是如何達到 IP 分享的功能?就是透過 NAT 中的 POSTROUTING 來處理的,那麼 NAT 伺服器是如何處理這個封包的呢? • 假設:用戶端192.168.1.100主機,連結到YAHOO時,封包表頭會如何變化?
SNAT 封包傳送出去 1.用戶端所發出的封包表頭中,來源會是192.168.1.100 ,然後傳送到 NAT 這部主機。 2.NAT 這部主機的內部介面 (192.168.1.2) 接收到這個封包後,會主動分析表頭資料, 因為表頭資料顯示目的並非 Linux 本機,所以開始經過路由, 將此封包轉到可以連接到 Internet 的 Public IP 處 3.由於 private IP 與 public IP 不能互通,所以 Linux 主機透過 iptables的 NAT table 內的 Postrouting鏈將封包表頭的來源偽裝成為 Linux 的 Public IP ,並且將兩個不同來源 (192.168.1.100 及 public IP) 的封包對應寫入暫存記憶體當中, 然後將此封包傳送出去了
如果 Internet 回傳封包呢?又會怎麼作? • 1.在 Internet 上面的主機接到這個封包時,會將回應資料傳送給那個 Public IP 的主機。 • 2.當 Linux NAT 伺服器收到來自 Internet 的回應封包後,會分析該封包的序號,並比對剛剛記錄到記憶體當中的資料, 由於發現該封包為後端主機之前傳送出去的,因此在 NAT Prerouting鏈中,會將目標 IP 修改成為後端主機,亦即那部 192.168.1.100,然後發現目標已經不是本機 (public IP), 所以開始透過路由分析封包流向。 • 3.封包會傳送到 192.168.1.2 這個內部介面,然後再傳送到最終目標 192.168.1.100 機器上去!
目標 NAT, DNAT • 修改封包表頭的『目標』項目 • SNAT 主要是應付內部 LAN 連接到 Internet 的使用方式,至於 DNAT 則主要用在內部主機想要架設可以讓 Internet 存取的伺服器 • 假設:我的內部主機 192.168.1.210 啟動了 WWW 服務,這個服務的 port 開啟在 port 80 , 那麼 Internet 上面的主機 (61.xx.xx.xx) 要如何連接到我的內部伺服器呢? 得要透過 Linux NAT 伺服器!所以這部 Internet 上面的機器必須要連接到我們的 NAT 的 public IP 才行。
DNAT 的封包傳送 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 後,就可以傳送出去了!
DNAT 的封包傳送示意圖 • 其實整個步驟就等於 SNAT 的反向傳送!這就是 DNAT !