先畫介面與方向
雙網卡閘道G的圖若只畫兩個IP,常會把NAT、Port Forward與路由畫成同一件事。本文固定G只有LAN與OT兩個介面:G-LAN=10.10.10.1/24、G-OT=192.168.20.1/24。第三區198.51.100.0/24不接在G上,而由上游路由器R提供;先畫介面、子網與方向,再在每條流向旁寫來源、目的、協定與埠。
管理主機為10.10.10.20/24,控制器為192.168.20.50/24,資料收集VM為198.51.100.20/24。上游R的LAN=10.10.10.254/24、DMZ=198.51.100.1/24;R有192.168.20.0/24 via 10.10.10.1。本案例G的預設下一跳是10.10.10.254,VM預設閘道是198.51.100.1,OT主機預設閘道是192.168.20.1。LAN主機若要直接到OT,需有192.168.20.0/24 via 10.10.10.1;若先走R再到G,則由R的路由與防火牆明確允許。G的OT網段是直連,不應畫成經過DMZ。
| 元素 | 示例 | 審核問題 |
|---|---|---|
| G-LAN | 10.10.10.1/24 | G的LAN介面;G預設經R-LAN 10.10.10.254 |
| G-OT | 192.168.20.1/24 | G的OT直連介面 |
| 上游R | LAN 10.10.10.254、DMZ 198.51.100.1 | 提供第三區與G之間的路由 |
| VM | 198.51.100.20/24、GW198.51.100.1 | 第三區來源,不是G的介面 |
| OT主機 | 192.168.20.50/24、GW192.168.20.1 | 回程先到G-OT |
NAT Port Forward與路由不是同一動作
路由決定封包下一跳;NAT改寫來源或目的位址及必要的連接埠;Port Forward通常是目的NAT的規則,將某個外部端點導向內部服務。防火牆規則則決定是否允許流量,不能因為路由存在就推定已放行。每項設定都要記錄前後位址、方向與狀態追蹤需求。
| 功能 | 輸入與輸出 | 責任邊界 |
|---|---|---|
| 靜態路由 | 目的網段→下一跳/介面 | 找路,不替換位址 |
| 來源NAT | 內部來源→外部映射 | 回程靠狀態或反向規則 |
| Port Forward | 外部目的埠→內部服務 | 公開入口與服務限制 |
| Firewall | 來源/目的/協定/動作 | 允許或拒絕,不能代替路由 |
例如LAN主機10.10.10.20讀取OT控制器192.168.20.50:502,封包到G-LAN後由G轉往G-OT;若LAN主機有192.168.20.0/24 via 10.10.10.1,控制器回覆直接經192.168.20.1回到G,再回10.10.10.20,通常不需NAT。若設計選擇來源NAT,控制器可能看到192.168.20.1,稽核與白名單意義會改變;不能把NAT當成沒有回程路由時的通用補丁。
本例DNAT入口設在G-LAN的10.10.10.1:1502,且只允許LAN管理主機10.10.10.20連入,轉送到G-OT後的192.168.20.50:502。198.51.100.20是第三區VM,不是G的DNAT入口;若要由VM發起連線,必須另畫經R與G的路徑。外部端點能連上也不表示控制器權限或應用層驗證完成。
四條流向中,第一條是LAN直接讀OT的TCP502;第二條是LAN經G的DNAT TCP1502轉OT TCP502;第三條是VM主動連到OT的自訂TCP8443查詢服務;第四條是OT主動連到VM的自訂TCP8443回報服務。後兩種服務是各自的案例條件。來源埠採用臨時埠示例,不把目的服務埠誤寫成來源埠。
若NAT規則存在,測試記錄要同時保留NAT前後的五元組;只保存內部位址會讓日後無法判斷是外部入口未到,還是內部服務未回。規則審查也要標出管理來源與資料來源的差別,避免為方便測試把整個WAN網段暫時放行後忘記撤回。
四條流向逐條核對
以下四條流向是離線審核案例。每一條都要從入口畫到出口,再反向檢查回程;若只畫正向箭頭,最容易漏掉錯誤的預設路由。
| 編號與允許流向 | 正向路徑 | 回程與條件 |
|---|---|---|
| 1 LAN→OT | 10.10.10.20:53000→G-LAN→G-OT→192.168.20.50:502 | 192.168.20.50:502→192.168.20.1→G-LAN→10.10.10.20:53000;LAN需有OT路由 |
| 2 LAN DNAT→OT | 10.10.10.20:53001→10.10.10.1:1502,DNAT至192.168.20.50:502 | OT以G為閘道回覆;G反向轉換後,LAN端看到來源10.10.10.1:1502,目的10.10.10.20:53001 |
| 3 VM→OT收集 | 198.51.100.20:54000→R-DMZ→R-LAN→G-LAN→G-OT→192.168.20.60:8443 | 192.168.20.60:8443→G→R-LAN→R-DMZ→198.51.100.20:54000;R需有OT路由 |
| 4 OT→VM回報 | 192.168.20.60:55000→G-OT→G-LAN→R-LAN→R-DMZ→198.51.100.20:8443 | VM來源198.51.100.20:8443,經R-DMZ→R-LAN→G-LAN→G-OT,回到192.168.20.60:55000 |
雙網卡設定版本與故障排查
版本化設定至少包含兩個介面的IP、遮罩、gateway、DNS、靜態路由、NAT與防火牆規則。每次變更保存匯出檔、韌體版本、規則差異與四條流向的測試結果。DNS不是路由替代品;名稱解析成功只證明查詢完成,不能證明服務回程可達。
| 症狀 | 先查 | 結果不同時 |
|---|---|---|
| 正向有封包、回程無 | 目的端gateway與靜態路由 | 保存雙向擷取,修正回程責任 |
| Port Forward無回應 | 外部端點、DNAT規則、服務監聽 | 分辨未到閘道或未到內部主機 |
| 連線到錯誤網段 | 重疊子網、最長前綴、NAT規則 | 先停用衝突規則並恢復基線 |
| 管理可達但OT不可達 | 防火牆與目的埠規則 | 不要把管理成功當應用成功 |
修改前先確認有本地維護路徑與可用的回復檔。若套用網路設定會重啟服務,先把驗收順序寫成「介面狀態、路由表、規則命中、雙向封包、應用回覆」。每一項都要有預期值;例如流向2在OT側看到來源192.168.20.50:502,在LAN側應看到經反向NAT還原的來源10.10.10.1:1502,而不是只看到TCP SYN離開。
本文所有四條流向、私有位址與Port Forward 1502→502均為案例條件。實際防火牆語法、NAT順序、VRF、非對稱路由處理與管理鎖定行為必須以目標產品文件核對;不能以一般Linux或家用路由器經驗直接套用工業閘道。
版本化規則還要保留啟用狀態與順序。兩條規則內容相同但一條在前、一條在後,可能因first-match行為造成不同結果;有些產品則採集合比對。這是產品特定行為,必須在目標手冊確認。匯出檔、可讀表與變更單三者的規則編號要一致,回退時才能知道刪除或恢復哪一條。
規則命中計數也應納入審核證據。先保存計數基線,再以四條允許流向各執行一次已定義測試,最後測一條被拒絕流向;若封包計數或連線計數沒有按該產品定義增加,先查測試是否真的走該介面與埠。不要只看畫面上的規則啟用勾選,因為實際封包可能被更前面的規則、路由或狀態表處理。
檢查路由與保留雙向證據
畫流向時還要處理重疊與最長前綴。若管理網10.10.10.0/24與另一條10.10.10.0/25同時存在,封包目的10.10.10.40可能選較長的/25;若圖只畫一條粗箭頭,就會掩蓋實際出口。審核表應列目的網段、遮罩、下一跳、介面與優先順序,並用一個邊界位址驗算。
管理面與資料面應分開驗收。管理主機能開閘道器HTTPS,只代表管理介面可達;它不能證明VM到OT的502服務或OT到VM的資料流已通。四條流向表的每列都要有「允許、拒絕、未測」狀態,未測不能填成成功。若要做負向測試,另列一條來源不在白名單的流向,預期應被防火牆拒絕並留下紀錄。
錯誤流向案例:把OT主機的預設閘道填成10.10.10.1;它不在192.168.20.0/24,不能作為OT主機的直接下一跳,正確值應是192.168.20.1。另一錯誤是把VM198.51.100.20畫成G的DNAT入口;G沒有DMZ介面,VM到OT必須經VM的198.51.100.1、R的路由,再到10.10.10.254、G-LAN與G-OT,不能跳過R。
用離線封包表記錄每一跳的原始來源、目的、來源臨時埠、目的埠、介面、規則編號與預期回覆。VM到OT的TCP 8443流向應逐跳經VM→R-DMZ→R-LAN→G-LAN→G-OT;回程反向走G→R→VM。若設備做狀態追蹤,還要記錄返向封包是否命中同一連線;不要只以ping成功判斷TCP服務正常。
非對稱路由是常見的錯誤證據。若去程由閘道器OT介面送出,回程卻由另一台核心路由器返回,狀態防火牆可能沒有看到完整連線而丟包。排查時在兩個介面同時保存時間同步的擷取,對照五元組與TTL;單邊看到SYN並不能證明服務拒絕。
流向1與流向2雖都由LAN到OT,來源埠仍不同,便於在擷取中分辨兩筆連線。流向3、4使用自訂TCP 8443收集服務,僅表示本案例的應用假設;正式系統要以服務文件確認埠號與是否需要NAT。
FAQ 來源與審核結論
FAQ1:有靜態路由就一定能通嗎?不一定。路由只決定下一跳,還要檢查防火牆、服務監聽、回程路由與協定狀態。
FAQ2:Port Forward是不是把整個OT網段公開?不是它的定義,但寬鬆規則可能造成同等風險;應限制來源、目的埠與必要服務。
FAQ3:雙網卡G是否要在兩邊都設Default Gateway?不應如此。G只有一個預設路由10.10.10.254;OT主機的預設閘道才是192.168.20.1。
FAQ4:做來源NAT能否解決所有回程問題?不能。它可能改變控制器看到的來源,仍要先設正確的LAN到OT與R到OT回程路由。
審核交付應包含網路圖、四條流向表、介面與路由版本、NAT/Port Forward規則、firewall命中紀錄及待驗證項。圖上每條箭頭都標來源、目的、協定、埠與方向,才能讓讀者分辨「有路」和「被允許且能回覆」。
參考:RFC 3022 Traditional IP Network Address Translator:NAT的位址與連接追蹤背景。
參考:RFC 1812 Requirements for IP Version 4 Routers:IPv4路由器轉送與路由責任背景。