如何為squid建立Iptables規則以僅處理網路流量請求

如何為squid建立Iptables規則以僅處理網路流量請求

我使用 Squid 代理(DNS 過濾),我在 GCP Cloud NAT 後面以透明模式配置了魷魚代理來攔截 HTTP 和 HTTPS Web 流量,我僅添加了以下規則以將 HTTP 和 HTTPS 流量重定向到魷魚。

iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j REDIRECT --to-port 3130

但據我所知,到目前為止,Squid 是一個Web 代理,僅處理HTTP、HTTPS 和FTP 請求,Squid 不理解SMTP、UDP 和任何其他協定請求,但上述iptables 規則僅適用於HTTP 和HTTPS,我的其餘部分SMTP 和 UDP 請求被封鎖。據我了解,我們無法告訴魷魚處理 SMTP 和 UDP 請求,因此我只想處理魷魚上的 HTTP 和 HTTPS 流量,而且我還希望其餘連接埠直接重定向到我的 GCP Cloud NAT。

誰能幫助我,我應該為僅將連接埠 80、443 請求重定向到 Squid 編寫哪個 iptables 規則,而其餘連接埠請求我想繞過或直接重定向到我的 GCP Cloud NAT

交通流

私有虛擬機器 -> Squid 代理程式 -> GCP 雲端 NAT

答案1

若要僅將連接埠 80 和 443 請求重新導向至 Squid 並繞過所有其他請求,您可以修改現有 iptables 規則,如下所示:

  1. 在 Squid 中建立 ACL 以僅允許 HTTP 和 HTTPS 請求。這可以透過將以下行新增至您的 Squid 設定檔中來完成:

    acl Safe_ports 連接埠 80 443 http_access 允許 Safe_ports

  2. 修改 iptables 規則以僅將 HTTP 和 HTTPS 請求重新導向至 Squid:

    iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 80 -j REDIRECT --to-port 3129 iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j 重定向--to-埠3130

  3. 新增新的 iptables 規則以繞過所有其他請求並將其直接重新導向到您的 GCP Cloud NAT。該規則應如下所示:

    iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp -m 多埠! --dports 80,443 -j DNAT --to-destination [GCP Cloud NAT IP 位址]

此規則將匹配不在連接埠 80 或 443 上的所有 TCP 流量,並將其直接重新導向到您的 GCP Cloud NAT。

確保將 [GCP Cloud NAT IP 位址] 調整為您的 Cloud NAT 執行個體的正確 IP 位址。

透過這些規則,只有 HTTP 和 HTTPS 流量將被重新導向到 Squid 進行過濾,而所有其他流量將被繞過並直接重新導向到您的 GCP Cloud NAT。

相關內容