NAT loopback 實驗


通常企業為了安全會建立內部DNS和外部DNS,
如果我有一個IP 192.168.1.151 要對應到公司內部電腦01 192.168.168.1的WEB服務,
我會在外部DNS設一筆紀錄要到 www.abc.com.tw 的回應 192.168.1.151,
企業內部主機都指向內部DNS 設一筆紀錄要到 www.abc.com.tw 的回應 192.168.168.1。
這樣就可以做到同樣的WEB服務內部和外部都可以存取。
但是有時候公司沒有架設DNS,或是主機都指向外部DNS 168.95.1.1 或 8.8.8.8。
這時候就需要NAT LOOPBACK了。
簡單來說就是電腦02連192.168.1.151這個在WAN的外部IP,可以也可以NAT存取到192.168.168.1。

以Sonicwall防火牆來舉例,當你NAT建立好了時候會產生三條。



第一條為內部IP網段(192.168.168.0/24)要到WEB PUBLIC(192.168.1.151)
來源轉換為WEB PUBLIC(192.168.1.151)到WEB PRIVATE(192.168.168.1)

第二條為WEB PRIVATE(192.168.168.1)到任何地方(WAN的網段)
來源轉換為WEB PUBLIC(192.168.1.151)到原本的任何地方(WAN的網段)

第三條為任何網段要到WEB PUBLIC(192.168.1.151)
來源不轉換可是目的地轉換為WEB PRIVATE(192.168.168.1)

這個跟防火牆規則一樣由上到下,先執行就出去了,有先後順序之分。

二、三條很好理解,就是純粹外對內的NAT,但是為什麼需要第一條呢?


電腦02封包


電腦01封包

(因為我分段抓封包,所以不是同一個回應封包)

我們來分析一下,以電腦02來說
電腦02到防火牆 來源 192.168.168.2-> 目的地 192.168.1.151
因為我們設定好NAT要到 192.168.1.151 目的地轉換為 192.168.168.1
所以防火牆到電腦01 來源 192.168.168.2-> 目的地 192.168.168.1
最後電腦01發現目的地是 192.168.168.2,同個網段,直接回應不透過防火牆。

所以會導致三方交握無法建立連線。
因為三方交握是 SYN -> SYN,ACK -> ACK

(圖片擷取網路)

電腦02會發現我SYN 192.168.1.151沒有回應,可是一直收到 192.168.168.1 的SYN,ACK。
電腦01會發現 192.168.168.2 一直SYN我,可是我回應他又不回我ACK。


電腦01一直處於SYN_RECEIVED的狀態,導致三方交握失敗。

如果我們把第一條打勾呢?


電腦02封包


電腦01封包


我們來分析一下,以電腦02來說
電腦02到防火牆 來源 192.168.168.2-> 目的地 192.168.1.151
因為我們設定好NAT來源192.168.168.0/24網段來源轉換為 192.168.1.151
因為我們設定好NAT要到 192.168.1.151 目的地轉換為 192.168.168.1
所以防火牆到電腦01 來源 192.168.1.151-> 目的地 192.168.168.1

以電腦01來說
電腦02到防火牆 來源 192.168.168.1-> 目的地 192.168.1.151
因為這是NAT回應的封包,防火牆本身有紀錄,
所以防火牆到電腦02 來源 192.168.1.151-> 目的地 192.168.168.2

總結:
要做到NAT loopback就是要把來源IP置換調,每家做法不一樣,像是Fortigate就是轉成Gateway IP,Sonicwall是轉成外部IP,不然內部IP會直接回應不透過防火牆,導致三方交握失敗無法連線。

留言

張貼留言

這個網誌中的熱門文章

FortiGate 網路基本設定

Windows AD 架設

交換器Console的連線方法