十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
防偽碼:天道酬勤,沖向理想的彼岸
創(chuàng)新互聯建站長期為近1000家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為和順企業(yè)提供專業(yè)的成都網站建設、成都網站制作,和順網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
簡介:
squid 是 Linux系統(tǒng)中最常用的一款開源代理服務軟件
(官方網站:http//www.squid-cache.org)
可以很好地實現HTTP和FTP,以及DNS查詢、SSL等應用的緩存代理,功能十分強大。
作為應用層的代理服務軟件,squid主要提供緩存加速、應用層過濾控制的功能。
代理的工作機制
當客戶機通過代理來請求web頁面時,指定的代理服務器會先檢查自己的緩存,如果緩存中已有客戶機需要的頁面,則直接將緩存中頁面內容反饋給客戶機;如果緩存中沒有客戶機要訪問的頁面,則由代理服務器向Internet發(fā)送訪問請求,當獲得返回的web頁面以后,將網頁數據保存到緩存中并發(fā)送給客戶機

HTTP代理的緩存加速對象主要是文字、圖像等靜態(tài)web元素。當客戶機在不同的狀態(tài)下訪問同一網站應用時,或者不同的客戶機訪問同一網站應用時,可以直接從代理服務器的緩存中獲取相應的結果。這樣就大大減少了向Internet提交重復的網站web頁面請求的過程,提高了客戶機的訪問響應速度。
由于客戶機的web訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶的真實IP地址,起到一定安全保護作用。
代理的基本類型:
1.傳統(tǒng)代理:
必須在客戶機通過瀏覽器、QQ聊天工具、下載應用軟件程序中,手動設置代理服務器的IP地址和端口。
才可以使用代理來訪問網絡應用。
傳統(tǒng)代理適用于Internet互聯網環(huán)境中。
2.透明代理:
和傳統(tǒng)代理一樣,主要區(qū)別在于客戶機不需要指定代理服務器的地址和端口號,而是通過默認路由、防火墻策略將訪問web請求的80端口重定向到代理服務器的3128端口做映射,重定向的過程對客戶機來說是透明的
透明代理使用于局域網環(huán)境中。
安裝squid服務的相關配置及命令
squid的版本:3.4.6
squid的版本:3.4.11 特性:輔助協議擴展、騰訊云SSL證書、Store-ID、交易注釋、組播DNS
一、搭建傳統(tǒng)代理服務

1.編譯安裝squid


上述編譯模塊參數含義如下:
--prefix=/usr/local/squid //安裝目錄
--sysconfdir=/etc //單獨將配置文件修改到其他目錄
--enable-arp-acl //可以在規(guī)則中直接通過客戶端MAC進行管理,防止客戶端使用IP欺騙
--enable-linux-netfilter //使用內核過濾
--enable-linux-tproxy //支持透明模式
--enable-async-io=值 //異步I/O提升存儲性能
--enable-err-language="Simplify_Chinese" //錯誤信息的顯示語言
--enable-underscore //允許URL中有下劃線
--enable-poll //使用poll()模式,提升性能
--enable-gnuregex //使用GNU正則表達式
安裝完后,創(chuàng)建鏈接文件,創(chuàng)建用戶和組

2.Squid的配置文件
Squid的配置文件位于/etc/squid.conf,更詳細的配置項請參考/etc/squid.conf.documented文件。

3.Squid的運行控制
(1)檢查配置文件語法是否正確

(2.)啟動、停止Squid
第一次啟動squid服務時,會自動初始化緩存目錄。在沒有可用的Squid服務腳本的情況下,也可以直接調用Squid程序來啟動服務,這時需要先進行初始化。


(3.)使用squid服務腳本
為了使squid服務的啟動、停止、重載等操作更加方便,并使用chkconfig和service工具來進行管理。


將編寫好的腳本受予執(zhí)行權限,然后再將squid的程序添加為系統(tǒng)服務

在squid服務器上添加一條防火墻規(guī)則,允許客戶端通過squid代理去訪問web網站

客戶機的代理配置


注意:如果客戶機是一臺Linux的話,要想使用代理服務器(如elinks網頁瀏覽器、wget下載工具),必須通過環(huán)境變量來指定代理服務器的地址、端口等信息。
傳統(tǒng)代理服務的驗證方法

(1.)查看squid訪問日志的新增記錄
tail /usr/local/squid/var/logs/access.log

通過查看squid的服務器的訪問日志,可以發(fā)現客戶機172.16.16.110去訪問web網站服務器172.16.16.172的記錄消息。
(2.)查看web訪問日志的新增記錄
tail /var/log/httpd/access_log
在被訪問的web服務器中,通過訪問日志發(fā)現來自代理服務器172.16.16.22的訪問記錄,說明當使用代理服務器時,web服務器并不知道客戶機的真實IP地址,因為實際是由代理服務器替它在訪問。
172.16.16.22的IP地址是代理服務器的地址。
二、搭建透明代理服務
在Linux網關上,構建squid代理服務為局域網客戶機去訪問Internet提供服務
在所有的局域網客戶機上,只需正確配置IP地址、默認網關即可。

1.配置squid支持透明代理
squid服務的默認配置是不支持透明代理的,因此需要修改配置文件。squid2.6以上版本的只需在http_port配置行后面加上一個transparent選項即可。

2.設置iptables的重定向策略
注意:透明代理服務中的squid服務器是構建在Linux網關主機上的,所以要設置防火墻策略將客戶機訪問外網的數據包交給squid服務器去處理,在防火墻上設置一條REDIRECT(重定向策略),其作用就是將客戶機訪問互聯網的端口映射給squid服務器的3128端口。
注意:REDIRECT也是一種數據包控制類型,只能在nat表的PREROUTING或OUTPUT鏈以及被調用的鏈中使用。

注意:此時還要開啟路由轉發(fā)功能,否則數據是過不去的?。?!

3.驗證透明代理的使用
注意:清除手動代理相關的配置

驗證結果:
在squid代理服務器日志發(fā)現,客戶機192.168.4.110訪問過目標網站172.16.16.172的記錄信息

在被訪問的web網站服務器上發(fā)現,來自代理服務器的IP地址為172.16.16.1的訪問記錄,從而隱藏了真實IP。

三、ACL訪問控制
可以針對源地址、目標地址、訪問的URL路徑、訪問的時間等各種條件進行過濾
ACL訪問控制通過以下兩個步驟來實現:其一,使用acl配置項定義需要控制的條件 其二,通過http_access配置項對已定義的列表做允許 或 拒絕 訪問的控制。
1.定義訪問控制列表
acl 列表名稱 列表類型 列表內容
常用的訪問控制列表類型:
src : 源IP地址、網段、IP地址范圍
dst : 目標IP地址、網段、主機名
port : 目標端口
dstdomain :目標域,匹配域內所有站點
time : 使用代理服務的時間段
maxcom : 每個客戶機的并發(fā)連接數
url_regex : 目標資源的URL地址,-i表示忽略大小寫
urlpath_regex :目標資源的整個URL路徑。
2.設置訪問權限
http_access allow或deny 列表名 取反時,加!符號


驗證訪問控制結果
.