所有的 Squid Proxy 伺服器的設定值都是在 /etc/squid/squid.conf 檔案中設定。在第一次啟動 Squid 時,在此檔案中不需做任何變更,但是外部用戶端一開始為拒絕存取。Proxy 可供 localhost 使用。預設的埠是 3128。預先安裝的 /etc/squid/squid.conf 組態檔提供關於選項及許多範例的詳細資訊。幾乎所有的項目都是以 # (加備註的行) 開始,而且可以在行的結尾找到相關的指定。指定的值永遠都與預設值相關,因此在大部份情況下,移除備註符號而未變更任何參數,實際上沒有什麼效果。如果有可能,請保留原始的範例,並在行的下方插入選項以及修改過的參數。如此一來,就可以輕易復原預設值,並與變更做比較。
![]() | 在更新後調整組態檔案 |
|---|---|
如果您是從較早的 Squid 版本更新,建議您編輯新的 | |
這是 Squid 為用戶端要求所傾聽的埠。預設的埠是 3128,但是 8080 也是常用的埠。如果有需要,請指定數個以空白分隔的埠號碼。
hostname type proxy-port icp-port
在此可以輸入上層 Proxy,例如如果您想要使用 ISP 的 Proxy。針對 hostname 的部份,輸入要使用的 Proxy IP 位址,並針對 type 部份,輸入 parent。至於 proxy-port 的部份,則輸入上層運算子也會指定的埠號碼,以利在瀏覽器中使用,通常是 8080。如果上層的 ICP 埠是未知的,而且其用途與提供者無關,請將 icp-port 設為 7 或 0。除此之外,在埠號碼禁止使用 ICP 通訊協定後,可指定 default 與 no-query。就提供者 Proxy 而言,Squid 接著就會像一般的瀏覽器一樣地運作。
這個項目定義 Squid 可用於非常受歡迎的回覆的記憶體量。預設值為 8 MB。這不指定 Squid 的記憶體使用量,而且可以超過。
cache_dir 這個項目是定義所有儲存在磁碟上的物件之目錄。在結尾處的數目代表可以使用的最大磁碟空間 (MB),以及在第一層與第二層的目錄數目。ufs 參數應該獨立存在。/var/cache/squid 目錄預設是佔用磁碟空間 100 MB,而且可以在其中建立 16 個子目錄,每個目錄還各包含 256 個子目錄。當指定要使用的磁碟空間時,請保留足夠的可用磁碟空間。在此指定可用磁碟空間的 50% (最小) 至 80% (最大) 為合理的值。最後兩個指定目錄的數目應該謹慎地增加,因為太多的目錄也有可能導致效能降低。如果您有數個共用快取的磁碟,請輸入數行 cache_dir。
這三個項目指定 Squid 記錄其所有動作的路徑。一般而言,這裏不會有所變更。如果 Squid 負荷過重,則將快取與記錄檔分散到數個磁碟會是一個好辦法。
如果該項目是設為 on,就會取得可以讀取的記錄檔。然而有些試用程式無法解譯此檔案。
使用這個項目時,就可以遮罩記錄檔中用戶端的 IP 位址。如果您在這裏輸入 255.255.255.0,IP 位址的最後一位數就會設為 0。您可以用這種方式保護用戶端的隱私。
使用這個項目設定匿名 FTP 登入應該使用的 Squid 密碼。在此也可以指定有效的電子郵件地址,因為某些 FTP 伺服器會檢查這些地址的有效性。
如果 Squid 意外損毀,Squid 應傳送訊息給此電子郵件地址。預設值為網站管理員。
如果您執行 squid -k rotate,則 Squid 可輪換安全的記錄檔。在此程序中會計算檔案的數目,而且在到達指定的值後,就會覆寫最舊的檔案。預設值為 0,因為在 SUSE Linux 中,記錄檔的歸檔和刪除是由在 /etc/logrotate/squid 組態檔中設定的 cron 工作負責執行。
使用 append_domain,可在沒有指定領域時,指定要自動附加的領域。通常,可在此處輸入您自己的領域,因此在瀏覽器中輸入 www 就可以存取您自己的網頁伺服器。
如果您將項目設為 off,則 Squid 會移除 IP 位址以及從 HTTP 要求而來的用戶端系統名稱。否則,它會在標頭中新增類似下一行
X-Forwarded-For: 192.168.0.0
一般而言,您不需要變更這些值。 不過,就算您有撥號連線,但是網際網路有時可能無法使用。雖然已重新建立網際網路連線,Squid 仍然會記錄失敗的要求,並拒絕發出新的要求。像這個例子中,將「分鐘」變更為「秒」,然後在瀏覽器中按一下「重新載入」後,幾秒鐘之後就會進行撥號程序。
acl_name
為了防止 Squid 直接從網際網路接受要求,請使用上述的指令以強制連線至另一個 Proxy。此指令應該在之前已於 cache_peer 中輸入。如果 all 是指定為 acl_name,請強制將所有的要求直接轉送至 parent。例如,如果您所使用的提供者,嚴格地規定其 Proxy 的使用方式或拒絕其防火牆直接存取網際網路,就可能需要執行此動作。
Squid 提供控制 Proxy 存取的詳細系統。透過執行 ACL,可以輕鬆並完整地設定。這牽涉到使用連續處理規則的清單。在使用 ACL 前必須先定義它。某些預設的 ACL,例如 all 與 localhost 已經存在。然而,僅定義 ACL 並不代表它實際上已被套用。這只會發生在連接 http_access 規則使用時。
至少需要三種規格才能定義 ACL。可以任意選擇 <acl_name> 的名稱。至於 <type> 的部份,可從各種不同的選項中選取 (可在 /etc/squid/squid.conf 檔案中的 ACCESS CONTROLS 小節中找到)。<data> 的規格是視個別的 ACL 類型而定,而且也可以從檔案讀取,例如,透過主機名稱、IP 位址或 URL。下列是一些簡單的範例:
acl mysurfers srcdomain .my-domain.com acl teachers src 192.168.1.0/255.255.255.0 acl students src 192.168.7.0-192.168.9.0/255.255.255.0 acl lunch time MTWHF 12:00-15:00
http_access 定義哪些人可使用 Proxy,以及哪些人可存取網際網路的哪些內容。因此,必須指定 ACL。已在上述定義的 localhost 與 all,可透過 deny 或 allow 拒絕或允許存取。您可以建立包含任何數目的 http_access 項目之清單,從上至下處理並視哪個項目先發生,以允許或拒絕存取個別的 URL。最後一個項目應該永遠為 http_access deny all。在下列範例中,localhost 對於每個項目都擁有完整的存取權,而所有其他的主機則完全無法存取。
http_access allow localhost http_access deny all
在另一個使用這些規則的範例中,teachers 群組永遠具有網際網路的存取權。students 群組只能取得在星期一到星期五午休時間的存取權。
http_access deny localhost http_access allow teachers http_access allow students lunch time http_access deny all
基於可讀性的理由,具有 http_access 項目的清單,只能在 /etc/squid/squid.conf 檔案中的指定位置中輸入。也就是,在文字之間
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR # CLIENTS
以及最後
http_access deny all
使用此選項,就可以指定如 squidGuard 之類的重新導向器,來封鎖不需要的 URL。使用 Proxy 驗證以及適當的 ACL,就可以為不同的使用者群組個別地控制網際網路的存取。squidGuard 是可以安裝和設定的獨立套件。
如果在 Proxy 上必須驗證使用者,請設定對應的程式,例如 pam_auth。當第一次存取 pam_auth 時,使用者會看到輸入使用者名稱與密碼的登入視窗。除此之外,仍然需要 ACL,因此只有擁有有效登入的用戶端可以使用網際網路:
acl password proxy_auth REQUIRED http_access allow password http_access deny all
在 proxy_auth 之後的 REQUIRED 可以使用允許的使用者名稱清單或是到達這類清單的路徑來取代。
使用這個項目,就會為所有 ACL 定義的用戶端執行 ident 要求以尋找每個使用者的身份。如果您將 all 套用至 <acl_name>,這對所有的用戶端都是有效的。另外,ident 精靈必須在所有的用戶端上執行。在 Linux 上,請為此用途安裝 pidentd 套件。在 Microsoft Windows 上,可以從網際網路下載可用的免費軟體。若要確保只允許 ident 查詢為成功的用戶端,請在此定義對應的 ACL:
acl identhosts ident REQUIRED http_access allow identhosts http_access deny all
此處,也可使用允許的使用者名稱清單來取代 REQUIRED。使用 ident 會大幅增加存取時間,因為每個要求都會重複 ident 查詢。