代理服務器工做原理:當客戶機經過代理請求web頁面時,指定的代理服務器首先檢查本地的緩存。若是緩存中存在客戶機所請求的頁面,代理服務器會將頁面直接反饋到客戶機;若是沒有,代理服務器會將請求發送給web服務器,web服務器響應後,代理服務器會將響應的頁面保存到本地緩存中,而後發給客戶機。因爲web請求實際有代理服務器來代替完成,從而起到了隱藏客戶機的IP地址的做用。
代理服務器分爲傳統代理和透明代理,如今通常以透明代理使用居多。傳統代理擁有的功能透明代理都有。二者的區別在於透明代理無需在客戶機上指定代理服務器的地址、端口,而是透過防火牆策略將web訪問重定向,交給代理服務器處理,整個過程客戶機並不須要參與,對於客戶機的用戶來講是「透明」的。須要注意,使用透明代理,dns請求是優先發給dns服務器的。linux
操做部分
拓撲:web
一、首先在web服務器上開啓httpd服務,併爲80端口(網站)開啓例外,容許入站鏈接。
二、掛載squid的安裝盤,解壓到/usr/src下,進入/usr/src/squid-.tar.gz中。
三、配置squid。
##各配置項含義:
--prefix:安裝目錄
--sysconfdir:配置文件目錄
--enable-arp-acl:設置經過MAC地質管理防止arp欺騙
--enable-linux-netfilter:使用內和過濾
--enable-linux-tproxy:支持透明模式
--enable-err-language:錯誤信息顯示語言的類型
--enable-underscore:容許url中使用下劃線
--enable-poll:poll模式,性能優化
--enable-gnuregex:使用GNU正則表達式
四、make編譯和make install安裝
五、優化執行路徑,並建立squid用戶,設置屬主:屬組。
六、在/etc/init.d/下編輯一個squid的服務腳本,用來控制squid服務(vim /etc/init.d/squid)。
七、爲該squid服務腳本添加執行權限,並添加爲系統服務。
八、編輯squid的配置文件,vim /etc/squid.conf
##這裏需注意visible_hostname爲主機名選項,須要填寫squid服務器的主機名。最後一行前面自己有「#」,直接刪除「#」便可。http_access allow all須要添加在deny all前面,先生效。
九、在本次試驗中,咱們將squid服務器做爲代理服務器的同時,也將其做爲網管使用。經過修改/etc/sysctl.conf,開啓路由功能。將「net.ipv4.ip_forward = 0」改成「= 1」,執行sysctl -p使配置生效。
十、配置防火牆重定向。該策略能夠將80端口的請求轉給3128端口
十一、配置SNAT實現內網接入internet互聯網。
十二、配置iptables策略容許3128端口的入站鏈接。
1三、啓動squid服務。下面前三個都須要依次敲。最後一個爲查看squid的進程,確認是否啓動。
1四、地址配置,內網客戶機192.168.1.2並配置網關爲192.168.1.1;外網網站202.1.1.2;squid的eth0網卡192.168.1.1,eth1網卡202.1.1.1。
1五、測試。使用內網的客戶機登錄202.1.1.2網站。成功登錄網站。
1六、驗證網頁請求是否通過代理服務器。在網站服務器上查看接入的日誌。能夠看到請求地址爲202.1.1.1,也就是squid的外網網卡地址,而不是客戶機。
1七、另外,squid代理還提供了ACL控制列表。經過修改/etc/squid.conf文件進行ACL訪問控制列表的定義。首先將上面作的容許全部的配置刪除或者改成註釋。
1八、定義ACL,以下圖
選項解析:
acl safeport port 80 443:定義端口爲80、443
acl mylan src 192.168.1.0/24:定義源地址池爲192.168.1.0網段
acl mediafile urlpath_regex -i .mp4$ .avi$:定義以mp四、avi結尾的url路徑
acl working time MWTHF 08:30-16:00定義squid工做時間
http access allow 容許以上定義項
1九、第一條限定下載文件的大小;第二條限定最大緩存塊。
正則表達式