天天看點

開源系統中的代理Squid

Squid是一種在 Linux系統下使用的優秀的 代理伺服器軟體。  squid不僅可用在Linux系統上,還可以用在 AIX、Digital Unix、 FreeBSD、 HP-UX、 Irix、 NetBSD、 Nextstep、 SCO和 Solaris等系統上。  Squid與Linux下其它的代理軟體如 Apache、 Socks、TIS FWTK和 delegate相比,下載下傳安裝簡單,配置簡單靈活,支援緩存和多種協定。用ipchains+Squid的解決方案,就可以獲得通過緩存高性能的同時能夠無縫的通路Internet。  Squid是一個緩存internet資料的一個軟體,它接收使用者的下載下傳申請,并自動處理所下載下傳的資料。也就是說,當一個使用者想要下載下傳一個首頁時,它向Squid發出一個申請,要Squid替它下載下傳,然後Squid 連接配接所申請網站并請求該首頁,接着把該首頁傳給使用者同時保留一個備份,當别的使用者申請同樣的頁面時,Squid把儲存的備份立即傳給使用者,使使用者覺得速度相當快。  對于Web使用者來說,Squid是一個高性能的代理緩存伺服器,可以加快内部網浏覽Internet的速度,提高客戶機的通路命中率。Squid不僅支援 HTTP協定,還支援 FTP、 gopher、 SSL和 WAIS等協定。和一般的代理緩存軟體不同,Squid用一個單獨的、非子產品化的、I/O驅動的程序來處理所有的用戶端請求。   Squid将資料元緩存在記憶體中,同時也緩存 DNS查尋的結果,除此之外,它還支援非子產品化的DNS查詢,對失敗的請求進行消極緩存。Squid支援SSL,支援通路控制。由于使用了ICP,Squid能夠實作重疊的代理陣列,進而最大限度的節約帶寬。   Squid由一個主要的服務程式Squid,一個DNS查詢程式dnsserver,幾個重寫請求和執行認證的程式,以及幾個管理工具組成。當Squid啟動以後,它可以派生出指定數目的dnsserver程序,而每一個dnsserver程序都可以執行單獨的DNS查詢,這樣一來就大大減少了伺服器等待DNS查詢的時間。   Squid的另一個優越性在于它使用通路控制清單(ACL)和通路權限清單(ARL)。通路控制清單和通路權限清單通過阻止特定的網絡連接配接來減少潛在的Internet非法連接配接,可以使用這些清單來確定内部網的主機無法通路有威脅的或不适宜的站點。  Squid對硬體的要求是記憶體一定要大,不應小于128M,硬碟轉速越快越好,最好使用伺服器專用 SCSI 硬碟,處理器要求不高,400MH以上既可。

squid配置

  squid是Linux下的一個代理伺服器,本文限于篇幅,簡單介紹一下squid配置,在文章結尾處提供一個squid配置的word檔案供大家下載下傳。  代理伺服器原理   代理伺服器接受到請求後,首先與通路控制清單中的通路規則相對照,如果滿足規則,則在緩存中查找是否存在需要的資訊。   用戶端B向代理伺服器提出相同的請求。代理伺服器也首先與通路控制清單中的通路規則相對照。如果滿足規則,則将緩存中的資訊傳送給用戶端B   squid簡介   通路控制清單和通路權限清單通過阻止特定的網絡連接配接來減少潛在的Internet非法連接配接,可以使用這些清單來確定内部網的主機無法通路有威脅的或不适宜的站點。   以下是一些squid的基本配置參數解釋   http_port 3128 //設定監聽的IP與端口号  cache_mem 64 MB //設定記憶體緩沖的大小   cache_dir ufs /var/spool/squid 2000 16 256 //設定硬碟緩沖大小   cache_effective_user squid //設定緩存的有效使用者  cache_effective_group squid //設定緩存的有效使用者組  dns_nameservers 192.168.0.254 //設定DNS伺服器位址,一般可以不設定,預設使用伺服器自己設定的dns   cache_access_log /var/log/squid/access.log //設定通路日志檔案   cache_log /var/log/squid/cache.log //設定緩存日志檔案   visible_hostname 192.168.0.20 //設定squid主機名稱   以上全局參數根據你自己的需要修改   其實linux下的伺服器配置檔案最好就是squid,它對每個參數都有解釋,而且很多有很多執行個體   Acl的通路控制清單   文法:acl 清單名稱 清單類型 [-i] 清單值   清單名稱:用于區分Squid的各個通路控制清單,任何兩個通路控制清單不能用相同的清單名。雖然清單名稱可以随便定義,但為了避免以後不知道這條清單是幹什麼用的,應盡量使用有意義的名稱,如badurl、clientip和work time等。   清單類型:是可被Squid識别的類别。Squid支援的控制類别很多,可以通過IP位址、主機名、MAC位址和使用者/密碼認證等識别使用者,也可以通過域名、域字尾、檔案類型、IP位址、端口和URL比對等控制使用者的通路,還可以使用時間區間對使用者進行管理   -i選項:表示忽略清單值的大小寫,否則Squid是區分大小寫的。   清單值:針對不同的類型,清單值的内容是不同的。例如,對于類型為src或dst,清單值的内容是某台主機的IP位址或子網位址;對于類型為time,清單值的内容是時間;對于類型為srcdomain和dstdomain,清單值的内容是DNS域名。

squid常用調試指令

  1、初始化你在 squid.conf 裡配置的 cache 目錄  #squid/sbin/squid -z //第一次啟動squid服務時必須輸入此指令  如果有錯誤提示,請檢查你的 cache目錄的權限。  2、對你的squid.conf 排錯,即驗證 squid.conf 的 文法和配置。  #squid/sbin/squid -k parse  如果squid.conf 有文法或配置錯誤,這裡會傳回提示你,如果沒有傳回,恭喜,可以嘗試啟動squid。  3、在前台啟動squid,并輸出啟動過程。  #squid/sbin/squid -N -d1  如果有到 ready to server reques,恭喜,啟動成功。  然後 ctrl + c,停止squid,并以背景運作的方式啟動它。  4、啟動squid在背景運作。  #squid/sbin/squid -s  這時候可以 ps -A 來檢視系統程序,可以看到倆個 squid 程序。  5、停止 squid  #squid/sbin/squid -k shutdown  這個不用解釋吧。  6、重引導修改過的 squid.conf  #squid/sbin/squid -k reconfigure  這個估計用的時候比較多,當你發現你的配置有不盡你意的時候,可以随時修改squid.conf,然後别忘記對你的 squid.conf排錯,然後再執行此指令,即可讓運作中squid重新按照你的squid.conf 來運作。  7、把squid添加到系統啟動項  編輯 /etc/rc.d/rc.local  添加如下行: /usr/local/squid/sbin/squid -s  當然,并不是每個人都喜歡這種啟動方式,你可以用你最習慣的方式;或者把它安裝為服務。  再來點其他的。  1、修改cache 緩存目錄的權限。  #chown -R squid:squid /home/cache  我的cache緩存目錄是 /home/cache,squid執行使用者和使用者組是 squid,squid。  2、修改squid 日志目錄的權限  #chown -R squid:squid /usr/local/squid/var/logs  這一步并不是适合每一個使用squid的使用者.意為讓squid有權限在該目錄進行寫操作 。  例如生成 access.log cache.log store.log  3、檢視你的日志文檔。  #more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT  該指令可以看到在squid運作過程中,有那些檔案被squid緩存到記憶體中,并傳回給通路使用者。  #more /usr/local/squid/var/logs/access.log | grep TCP_HIT  該指令可以看到在squid運作過程中,有那些檔案被squid緩存到cache目錄中,并傳回給通路使用者。  #more /usr/local/squid/var/logs/access.log | grep TCP_MISS  該指令可以看到在squid運作過程中,有那些檔案沒有被squid緩存,而是現重原始伺服器擷取并傳回給通路使用者。  關于 TCP_XXXX 等參數及代表的資訊,請參看彭勇華《squid中文權威指南》13.2.1 章節。  當然,本例中的藍色文字是可以修改為其他的參數,例如你的域名,同樣可以看到access.log裡關于該域名的行。  4、squid -k rotate 輪換squid的日志檔案/var/log/squid,Squid代理伺服器日志檔案  的增長速度是驚人的,很容易點球滿磁盤空間導緻系統不能正常工作,甚至是當機.為了解決日志檔案增長太快的問題,squid采用了"輪換"的方法.在squid.conf中可以通過logfile_rotate來設定檔案輪換的個數,如:  logfile_rotate 10 ,輪換的工作一般用crontab定時器完在周期性的日志輪換,例如每周六淩晨2:00進行日志輪換,則執行如下指令: crontab -e  0 2 * * 6 squid -k rotate  小貼士:Squid預設的錯誤提示資訊為英文,對于英文不好的使用者來說,實在不友善.在/etc/squid/squid.conf裡添加如下:  error_directory /usr/share/squid/errors/Simplify_Chinese 即可顯示中文的錯誤提示。

繼續閱讀