NAT 障礙排除教學
什麼是 NAT ?
介紹 NAT 障礙排除步驟之前,我們首先需要簡單說明 NAT 是什麼?
NAT 功能其實非常簡單,當防火牆接收到外網封包,連接特定的 IP 、服務 Port ,透過 NAT 規則將封包轉送給內部 Server,即為 NAT 運作過程。
如下圖範例 :
- 外部使用者連接 125.230.236.132 服務 Port 3001
- 防火牆收到封包後,將此封包轉送給內部伺服器 192.168.1.33 的服務 Port 3001
- 伺服器透過防火牆路由傳回外部使用者,即可成功連上伺服器。
NAT 詳細設定教學請參考文章 :
NAT 障礙排除步驟
透過 NAT 運作流程,讓我們知道應該檢查哪些關鍵問題,排除障礙 :
- 檢查 NAT 設定是否正確
- 防火牆 WAN 介面是否收到連線封包
- 防火牆 LAN 介面是否成功轉送封包
- 內部伺服器是否成功將封包送回
- 更新防火牆韌體
以下向您說明如何確認每個關鍵點是否正常運作 :
1 、檢查 NAT 設定是否正確
很有可能您只是某個小地方設定錯誤,因此第一步驟,建議先再一次檢查您的設定。
1 - 1 - NAT 配置檢查
防火牆透過正確配置 NAT ,將封包轉送給內部伺服器,使用者最常設定錯誤的地方是內送介面的選擇。
若使用 PPPoE,必須選擇帶有 ppp 的介面名稱。
將游標移動到介面名稱,可以發現若選錯介面,會看不到 IP 位址資訊,因此 NAT 無法正常運作。
下圖為選擇正確的介面顯示的狀態
下圖為選擇錯誤的介面顯示的狀態
1 - 2 - 防火牆規則檢查
客戶較常遇到的問題是,防火牆規則的目的地設定成了外部實體 IP,這是錯誤的,因為對防火牆來說,是將封包轉送給內部伺服器,所以設定內部伺服器的 IP 位址才是正確的。
下圖為正確設定範例,目的地應該是私有 IP,而不是外部實體 IP。
檢查規則的優先權,避免被更高等級的規則覆蓋。
建議移動到最高優先權,點選規則,點擊移動,輸入 1 ,按 Enter 即移動完成。
2 、 防火牆 WAN 介面是否收到連線封包
NAT 要能正常運作,防火牆 WAN 介面必須先收到外部使用者的連線封包。
我們可以透過擷取封包的方式確認封包傳輸狀況,擷取封包的方法請參考以下步驟 :
2 - 1 - 登入 WEB Console
點擊上方功能列 "Web Console"
輸入防火牆帳號、密碼(輸入密碼看不到文字是正常的)。
若無法顯示登入畫面,請更換瀏覽器試試看,或是使用 SSH 登入指令介面。
2 - 2 - 查詢外部使用者實體 IP 位址
外部連線裝置使用 Google 搜尋 what is my ip 即可查詢當下使用的實體 IP。
如下圖,目前外部連線裝置使用的實體 IP 為 42.76.96.146,請記錄這個 IP 位址。
若沒有顯示,也可以點選搜尋到的網站進入查詢。
2 - 3 - 輸入指令,擷取封包
輸入指令 show interface all ,查詢 WAN 介面名稱,目前使用 PPPOE ,因此介面名稱為 wan1_ppp。
輸入指令 packet-trace interface wan1_ppp host 42.76.96.146 (大小寫有差異,請依照上面查詢到的資訊填入)
參數中的介面名稱 wan1_ppp 與外部連線用戶實體 IP 位址,請依照您的情境變更。
外部連線用戶點擊連線後,只要有看到介面收到封包,表示這一階段通過。
若 WAN 介面一直沒有收到封包,此時 NAT 無法正常運作與防火牆無關,因為防火牆沒有收到連線封包,當然沒辦法轉送給內部伺服器。
請檢查防火牆上層或是外部使用者端是否有設備阻擋封包。
3 、 防火牆 LAN 介面是否成功轉送封包
伺服器 IP 位址為 192.168.1.33 ,將透過 lan1 轉送封包。
3 - 1 - 輸入指令 show interface all,確認 192.168.1.0/24 網段介面名稱為 lan1。
3 - 2 - 輸入指令 packet-trace interface lan1 host 42.76.96.146 (大小寫有差異,請依照上面查詢到的資訊填入)
使用指令擷取的實體 IP 外部連線裝置嘗試連線,確認封包是否有轉送給內部伺服器。
若一直沒有擷取到封包,請往以下步驟檢測。
3 - 3 - 封包防火牆阻擋,導致沒有傳送到 lan1
請再一次檢查防火牆規則是否正確。
3 - 4 - 確認防火牆是否能與伺服器傳輸
輸入指令 show arp-table ,查看防火牆 ARP-Table。
確認用戶是否存在,以及 IP 當前的 MAC 位址是否為伺服器,避免 IP 衝突。
4 、 內部伺服器是否有將封包送回
防火牆已將封包從 lan1 介面轉送給內部伺服器,但內部伺服器沒有任何回應,將有以下幾種可能 :
- 伺服器本身的防火牆規則阻擋,導致不回應封包
- 伺服器路由有問題,導致傳輸路徑錯誤
如下圖,可以看到只有收到外部連線用戶的封包,但是內部伺服器 192.168.1.33 沒有任何回應。
5 、 更新防火牆韌體
若以上方法都已排除,NAT 功能依然異常,建議先更新防火牆韌體至最新版本,避免遇到舊版本 Bug。
更新韌體後,依然異常,請向 ZYXEL 技術人員請求協助。
防火牆韌體更新教學請參考此篇教學 :