跳轉到

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 → 路由 / 出介面問題。
  • 比較 iO 的 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 的全部檢查點,導致你以為沒封包。排錯時可暫時關加速:

fwaccel stat            # 先看加速狀態
fwaccel off             # 暫時關閉(排錯用,會降效能!)
# ... fw monitor 抓包 ...
fwaccel on              # 完事務必開回來
更好的做法:改用 -F kernel 層過濾(連加速流量一起抓),或 fw monitor -p all(在所有 chain 位置擷取、最完整但 CPU 負載高),就不必關加速。從 R80.20 起 fw monitor 也能顯示部分 SecureXL 加速流量。 詳見 CoreXL / SecureXL

正式環境量大慎用

無過濾的 fw monitor 會吐出海量封包、佔資源。一定要加過濾條件(host / port),抓完即停(Ctrl+C)。

新版的 fw monitor

版本提醒

fw monitorR81.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 會讓部分封包看不到,必要時暫關加速。