透明模式下squid如何理解目的IP位址

透明模式下squid如何理解目的IP位址

在透明模式下,使用以下 iptable 規則將流量重新導向至魷魚。

iptables -I PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 3128

據我所知,REDIRECT 將目標 IP 位址變更為本機介面的 IP。

那麼當流量到達squid時,由於目標IP已經改變,squid如何知道要轉送到哪裡?

答案1

您是正確的,使用REDIRECT,Squid 無法看到原始的目標 IP;相反,它將解析客戶端在 HTTP 標頭中提供的主機Host:,這在 HTTP 1.1 中是強制的。

答案2

這與網關非常相似。

當客戶端主機不知道目標主機所在的位置時,它將封包傳送到預設閘道。網關定義該資料包應傳送到何處。

透明代理也做同樣的事情。所有發送至 xxx.xxx.xxx.xxx:80 的封包都會轉移到連接埠 3128,而不是封包標頭中提到的連接埠。 Squid 分析資料包及其標頭 -src以及dst相應的端口,然後像網關一樣提交資料包,或者如果之前快取過,則立即發送答案。

主要想法是目標連接埠儲存在每個資料包中,而資料包可以在傳輸過程中路由到不同的主機/連接埠。

相關內容