FortiGate—Session_Table

Questions

「為什麼Fortigate設定policy的時候只需要設定外對內?」
「為什麼Policy Route不參與封包回去的路由決策?」
「去回不同路?」

Reference

https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/562859/using-a-session-table
https://docs.fortinet.com/document/fortigate/7.6.4/administration-guide/139692/routing-concepts

Creating New Session

1. 查 Policy
   - 檢查 Security Policy(來源介面 → 目的介面)是否允許這個流量。  
   - 如果不允許,直接丟棄,不會建立 session。

2. 查 Policy Route > SD-WAN rule > Routing Table給"正向流量"。

3. 查詢FIB給"反向流量",也就是不包含Policy Route and SDWAN Rule。

4. 建立 Session Entry
   - 在 session table 裡建立紀錄,包括:  
     - 來源與目的 IP/Port + protocol(五元組)
     - ingress / egress interface  
     - NAT 轉換資訊(SNAT/DNAT)  
     - timeout、flags、UTM 狀態  

這時候,routing lookup 的結果會被寫入 session table。

Respond Packet

當回應封包進來時(例如 TCP SYN-ACK):

1. 比對 Session Table
   - 如果找到符合的 entry(反向五元組),就直接放行。  

2. 出口介面決定
   - 出口並不是重新查 routing table,而是直接使用 session entry 裡的 egress interface。

Conclusion

封包進入防火牆(比對不到session)
    → 查 Policy、查 Routing → 建立 session entry。

回應封包 
    → 直接比對 反向session entry → 若比對成功,則套用egress interface。 
    (也就是說,這個階段policy route, SDWAN rule不參與,只有FIB會影響。)