為 Haproxy 設定 iptables

為 Haproxy 設定 iptables

運行 haproxy 的 Ubuntu 機器有 2 個網路卡,1 個連接到 WAN(稱為 wan0),另一個連接到 LAN(稱為 lan0)。所有鏈均設定為 DROP 流量。

# Masquerade traffic from LAN to WAN
-A POSTROUTING -o wan0 -s 192.168.x.x/24 -j MASQUERADE

# Allow traffic from LAN to WAN
iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT

# Allow HTTP traffic in/out both interfaces
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT

*** Is below rule needed? ***
# -A FORWARD -i wan0 -o lan0 -p tcp –dport 80 -j ACCEPT

我想允許來自 WAN 的 HTTP(連接埠 80)流量進入 LAN,haproxy 會將其路由到後端伺服器。我讀過的文檔指出:

“輸入、轉送和輸出是分開的。資料包只會到達三個鏈之一。”

我是否缺少任何可在介面之間路由 HTTP(連接埠 80)流量的 iptable 規則?

答案1

正如您所說,您將預設鏈策略設為DROP。因此,您需要ACCEPT為您想要允許的每種類型的流量製定明確的規則。

以下規則將允許來自lan0介面 和流出 介面 的流量通過您的盒子wan0

iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT

此外,最好使用以下規則允許其他類型的流量,例如 RELATED 和 ESTABLISHED:

iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

這是允許響應流量通過所必需的。您可以對INPUTOUTPUT鏈執行類似的操作。

這實際上取決於您的需求以及您想要允許和拒絕的內容。

至於這句話:

“輸入、轉送和輸出是分開的。資料包只會到達三個鏈之一。”

是的,這是真的。數據包將命中:

  1. INPUT當它的目的地是本地機器時,鏈。
  2. OUTPUT當它源自於本機電腦時鏈。
  3. FORWARD否則鏈(從另一台機器接收並需要轉發到其他機器)。

相關內容