跳到主要內容

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 網路基本設定

這是Fortigate小台型號60D,他沒有一般的USB console port,所以我們要用mini USB搭配官方軟體FortiExplorer,軟體模擬console登入。



FortiExplorer可以到官方下載,http://www.fortinet.com.tw/resource_center/product_downloads.html 。

USB和軟體都安裝好插入之後他會自動開啟。



進入Command-line Interface,主要是看出廠預設的設定檔。

 edit "lan"
        set vdom "root"
        set ip 192.168.1.99 255.255.255.0
        set allowaccess ping https ssh http fgfm capwap
        set type switch
        set listen-forticlient-connection enable
        set snmp-index 10
    next

這說明了我們可以插在lan port然後透過192.168.1.99 web介面去管理。



設定192.168.1.0/24同網段,插在lan port上然後連https://192.168.1.99,預設帳號密碼是 admin 沒密碼。



先到Netwok Interface裡面編輯Wan1,就是跟我們小烏龜接的地方,這次範例是用PPPOE撥號連線。



輸入好Hinet提供的連線方式,按下OK,這裡要特別注意一個選項 Retrieve default gateway from server ,一定要打勾,他才會把PPPOE拿到的Default Gateway寫入路由表,不然會沒有Default Gateway可以到ISP。



確實拿到一個浮動IP 111.243.63.46。



這時候其實修改Software Switch lan的內部Default Gateway IP就可以了,但是我們仔細觀察一下。

Software Switch lan裡面的成員有 wifi 和 internal。
Hardware Switch internal裡面的成員有 internal1~ interna…

交換器Console的連線方法

如果我們要進去交換器打指令的話,通常都是使用console port。



購買產品的原廠通常都會送一條console線,Cisco和大多數廠商像是 D-link和Zyxel都通用,但是我有遇過Sonicwall 腳位不太一樣,所以不能通用,算是很少數。



舊的主機板後面都有 DB9 的母頭,所以Console線是 DB9 的公頭,插入就可以用了。



筆電因為沒有DB9的接頭,所以我們會買一條 RS232 轉 USB 線來用,就像現在超薄筆電很少有網路孔所以都是用USB轉網路孔。



所以最後接起來我們會拿到一條RJ45對USB的線。



接上筆電之後,要到裝置管理員找連接埠,如果看到驚嘆號的話表示沒有找到驅動程式,要到 RS232 轉 USB 的製造廠商的官網去下載安裝,我測過Win10的相容性已經很好了,通常都是隨插即用,COM數字多少是浮動的,所以每次要連線前最好先進來確認一下。



最後還要去看交換器連線 baud rate 多少,常見的為9600、57600、115200,不相同的話還是可以連,可是會出現亂碼。



連線軟體隨個人喜好,像PuTTY就是一款免費的軟體,有些人會偏好付費的SecureCRT,我們按照此設定連線。



測試連線成功了,我們終於可以打指令設定交換器。



COM不是只能同時有一個喔,像我為了要同時設定多台,我買了二個RS232一轉四COM的裝置,所以我可以開八個PuTTY來連線八台交換器。

Windows AD 架設

首先先改Windows Server 電腦名稱為DC01,然後重開機。



AD的架構是要透過DNS解析的,所以我們把慣用DNS伺服器指向自己 127.0.0.1 。



新增角色及功能精靈裡,點選Active Directory 網域服務。



安裝好之後點選伺服器管理員上方驚嘆號部屬後設定,來設定AD。



我們點選新增樹系,此範例的網域名稱為corpnet.lin0204.tw。



這裡可以看到因為AD的服務和DNS是綁在一起的,所以一定要安裝,DSRM是一個救援修復模式密碼可以給之後記起來,不太會用到。





NetBIOS 網域名稱預設是會取最左邊的單字,所以以此範例來說是 corpnet ,但不好識別,我們改成lin0204。





接下來就等安裝完成重開機。



我們這邊有一台用戶端電腦要加入網域,首先先把DNS指向DC01那台,不然沒辦法解析AD。



電腦名稱為PC01,加入到網域 corpnet.lin0204.tw。



加入網域必須要授權,我們給他administrator的密碼。



重開機之後,第一個畫面是登入 PC01\user 的密碼,這個是本機帳號,但我們要登入網域帳號,所以必須按切換使用者。



我們使用 netbios\帳號 的方式登入,所以是 lin0204\administrator 。



我們用指令 whoami 確定目前的電腦登入帳號為 lin0204\administrator ,並且此台用戶端電腦有加入網域。



我們回到DC01,然後使用工具,Active Directory 使用者和電腦工具。



加入網域的電腦預設會放在 Computers的容器(OU)裡,所以我們看到PC01。



網域控制站則會放在 Domain Controllers 的容器(OU)裡,所以我們看到有一台DC01。



我們前面有提到網域的架構和DNS是習習相關的,畢竟名稱解析都要靠DNS幫忙,所以加入網域的電腦名稱預設會自動登記在DNS裡,大家才解析的到。