Squid 代理服務器配置實例
1. 代理服務器工做原理
(1) 客戶端發出資源的請求,發送到代理服務器
(2) 代理服務器查看緩存
(3) 若代理服務器中存在則網頁的緩存,則發送給客戶廟
(4) 若代理服務器沒有存在則網頁的緩存,則代理服務器將請求發送給遠程的主機
(5) 遠程主機發送資源,而且代理服務器會保存此資源的緩存
(6) 代理服務器將此資源發送給客戶端
2.代理服務器優勢
(1) 經過緩存增長訪問速度
(2) 能夠充當防火牆,提升網絡的安全性
(3) 對用戶進行訪問控制,方便對用戶的管理
(4) 節省IP開銷
3.代理服務器的分類
(1) 標準代理服務器
標準代理服務器是常被用於緩存靜態的網頁,它的使用要在客戶端的瀏覽器中進行代理設置,並且客戶端要知道代理的存在.
(2) 透明代理服務器
透明代理服務器通常爲內網的計算機提供外網的訪問服務不須要客戶端作任何測試,當客戶端的數據包到達出口路由器時,能夠被路由器重定向到本地代理服務器的代理商端口,而後由本地代理服務器對數據進行處理
(3) 反向代理服務器
反向代理服務器是可以代理外部網絡上的主機訪問內部網絡,它主機爲一個或幾個本地網站作緩存,以加快web的訪問速度.
4.linux下代理服務器軟件:squid
squid是一種快速的代理緩存程序,它扮演着一種中介的角色,從瀏覽器等客戶端進程接受請求,並把它傳遞給請求的URL所指向 的Internet服務器,而後把返回的數據傳給客戶端,同時存儲一份副本在磁盤緩存中。
1>> squid的安裝
[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
Preparing... ########################################### [100%]
1:squid ########################################### [100%]
2>>squid的配置文件分類
主配置文件 : /etc/squid/squid.conf
緩存目錄 : /var/spool/squid
主應用文件 : /usr/sbin/squid
日誌文件 : /var/log/squid/access.log
3>>squid的開啓與關閉
[root@localhost squid]# service squid start|stop|restart
Squid配置實例
實例一:正向代理服務器的配置
1.設備
虛擬機 : virtualbox
代理服務器主機: redhat5.4
橋接 eth0 : 192.168.1.188
eth1 : 192.168.1.189
測試客戶端 : windows2003
eth0 : 192.168.1.190
2。要求
能夠上外網的時間: 9:00-17:00
防止訪問網站: www.sina.com.cn
凡是包含"qq"字符的網頁都不能訪問
阻止源網段192.168.1.200/32訪問外網
3.拓撲圖
4. 配置主配置文件
[root@localhost ~]# cd /etc/squid
[root@localhost squid]# vim squid.conf
http_port 3128
cache_dir ufs /var/spool/squid 100 16 256
cache_mem 8 MB
cache_mgr root@root
http_access allow all
acl badclientip src 192.168.1.200/32
acl worktime time MTWFH 9:00-17:00
acl badurl1 url_regex -i www.sina.com.cn
acl badurl2 url_regex -i qq
http_access deny worktime
http_access deny badclientip
http_access deny badurl1
http_access deny badurl2
注:
http_port 3128 //配置代理端口爲3128
cache_dir ufs /var/spool/squid 100 16 256 //使用硬盤看成緩衝區,ufs指緩存區的存儲類型,/var/spool/squid是硬盤上的存放目錄 100表明緩存空間是100M,16與256分別表明第一級子目錄及第二級子目錄.
cache_mem 8 MB //定義高速緩存,即便用多少內存做爲代理服務器的緩存,通常爲物理內存的1/3
cache_mgr root@root //設置管理員的e-mail地址
http_access allow all //在http_access deny all前面加上這一句,要否則的話,全部的用戶都是被拒絕的
acl badclientip src 192.168.1.200/32 //拒絕此網段登錄
acl worktime time MTWFH 9:00-17:00 //拒絕此時間登錄
acl badurl1 url_regex -i www.sina.com.cn //拒絕登錄此網站
acl badurl2 url_regex -i qq //拒絕登錄域名含有此字符的網站
http_access deny worktime //下面的都是對定義ACL進行拒絕操做
http_access deny badclientip
http_access deny badurl1
http_access deny badurl2
5 測試
測試部分就再也不詳細說明,只要符合以上各拒絕類型的網站或來源IP都會出現如下狀況
實例二:透明代理服務器的配置
拓撲圖
1.設備
虛擬機 : virtualbox
代理服務器主機而且做爲web服務器: redhat5.4
橋接 eth0 : 192.168.1.188
vnet1 eth1 : 192.168.2.10 (內網)
測試客戶端 : windows2003
vnet1 eth0 : 192.168.2.11 (內網)
2.配置
對於透明代理服務器的配置與正向代理服務器的配置很是類似,咱們只須要聲明此服務器爲透明代理服務器便可
1.修改http_port 3128 爲
http_port 3128 transparent
其他的能夠按照正向代理服務器來配置
2.對防火牆進行配置,把從網絡接口收到的TCP協議目的端口是80的數據包重定向到本機的3128端口,命令以下:
[root@www squid]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
3.配置透明服務器具有轉發功能
[root@www squid]# echo 1 > /proc/sys/net/ipv4/ip_forward
4.測試
配置測試機的IP地址,將客戶端的網關設置爲透明服務器的對內網的ip地址,而且將瀏覽器中的代理配置去掉
開始測試
實例三:反向代理服務器的配置
拓撲圖
1.設備
虛擬機 : virtualbox
代理服務器主機: redhat5.4
橋接 eth0 : 192.168.1.188 (內網)
vnet1 eth1 : 192.168.2.12 (外網)
web服務器 centos6.2
eth0 : 192.168.1.27(內網)
測試客戶端 : windows2003
vnet1 eth0 : 192.168.2.11 (外網)
2.配置
測試仍是創建在正向代理服務器之上,咱們只須要修改必定的屬性便可
修改以下
將 http_port 3128
修改成以下
http_port 80 vhost vport
cache_peer 192.168.1.27 parent 80 0 originserver
添加以下acl
acl webserver dst 192.168.2.12
http_access allow webserver
將http_access allow all
修改成
http_access deny all
3.測試
注意:若是前面作過透明代理的話,而且透明代理與web服務器在同一臺機器上,在測試反向代理時會出現出現的信息的不正確,最好是更換一下鏈接內網的ip地址。如個人從2.10更換到2.12。