萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 透明代理部署指南:零客戶端設定實現 Squid 快取加速

透明代理讓用戶瀏覽器無需任何設定,流量自動經由 Squid 快取代理,實現頻寬節省、存取控制與內容過濾。本文涵蓋架構原理、部署前置條件、Squid 2.x 核心設定與 iptables 導流實作。

透明代理運作原理

  1. 用戶瀏覽器直接發起 HTTP 請求(目的地址為目標網站)
  2. 封包經過網關(Squid 所在主機)
  3. iptables REDIRECT 將目的埠 80 導向本機 Squid 埠(預設 3128 或 8080)
  4. Squid 以代理模式代為取回內容,回傳給用戶
  5. 用戶瀏覽器完全感知不到代理存在

部署三大前置條件

條件說明驗證方式
客戶端網關指向 Squid所有出站封包必須經過 Squid 主機客戶端 traceroute 確認第一跳為 Squid IP
客戶端 DNS 正常解析瀏覽器需自行解析域名,Squid 不代理 DNSnslookup www.google.com 正常回應
Squid 服務正常運行支援 1.x/2.x,建議 2.x 穩定版squid -k parse 設定檔語法檢查通過

Squid 2.x 透明代理核心設定

編輯 /etc/squid/squid.conf 新增:

http_port 3128 transparent  # 2.6+ 版本建議加 transparent 關鍵字
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

關鍵說明:

  • httpd_accel_host virtual:啟用 HTTP 加速器模式,接受非代理請求
  • httpd_accel_uses_host_header on:從 Host 標頭取得真實目標主機
  • 重啟生效:systemctl restart squid 或 /etc/init.d/squid restart

iptables 導流規則(核心步驟)

# 假設 Squid 監聽 3128,內網介面 eth1
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# 可選:排除本機產生流量、特定 IP、HTTPS(443 無法透明代理)
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT

儲存規則:service iptables save 或 iptables-save > /etc/sysconfig/iptables。

驗證與疑難排解

  • 查看 Squid 存取日誌:tail -f /var/log/squid/access.log 應見用戶真實 IP 與請求 URL
  • 用戶端瀏覽 https://cache.example.com/squid-internal-static/icons/squid.png 可見 Squid 圖示確認代理生效
  • HTTPS 無法透明代理(加密封包無法解析 Host),需改用 WPAD/PAC 或明確代理設定
copyright © 萬盛學電腦網 all rights reserved