防火牆 and Proxy 部屬模式
防火牆定義
過濾封包的安全裝置,根據不同的防禦可以分成
- L3/L4 網路層防火牆,在 TCP/IP 運作,分為
- Stateless 防火牆,沒有狀態,僅僅是根據
- Stateful 防火牆,根據自己的狀態表來做防禦
- L7 應用層防火牆,對 L7 協議做防禦
防火牆架設
下面不同架設方式適用上面三種不同類型的防火牆。
路由防火牆位置
一種是放在 Router 的位置,它會切分 WAN/LAN,這時防火牆就是 LAN Server 的 Default gateway,並且它要有 Router/NAT 的功能。
透明橋接模式
防火牆沒有 IP,它就只是一台 「會檢查封包的超級交換器 (Switch)」。他是隱形的,Server 什麼設定都不用改變。
單臂模式 (One-Arm / Stick Mode)
這在雲端環境或負載平衡器(LB)也非常常見,設備只接「一條線」連到核心交換器,透過 VLAN Tagging,流量進入交換器後,被強制導向防火牆,檢查完後再送回同一條線流向目的地。
Proxy
也是類似做防禦的,防火牆是 Client 與 Server 是直接握手,而 Proxy 是 Client 先跟 Proxy 握手完,Proxy 才去跟 Server 握手(Termination 終止)。
常見有以下分類:
- Forward Proxy: 代理用戶端,隱藏用戶端身分
- Reverse Proxy: 代理伺服器端,隱藏真實 IP or 做負載平衡
- Transparent Proxy: 用戶端不知道有 Proxy 存在。流量在網路層被強制攔截並導向代理伺服器
Load Balancer
可能是有 L4 or L7 LB (Proxy)。
- L4 LB (傳輸層代理):它只看到 TCP/UDP 層級(IP 和 Port)
- 連線 A (Client ↔ Proxy): 用戶端先跟 Proxy 完成 TCP 三向握手
- 連線 B (Proxy ↔ Server): Proxy 根據演算法選定後端伺服器後,再發起另一個全新的 TCP 三向握手
- L7 LB:
- 連線 A (Client ↔ LB): LB 代表後端,跟用戶端完成 TCP 三向握手。如果是 HTTPS,還要在這層完成 SSL/TLS 握手(這就是為什麼 LB 可以做 SSL Offloading)
- 協議解析: LB 讀取 HTTP Request 的內容(網址、Header、Cookie)
- 連線 B (LB ↔ Server): LB 根據解析結果,選定一台最閒的 Server,發起另一個全新的 TCP 連線,把請求轉發過去
它可以用像是 Reverse Proxy 模式 or Transparent Proxy 模式。
- Reverse Proxy 模式
- Client 看到是 LB 的 IP
- LB 收到封包,會把封包 src IP = LB IP, dst IP = server IP,伺服器看到是 LB 的 IP 封包
- Sever 不用改 Default gateway,因為它會以為旁邊的 LB 要跟他講話而已
- 對客戶端透明(Client 不知道後端 Server 的存在)
- Transparent Proxy
- Client 還是看到 Server 自己的 IP
- 但可能用橋接或者其他方式讓它一定會經過 LB
- LB 收到封包不會改變 src IP
- 伺服器需要改變 Gateway 變成 LB IP
- 對伺服器透明(Server 以為自己在直接跟 Client 溝通)
第一種 Reverse Proxy 的缺點就是 Server 以為所有封包都是 LB 傳的,解決方式是,業界會使用 PROXY Protocol。這是一種特殊的技術,在 TCP 連線建立後、傳送正式資料前,先送一小段包含 Client IP 的資訊。後端伺服器(如 Nginx 或 Varnish)只要有開啟支援,就能從 TCP 連線中「聽」到真實 IP。
或者當他是 L7 Proxy 的時候,它可以在 HTTP Header 加上 X-Forwarded-For 就能知道真實 IP。
- L7 LB: 因為它本來就要拆開 HTTP,所以它可以順手在裡面塞一個 X-Forwarded-For: [Client_IP]
- L4 LB: 因為它不看 HTTP,它沒辦法幫你加這個欄位(除非你改用 PROXY Protocol)
但其實又可以針對上面兩種有變體

- 標準反向代理 (Standard Reverse Proxy)
這是最常見的負載平衡模式。
- 關鍵字:
- SNAT (Source Network Address Translation): 指 LB 轉發時修改來源 IP。
- Layer 7 Load Balancing: 強調運作在應用層。
- SSL Offloading / Termination: 終止加密連線的過程。
- X-Forwarded-For (XFF): 用於在 Header 中傳遞真實 IP 的工業標準。
- IP 透明變體 (Full Transparency / IP Transparency)
Client 連向 VIP,但 Server 看到真實 Client IP。
- 關鍵字:
- IP Transparency / Full Transparency: 業界最通用的名稱。
- Spoofed Source IP: 指 WAF 偽造來源 IP 發送給 Server。
- Non-SNAT Mode: 強調不進行來源位址轉換。
- Direct Routing (L3): 雖然不是 DSR,但強調 L3 路徑的完整性。
- Policy-Based Routing (PBR): 通常需要配合 PBR 確保回程流量正確。
- 純透明代理 (Transparent Proxy / Interception Proxy)
Client 連向 Server IP,半路被截擊,Server 看到真實 Client IP。
- 關鍵字:
- Interception Proxy: 這是 RFC 中最標準的稱呼,強調「攔截」。
- TPROXY (Transparent Proxying): Linux 核心中實作此功能的模組名稱(FreeBSD 則常用
fwd或divert)。 - Inline Mode: 強調設備直接串在路徑中間。
- L3 Transparent Mode: 區別於 L2 的透明模式。
- 第四種變體 (Transparent Interception with SNAT)
Client 連向 Server IP,但 Server 看到 WAF IP。
- 關鍵字:
- Single-Arm Transparent Mode: 常用於 LB 旁路部署。
- Forced Interception: 強制流量導向,但後端接續使用代理身分。
- Destination NAT (DNAT) + SNAT: 這種模式在底層其實是這兩種 NAT 的組合
還有一種 Full bridge 模式
這是在 20G 環境下最常見的實作。Proxy 程式會進行 「雙向偽裝」:
- 攔截 SYN: 當 Client 發出連線請求給 Server,Bridge 攔下這個 SYN。
- 冒充 Server: Proxy 程式直接回覆 SYN/ACK 給 Client。注意,這封回包的 來源 IP 會偽裝成 Server IP,但 MAC 是 Proxy 的。
- 冒充 Client: 同時,Proxy 向後端 Server 發起連線,來源 IP 偽裝成 Client IP。
- 接資料: 兩邊握手都完成後,Proxy 就在中間拆開 L7 內容檢查,沒問題後再把資料「縫合」傳給另一邊
還有一種特別的部屬方式是 DSR (Direct Server Return),LB 只負責處理「進來」的請求,並把封包轉給伺服器(不改 IP,只改 MAC 位址)。伺服器處理完後,直接回包給用戶端,完全不經過 LB。
這不是 Proxy,因為它沒有 Termination。這是在 Layer 2/3 做的事。
WAF
是一種 L7 Proxy,因為它會用到連線終止,但因為他又有安全檢查,所以也叫做 Firewall。
L7 Firewall (NGFW) 主要是看封包特徵,識別這是什麼 App (Line, FB, SSH),看的比較淺,不一定要終止連線 (透明過濾),保護整個內部網路 或出口。
WAF 則是看網址參數、JSON 內容、Cookie,專門保護 Web Server。
同樣 WAF 類似 LB,也有兩種部屬方式。
- WAF 的反向代理模式 (Reverse Proxy Mode),這是最主流、最標準的部署方式(例如 Cloudflare WAF 或硬體 F5 WAF)
- Client 看到的是 WAF IP
- WAF 執行 Termination:WAF 向後端伺服器發起新連線時,會進行 SNAT(來源 IP 變成 WAF 的內網 IP)
- 部署最簡單,伺服器完全不需要改 Gateway
- 伺服器 Log 看到的都是 WAF 的 IP(需透過 X-Forwarded-For 取得真實 IP)
- WAF 的透明代理模式 (Transparent Proxy Mode)
- Client 看到還是 Server IP
- WAF 像「保險絲」一樣插在 Server 前面,或者透過路由(L3)強制將流量導向 WAF
- WAF 發起後端連線時,會保持(Spoof)原始用戶的 IP 作為來源 IP
- 後端伺服器可以直接在 Layer 3 看到攻擊者的真實 IP
- 缺點: 配置極度複雜。為了讓回程流量(Return Traffic)也經過 WAF 處理,伺服器的 Default Gateway 必須指向 WAF