NAT 障礙排除教學

Zyxel小編 Corey
Zyxel小編 Corey 文章數: 197  Zyxel Employee
First Answer First Comment Friend Collector Fifth Anniversary
已編輯 九月 2023 防火牆 常見問題

什麼是 NAT ?

介紹 NAT 障礙排除步驟之前,我們首先需要簡單說明 NAT 是什麼?

NAT 功能其實非常簡單,當防火牆接收到外網封包,連接特定的 IP 、服務 Port ,透過 NAT 規則將封包轉送給內部 Server,即為 NAT 運作過程。

如下圖範例 :

  1. 外部使用者連接 125.230.236.132 服務 Port 3001
  2. 防火牆收到封包後,將此封包轉送給內部伺服器 192.168.1.33 的服務 Port 3001
  3. 伺服器透過防火牆路由傳回外部使用者,即可成功連上伺服器。

NAT 詳細設定教學請參考文章 :

NAT 障礙排除步驟

透過 NAT 運作流程,讓我們知道應該檢查哪些關鍵問題,排除障礙 :

  1. 檢查 NAT 設定是否正確
  2. 防火牆 WAN 介面是否收到連線封包
  3. 防火牆 LAN 介面是否成功轉送封包
  4. 內部伺服器是否成功將封包送回
  5. 更新防火牆韌體

以下向您說明如何確認每個關鍵點是否正常運作 :

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 介面轉送給內部伺服器,但內部伺服器沒有任何回應,將有以下幾種可能 :

  1. 伺服器本身的防火牆規則阻擋,導致不回應封包
  2. 伺服器路由有問題,導致傳輸路徑錯誤

如下圖,可以看到只有收到外部連線用戶的封包,但是內部伺服器 192.168.1.33 沒有任何回應。

5 、 更新防火牆韌體

若以上方法都已排除,NAT 功能依然異常,建議先更新防火牆韌體至最新版本,避免遇到舊版本 Bug。

更新韌體後,依然異常,請向 ZYXEL 技術人員請求協助。

防火牆韌體更新教學請參考此篇教學 :