1. 程式人生 > >Squid安裝配置和使用

Squid安裝配置和使用

util markdown 數量 src acc agent 與運算 strong 版本

文:鐵樂與貓

環境
centos 6.5 x64

安裝
最簡單的一種就是yum安裝。
yum install squid

版本
rpm -qa | grep squid
squid-3.1.23-16.el6_8.6.x86_64

此外就是編譯安裝

配置
修改squid的配置文件 /etc/squid/squid.conf
主要就是配置一下端口,緩存,日誌和訪問規則。

http_port 8904               #默認3128,必然得改
cache_mem 64MB               #內存中的緩存大小
maximum_object_size 4MB      
#最大被緩存文件大小,配合cache_dir使用,只作用於緩存到磁盤的文件。
cache_dir ufs /var/spool/squid 100 16 256   
#緩存目錄,默認只是在內存中進行緩存。
#這裏指定緩存大小為100M,第一層子目錄為16個,第二層為256。
access_log /var/log/squid/access.log            #訪問日誌
visible_hostname squid.server                   
#自定義的代理服務器的主機信息,會出現在錯誤警告頁裏。

然後就是一系列的自定義的acl控制列表,就不詳列了。


http_port 3128      //設置監聽的IP與端口號
cache_mem 64 MB      
//額外提供給squid使用的內存,squid的內存總占用為 X * 10+15+“cache_mem”,其中X為squid的cache占用的容量(以GB為單位),
//比如下面的cache大小是100M,即0.1GB,則內存總占用為0.1*10+15+64=80M,推薦大小為物理內存的1/3-1/2或更多。
maximum_object_size 4 MB   
//設置squid磁盤緩存最大文件,超過4M的文件不保存到硬盤
minimum_object_size 0 KB   
//設置squid磁盤緩存最小文件
maximum_object_size_in_memory 4096 KB   
//設置squid內存緩存最大文件,超過4M的文件不保存到內存
cache_dir ufs /var/spool/squid 100 16 256   
//定義squid的cache存放路徑 、cache目錄容量(單位M)、一級緩存目錄數量、二級緩存目錄數量
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh        //log文件日誌格式
access_log /var/log/squid/access.log combined  //log文件存放路徑和日誌格式
cache_log /var/log/squid/cache.log   //設置緩存日誌
logfile_rotate 60   //log輪循 60天
cache_swap_high 95  //cache目錄使用量大於95%時,開始清理舊的cache
cache_swap_low 90   //cache目錄清理到90%時停止。
acl localnet src 192.168.1.0/24  //定義本地網段
http_access allow localnet  //允許本地網段使用
http_access deny all  //拒絕所有
visible_hostname squid.dev  //主機名
cache_mgr [email protected]  //管理員郵箱

初始化
在第一次啟動之前或者修改了cache路徑之後,需要重新初始化cache目錄。
squid -z

啟動
service squid start

添加用戶認證
為了防止squid代理被爬蟲掃到並且被用於不法用途,(比如發垃圾郵件),非常有必要為squid添加用戶認證。

通過ncsa認證模塊來為squid添加認證(還有其他模塊,但這個模塊是最常用到和大概是最簡易的)
配置訪問用戶的賬戶信息。最後一個參數是用戶名。這一步其實像是替linux建賬戶一樣。
只是需要用到的htpasswd(註意,你沒看錯,就是htpasswd,而不叫httpasswd,逼死強迫癥。)
這個工具,需要安裝Apache才有(yum install httpd

)。

又或者安裝apache獨立的工具包apache2-utils更好,
但centos上還真不好找,後來發現在centos上其實就是yum install httpd-tools。就是那些獨立工具包了。
安裝後默認位置在/usr/bin/htpasswd

htpasswd -c /etc/squid/passwd tiele
敲完這條命令後,會讓你輸入密碼,然後就順利在passwd文件裏生成你的賬號密碼信息了。
但是後來發現太坑爹了,原來這個命令只能創建一個用戶,你第二次輸會將前文覆蓋!!!

重要:之後添加用戶,要把上面的命令去掉-c參數再運行。
-c應該就是指定配置或創建配置文件的意思,真是掉以輕心……犯了錯……

所以建議正規做法還是先touch或vim創建一個passwd文件……然後直接是不加-c參數去運行。
而且我在輸完十幾條這樣的命令後才去檢查的也是失策,應該兩到三個後就該cat看一下文件內容有沒有才對!

另附刪除用戶命令
htpasswd -b -D /etc/squid/passwd usrname passwd

當然我感覺直接進/etc/squid/passwd這個文件裏直接刪除會更省事

然後在配置文件裏加上以下命令:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth  /etc/squid/passwd
#註意,basic_ncsa_auth是在3.3版本,在3.1.23這個版本是直接ncsa_auth
#該選項指出了認證方式(basic)、需要的程序(ncsa_auth)和 對應的密碼文件(password) 
auth_param basic children 8       #認證程序同時跑的個數
auth_param basic realm tiele‘s squid server   #客戶端在使用代理時,輸入密碼時彈出來的提示框中的描述文字。
auth_param basic credentialsttl 8 hours   #認證的持續時間
acl normal proxy_auth REQUIRED   
#對normal這個鏈使用外部程序進行認證。註意,這個名稱不能和其他一樣。
http_access allow normal    #允許normal組中的成員訪問
http_access deny all        #最後總是會有一條拒絕所有訪問的配置。

之後重啟squid
service squid restart

附:
訪問控制
使用訪問控制特性,可以控制在訪問時根據特定的時間間隔進行緩存、訪問特定站點或一組站點等等。
Squid 訪問控制有兩個要素:ACL 元素和訪問列表。訪問列表可以允許或拒絕某些用戶對此服務的訪問。
下面列出一些重要的 ACL 元素類型

  * src : 源地址 (即客戶機IP地址)
  * dst : 目標地址 (即服務器IP地址)
  * srcdomain : 源名稱 (即客戶機名稱、域名)
  * dstdomain : 目標名稱 (即服務器名稱、域名)
  * time : 一天中的時刻和一周內的一天
  * url_regex : URL 規則表達式匹配
  * urlpath_regex: URL-path 規則表達式匹配,略去協議和主機名
  * proxy_auth : 通過外部程序進行用戶驗證
  * maxconn : 單一 IP 的最大連接數

為了使用控制功能,必須先設置 ACL 規則並應用。

ACL 聲明的格式如下:
  acl acl_element_name type_of_acl_element values_to_acl

  註:

  1. acl_element_name 可以是任一個在 ACL 中定義的名稱。
  2. 任何兩個 ACL 元素不能用相同的名字。
  3. 每個 ACL 由列表值組成。
              當進行匹配檢測的時候,多個值由邏輯或運算連接;
              換言之,即任一 ACL元素的值被匹配,則這個 ACL 元素即被匹配。
  4. 並不是所有的 ACL 元素都能使用訪問列表中的全部類型。
  5. 不同的 ACL 元素寫在不同行中,Squid 將把它們組合在一個列表中。
  我們可以使用許多不同的訪問條目。下面列出我們將要用到的幾個:
  * http_access: 允許 HTTP 訪問。這個是主要的訪問控制條目。
  * no_cache: 定義對緩存請求的響應。
  訪問列表的規則由一些類似 ‘allow‘ 或 ‘deny‘ 的關鍵字構成,用以允許或拒絕向特定或一組 ACL 元素提供服務。

註:
  1. 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束。
  2. 一個訪問列表可以由多條規則組成。
  3. 如果沒有任何規則與訪問請求匹配,默認動作將與列表中最後一條規則對應。
  4. 一個訪問條目中的所有元素將用邏輯與運算連接:
  http_access Action 聲明1 AND 聲明2 AND 聲明 OR.
  http_access Action 聲明3
  多個 http_access 聲明間用或運算連接,但每個訪問條目的元素間用與運算連接。
  5. 請記住列表中的規則總是遵循由上而下的順序。

下一篇和squid有關的博文再介紹客戶端上使用瀏覽器設置PAC文件代理配合走squid代理瀏覽重要站點。
適合設置權限讓基本只有公司內部的成員才有權訪問項目網站的後臺管理。

end

Squid安裝配置和使用