
我正在嘗試使用以下配置在 CentOS 上設定強制 Web 入口網站重定向:
此配置適用於前幾個資料包,但隨後伺服器回應中的目標連接埠突然損壞。數據包追蹤如下所示:
客戶端:發出原始 Web 要求的主機。伺服器:請求的原始目的地 入口網站:強制門戶伺服器
此資料包追蹤是從可以看到客戶端和入口網站流量的位置取得的。以 c: 開頭的行來自客戶端,以 p: 開頭的行來自門戶端。
c: client:57877 -> server:80 [SYN]
p: client:1092 -> portal:80 [SYN] NAT adjusted SYN
p: portal:80 -> client:1092 [SYN, ACK]
c: server:80 -> client:57877 [SYN, ACL] NAT reversed on the SYN/ACK
c: client:57877 -> server:80 [ACK]
c: client:57877 -> server:80 HTTP GET
p: client:1092 -> portal:80 [ACK]
p: client:1092 -> portal:80 HTTP GET
p: portal:80 -> client:1092 [ACK]
c: server:68 -> client:57877 [ACK]
^^ WTF?!?
此時連線已完成。客戶端不期望該連接埠上有資料包並發送 RST。每次嘗試此連接時,損壞的連接埠號碼都會增加 1(大概從現在起 12 次嘗試後它會工作一次)。所有重傳的回應上都有相同的損壞連接埠號碼。我不知道是什麼原因造成的。
這是一個錯誤,還是我做錯了什麼?這台機器的配置確實有點不尋常。它被配置為網橋。為了僅將 NAT 規則應用於單向傳輸的資料包,請先使用 ebtables NAT 規則標記資料包,並在套用 iptables NAT 時檢查該標記。
這是在具有核心 2.6.32-279.5.2.el6.x86_64 的 Enterprise Linux 6 上
NAT規則為:
target prot opt in out source destination
DNAT tcp -- ilb any anywhere anywhere multiport dports http,https mark match 0x8 to:<portal IP>
ilb 是橋樑。