使用代理伺服器的一般方法如下︰網頁瀏覽器將要求傳送至代理伺服器的某個連接埠,然後代理伺服器會提供這些所需物件 (無論它們是否在快取記憶體中)。使用網路工作時,可能會發生數種狀況:
基於安全理由,建議所有的用戶端都使用代理瀏覽網際網路。
所有的用戶端都必須使用代理,不論它們是否注意到它。
網路上的代理發生變動,但現有的用戶端需要保留其原有的組態。
在所有上述情況下,都可使用透明代理。原則很簡單︰代理會攔截和回應網頁瀏覽器的要求,因此網頁瀏覽器不必知道頁面的來源,即可收到要求的頁面。如名稱所示,整個程序會流暢地執行。
若要通知 squid 讓其用作透明代理,請在主要組態檔案 /etc/squid/squid.conf 中的 http_port 標記處使用 transparent 選項。重新啟動 squid 後,必須將防火牆重新設定為將 HTTP 埠重新導向至 http_port 中指定的連接埠。在下面的 squid 組態行中,該指定的埠為埠 3128。
http_port 3128 transparent
現在,使用連接埠轉遞規則,透過防火牆將所有內送要求重新導向至 Squid 埠。使用 SuSEfirewall2 工具,如第 15.4.1 節「Configuring the Firewall with YaST」 (第 15 章「Masquerading and Firewalls」, ↑Security Guide) 中所述。其 /etc/sysconfig/SuSEfirewall2 組態檔案含有詳細記錄的項目。若要設定透明代理,必須設定數個防火牆選項︰
指向網際網路的設備︰FW_DEV_EXT="eth1"
指向網路的設備︰FW_DEV_INT="eth0"
在防火牆上,定義供不受信任的 (外部) 網路 (如網際網路) 存取的連接埠與服務 (請參閱 /etc/services)。在此範例中,僅提供對外的 Web 服務:
FW_SERVICES_EXT_TCP="www"
在從安全 (內部) 網路存取的防火牆上,定義埠或服務 (請參閱 /etc/services),兩者都是透過 TCP 與 UDP 服務:
FW_SERVICES_INT_TCP="domain www 3128" FW_SERVICES_INT_UDP="domain"
如此可允許存取 Web 服務與 Squid (預設埠為 3128)。「domain」 服務代表 DNS (網域名稱服務)。這個服務使用非常普遍。否則,請直接將它從上述項目移除,並將下列選項設為 no:
FW_SERVICE_DNS="yes"
最重要的選項是選項數字 15:
範例 29.1. 防火牆組態︰選項 15
# 15.) # Which accesses to services should be redirected to a local port on # the firewall machine? # # This option can be used to force all internal users to surf via # your squid proxy, or transparently redirect incoming webtraffic to # a secure webserver. # # Format: # list of <source network>[,<destination network>,<protocol>[,dport[:lport]] # Where protocol is either tcp or udp. dport is the original # destination port and lport the port on the local machine to # redirect the traffic to # # An exclamation mark in front of source or destination network # means everything EXCEPT the specified network # # Example: "10.0.0.0/8,0/0,tcp,80,3128 0/0,172.20.1.1,tcp,80,8080"
上方的註解顯示要遵照的語法。首先,輸入存取代理防火牆之內部網路的 IP 位址與網路遮罩。其次,輸入這些用戶端的要求傳送到的 IP 位址與網路遮罩。如果是網頁瀏覽器,請將網路指定為 0/0,萬用字元表示「可到任何位置」。完成後,輸入這些要求傳送到的原始目的埠,最後,輸入重新導向所有這些要求的目的埠。由於 Squid 支援 HTTP 以外的通訊協定,請將要求從其他連接埠重新導向到代理,例如 FTP (埠 21)、HTTPS、或 SSL (埠 443)。在此範例中,Web 服務 (埠 80) 會重新導向至代理埠 (埠 3128)。如果需要新增更多的網路或服務,必須在各個項目中以空格隔開。
FW_REDIRECT="192.168.0.0/16,0/0,tcp,80,3128"
若要啟動防火牆並使用它所包含的新組態,請在 /etc/sysconfig/SuSEfirewall2 檔案中變更項目。START_FW 項目必須設為 "yes"。
啟動 Squid,如第 29.3 節「啟動 Squid」 所示。若要確認一切正常,請查看 /var/log/squid/access.log 中的 Squid 記錄。Squid只應開啟 Web 服務 (埠 80)。若要以 nmap 掃描連接埠,指令語法為 nmap -O IP_address。