fw monitor 抓封包¶
「明明放行了卻不通」「NAT 有沒有轉?」這類問題,光看 Log 不夠 —— 要看封包實際在防火牆內部走到哪、被改成什麼。
fw monitor就是 Check Point 內建的封包擷取工具。
四個檢查點:i / I / o / O¶
fw monitor 最關鍵的觀念:一個封包通過 Gateway,會經過四個檢查點,分別在防火牆模組的進出兩側:
graph LR
IN[封包進介面] --> i["i (pre-inbound)"]
i --> I["I (post-inbound)"]
I --> o["o (pre-outbound)"]
o --> O["O (post-outbound)"]
O --> OUT[封包出介面]
| 點 | 位置 | 意義 |
|---|---|---|
| i | inbound 進防火牆模組前 | 剛進來的原始封包 |
| I | inbound 出防火牆模組後 | 過完 inbound 檢查 |
| o | outbound 進防火牆模組前 | 準備送出 |
| O | outbound 出防火牆模組後 | 最終送出的封包 |
用四點定位問題在哪一段:
- 只看到
i、沒有I→ 封包進來就被丟(inbound 規則 / 防護擋掉)。 - 有
I、沒o→ 路由 / 出介面問題。 - 比較
i與O的 IP → 確認 NAT 有沒有照預期轉。
基本用法¶
# 抓所有封包(量大,務必加過濾)
fw monitor -e "accept;"
# 只抓特定主機(最常用)
fw monitor -e "accept host(10.0.0.5);"
# 抓特定來源到目的
fw monitor -e "accept src=10.0.0.5 and dst=8.8.8.8;"
# 抓特定 port(例如 https)
fw monitor -e "accept port(443);"
# 輸出存檔(之後用 Wireshark 開)
fw monitor -e "accept host(10.0.0.5);" -o /var/log/cap.pcap
# -F 簡化過濾(格式 SrcIP,SrcPort,DstIP,DstPort,Proto;0=any)
# 重點:-F 是 kernel 層過濾,「連加速流量一起抓」,比 -e 更適合排 SecureXL 問題
fw monitor -F "10.0.0.5,0,8.8.8.8,0,0"
-e 與 -F 的差別
-e(INSPECT 表達式)的過濾不套用在被 SecureXL 加速的流量,所以走快速路徑的封包會看不到。-F(kernel 層過濾)同時抓加速與非加速流量,排 SecureXL 相關問題時優先用 -F。
讀輸出¶
每行開頭會標示是哪個介面、哪個點(i/I/o/O):
eth0:i[60] 10.0.0.5 -> 8.8.8.8 ... # 進來的原始封包
eth0:I[60] 10.0.0.5 -> 8.8.8.8 ... # 過完 inbound
eth1:o[60] 1.2.3.4 -> 8.8.8.8 ... # 注意來源變了 = Hide NAT 生效!
eth1:O[60] 1.2.3.4 -> 8.8.8.8 ...
封包『斷在哪個點』就是線索
把四個點當成接力棒。封包在哪一棒消失,問題就在那一段:消失在 i→I 多半是規則 / 防護;I→o 是路由;對照 i 與 O 的位址可驗 NAT。
重要注意事項¶
SecureXL 會讓封包『看不到』
被 SecureXL 加速的封包走快速路徑,可能不會經過 fw monitor 的全部檢查點,導致你以為沒封包。排錯時可暫時關加速:
更好的做法:改用-F kernel 層過濾(連加速流量一起抓),或 fw monitor -p all(在所有 chain 位置擷取、最完整但 CPU 負載高),就不必關加速。從 R80.20 起 fw monitor 也能顯示部分 SecureXL 加速流量。
詳見 CoreXL / SecureXL。
正式環境量大慎用
無過濾的 fw monitor 會吐出海量封包、佔資源。一定要加過濾條件(host / port),抓完即停(Ctrl+C)。
新版的 fw monitor¶
版本提醒
fw monitor 在 R81.10 ~ R82.10 都可用。新版支援更彈性的過濾語法與 inspection point 控制;對 IPv6、VPN 流量的擷取也持續改善。基本的 i/I/o/O 觀念不變。需要更深的核心層 debug 時,搭配 fw ctl zdebug + drop 看封包被丟棄的原因。
小結¶
fw monitor看封包在防火牆內部的四個點 i / I / o / O。- 封包「斷在哪個點」直接指出問題在哪一段。
- 對照 i 與 O 的位址可驗 NAT。
- 務必加過濾;排錯時注意 SecureXL 會讓部分封包看不到,必要時暫關加速。