squid配置指南及問題

2021-04-09 07:10:37 字數 4303 閱讀 6894

基本配置

具體是對squid.conf進行配置,安裝配置路徑參考安裝目錄下的install檔案。

安裝完成後,接下來要對squid的執行進行配置(不是前面安裝時的配置)。所有專案都在squid.conf中完成。squid自帶的squid.conf包括非常詳盡的說明,相當於一篇使用者手冊,對配置有任何疑問都可以參照解決。

在這個例子中,**伺服器同時也是閘道器,內部網路介面eth0的ip位址為192.168.10.11

預設埠是3128,當然也可以是任何其它埠,只要不與其它服務發生衝突即可。為了安全起見,在前面加上ip位址,squid就不會監聽外部的網路介面。

cache_mgr [email protected]

以下這些引數告訴squid快取的檔案系統、位置和快取策略:

cache_dir ufs /usr/local/squid/var/cache 100 16 256(這裡最好使用系統預設路徑,以便更改許可權時方便)

cache_mem 32mb

cache_swap_low 90

cache_swap_high 95

在這裡,squid會將/var/squid目錄作為儲存快取資料的目錄,每次處理的快取大小是32兆位元組,當快取空間使用達到95%時,新的內容將取代舊的而不直接新增到目錄中,直到空間又下降到90%才停止這一活動。如果不想squid快取任何檔案,如某些儲存空間有限的專有系統,可以使用null檔案系統(這樣不需要那些快取策略):

cache_dir null /tmp ---------不需要

access_log /usr/local/squid/var/logs/access.log

cache_log /usr/local/squid/var/logs/cache.log

cache_store_log /usr/local/squid/var/logs/store.log

下面這行配置是在較新版本中出現的引數,告訴squid在錯誤頁面中顯示的伺服器名稱:

visible_hostname no1.proxy

client_netmask 255.255.255.255

如果是普通**伺服器,以上的配置已經足夠。但是很多squid都被用來做透明**。所謂透明**,就是客戶端不知道有**伺服器的存在,當然也不需要進行任何與**有關的設定,從而大大方便了系統管理員。相關的選項有以下幾個:

在linux上,可以用iptables/ipchains直接將對web埠80的請求直接**到squid埠3128,由squid接手,而使用者瀏覽器仍然認為它訪問的是對方的80埠。例如以下這條命令:

iptables -t nat -a prerouting -s 192.168.0.200/32 -p tcp --dport 80 -j redirect 3128

就是將192.168.0.200的所有針對80埠的訪問重定向到3128埠。

所有設定完成後,關鍵且重要的任務是訪問控制。squid支援的管理方式很多,使用起來也非常簡單(這也是有人寧願使用不做任何快取的 squid,也不願意單獨使用iptables的原因)。squid可以通過ip位址、主機名、mac位址、使用者/密碼認證等識別使用者,也可以通過網域名稱、域字尾、檔案型別、ip位址、埠、url匹配等控制使用者的訪問,還可以使用時間區間對使用者進行管理,所以訪問控制是squid配置中的重點。squid 用acl(access control list,訪問控制列表)對訪問型別進行劃分,用http_access deny 或allow進行控制。根據需求首先定義兩組使用者advance和normal,還有代表所有未指明的使用者組all及不允許上網的baduser,配置**如下:

可以看出,acl的基本格式如下:

acl 列表名稱 控制方式 控制目標

上面幾行**告訴squid不允許baduser組訪問internet,但advance、normal組允許(此時還沒有指定詳細的許可權)。由於squid是按照順序讀取規則,會首先禁止baduser,然後允許normal。如果將兩條規則順序顛倒,由於baduser在normal 範圍中,squid先允許了所有的normal,那麼再禁止baduser就不會起作用。

特別要注意的是,squid將使用allow-deny-allow-deny……這樣的順序套用規則。例如,當乙個使用者訪問**伺服器時, squid會順序測試squid中定義的所有規則列表,當所有規則都不匹配時,squid會使用與最後一條相反的規則。就像上面這個例子,假設有乙個使用者的ip位址是192.168.0.201,他試圖通過這台**伺服器訪問internet,會發生什麼情況呢?我們會發現,他能夠正常訪問,因為 squid找遍所有訪問列表也沒有和192.168.0.201有關的定義,便開始應用規則,而最後一條是deny,那麼squid預設的下一條處理規則是allow,所以192.168.0.201反而能夠訪問internet了,這顯然不是我們希望的。所以在所有squid.conf中,最後一條規則永遠是http_access deny all,而all就是前面定義的「src 0.0.0.0」。

特別注意:

1。一定要注意目錄的許可權問題,在.conf檔案中設定cache_effective_user的值,預設設定是nobody

然後使用chown -r nobody:nobody /資料夾  來設定資料夾的許可權

2。注意linux自帶防火牆的問題,我初始的使用使用的是預設埠或者8000埠,啟動後發現不能使用**功能,最後發現問題所在是我的linux防火牆只開了80埠和ftp,telnet的埠,最後,把squid的**埠改為80後才可以正常使用。

squid -z

squid start

squid -k parse                #檢查配置是否有錯誤,沒有任何輸出,證明配置基本是正確的!!!

squid -zx                        #可以加乙個x引數,看看初始化具體的專案.       

如果因為dns無法啟動squid,可以用下面的命令啟動squid

squid -d 

Squid 高階優化指南

本文基本是一些方向性的指導,並不涉及像具體配置檔案的細節,因此本文裡面的內容大部分不能往配置檔案裡面 copy paste。首先要明確一下,squid 能夠用來作什麼。很多人沒有搞明白 squid 的工作原理,只是聽說 squid 效能不錯可以用來給 提速,就直接在自己的 website 前面套了乙...

Squid配置詳解

基本配置 安裝完成後,接下來要對squid 的執行進行配置 不是前面安裝時的配置 所有專案都在squid.conf中完成。squid自帶的squid.conf包括非常詳盡的說明,相當於一篇使用者手冊,對配置有任何疑問都可以參照解決。在這個例子 中,伺服器同時也是閘道器,內部網路介面eth0的ip位址...

優化squid配置

設定執行時的使用者和組許可權 cache effective user squid cache effective group squid 設定管理 資訊 visible hostname proxy.yxtc.edu.cn cache mgr email bye2000 yxtc.edu.cn e...