linux基礎伺服器架設squid(一)普通代理伺服器!
一、簡介
代理伺服器英文全稱是Proxy Server,其功能就是代理網路使用者去取得網路資訊。
Squid是一個快取Internet 資料的軟體,其接收使用者的下載申請,並自動處理所下載的資料。當一個使用者想要下載一個主頁時,可以向Squid 發出一個申請,要Squid 代替其進行下載,然後Squid 連線所申請網站並請求該主頁,接著把該主頁傳給使用者同時保留一個備份,當別的使用者申請同樣的頁面時,Squid 把儲存的備份立即傳給使用者,使使用者覺得速度相當快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等協議並且Squid 可以自動地進行處理,可以根據自己的需要設定Squid,使之過濾掉不想要的東西。
1.1 工作流程
當代理伺服器中有客戶端需要的資料時:
a. 客戶端向代理伺服器傳送資料請求;
b. 代理伺服器檢查自己的資料快取;
c. 代理伺服器在快取中找到了使用者想要的資料,取出資料;
d. 代理伺服器將從快取中取得的資料返回給客戶端。
當代理伺服器中沒有客戶端需要的資料時:
1. 客戶端向代理伺服器傳送資料請求;
2. 代理伺服器檢查自己的資料快取;
3. 代理伺服器在快取中沒有找到使用者想要的資料;
4. 代理伺服器向Internet 上的遠端伺服器傳送資料請求;
5. 遠端伺服器響應,返回相應的資料;
6. 代理伺服器取得遠端伺服器的資料,返回給客戶端,並保留一份到自己的資料快取中。
1.2 Squid 分類
按照代理型別的不同,可以將Squid 代理分為正向代理和反向代理,正向代理中,根據實現方式的不同,又可以分為普通代理和透明代理。
- 普通代理:需要客戶機在瀏覽器中指定代理伺服器的地址、埠;
- 透明代理:適用於企業的閘道器主機(共享接入Internet)中,客戶機不需要指定代理伺服器地址、埠等資訊,代理伺服器需要設定防火牆策略將客戶機的Web訪問資料轉交給代理服務程式處理;
- 反向代理:是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器;
二、系統環境
普通代理伺服器關閉iptables
作業系統:CentOS release 6.5 (Final)
Squid版本:squid-3.1.23-24.el6.x86_64
SELINUX=disabled
service iptables stop
三、安裝Squid服務
3.1 首先檢查系統中是否安裝squid 軟體
[[email protected] ~]# rpm -aq | grep squid
3.2 如果未安裝,使用yum方式安裝(配置本機yum源或使用阿里的源都可以,或使用RPM包方式進行安裝)
[[email protected] ~]# yum -y install squid
下面是我安裝的squid 的版本資訊!
3.3 設定開機自啟動
[[email protected] ~]# chkconfig squid on
或者[[email protected] ~]# chkconfig --level 35 squid on
確認服務狀態
[[email protected] ~]# chkconfig --list | grep squid
squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
四、squid伺服器的配置檔案說明
squid 的主配置檔案是 /etc/squid/squid.conf,所有squid的設定都是在這個檔案裡配置,下面我們來講解一下該檔案的配置選項。
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.david.dev //主機名 cache_mgr mchi[email protected] //管理員郵箱
五、普通代理服務
我的實驗架構圖
因為我的網路環境中有一個代理伺服器(10.67.50.59),有許可權使用者可正常使用,本次我的是在現有環境下配置一個二級代理伺服器(10.67.50.52)測試使用!
5.1 配置Squid 代理伺服器IP地址
將eth0的IP地址修改為 10.67.50.52
5.2 檢視squid.conf 的配置檔案,在修改前先進行備份!
5.2.1 配置檔案備份:cp /etc/squid/squid.conf /etc/squid/squid.conf.blk
5.2.2 grep 檢視配置檔案內的原始配置
[[email protected] squid]# grep -P -v '#|^$' squid.conf.blk acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl SSL_ports port 443 acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
5.2.3 我們本次做普通的代理伺服器,在設定之前,可將原始配置值姐刪除,我們重新加入如下配置!
http_port 3128 #代理埠設定;預設3128
cache_mem 128 MB #最大快取塊
cache_dir ufs /var/spool/squid 4096 16 256 #ufs:快取資料的儲存格式 #/var/spool/squid 快取目錄 #100:快取目錄佔磁碟空間大小(M)
#16:快取空間一級子目錄個數
#256:快取空間二級子目錄個數
cache_effective_user squid #這裡以使用者squid 的身份squid伺服器 我們安裝完squid服務後,會在/etc/passwd 檔案中生成一個 squid 的賬號!截圖如下!
cache_effective_group squid #這裡以群組squid 的身份squid伺服器
cache_access_log /var/log/squid/access.log #接入訪問日誌存放位置
cache_log /var/log/squid/cache.log #快取日誌
cache_store_log /var/log/squid/store.log #儲存日誌
visible_hostname basicservices #可見主機名
acl localnet src 10.0.0.0/8 #acl 定義本地網路地址範圍
http_access allow localnet #允許所有的10.0.0.0/8地址段使用
cache_peer 10.67.50.59 parent 808 0 default #本次設定為二級代理,需將服務請求指向一級代理,如預設為雙網絡卡的以及代理,可無需配置此項
never_direct allow all
如果以及代理需要賬號密碼,配置選項中需新增如下語句!方可呼叫一級代理
#cache_peer 10.67.50.59 parent 808 0 login=account:passwd default
#never_direct allow all
生成的squid使用者
5.3 初始化
[[email protected] ~]# squid -z
5.4 啟動Squid
在此入夥遇到無法啟動的情況,去檢視一下/var/log/message 中的報錯,我的是squid.conf配置檔案語句有錯誤,導致無法啟動,後修改正確後,可正常啟動服務!
5.5 配置user proxy
5.6 測試
配置上以後,可以正常連線外網!