squid
Squidcache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web緩存伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器緩存相關請求來提高Web伺服器的速度,到為一組人共享網絡資源而緩存網際網路,域名系統和其他網絡搜尋,到通過過濾流量幫助網絡安全,到區域網路通過代理上網。(70年代出現)
nginx
Nginx("enginex")是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。Nginx是由IgorSysoev為俄羅斯通路量第二的Rambler.ru站點開發的,第一個公開版本0.1.0釋出于2004年10月4日。其将源代碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。2011年6月1日,nginx1.0.4釋出。Nginx作為負載均衡伺服器:Nginx既可以在内部直接支援Rails和PHP程式對外進行服務,也可以支援作為HTTP代理伺服器對外進行服務。Nginx采用C進行編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好很多。
varnish
Varnish是一款高性能的開源HTTP加速器,挪威最大的線上報紙VerdensGang使用3台Varnish代替了原來的12台Squid,性能比以前更好(反向代理加速連接配接數目多的多緩存可以放在磁盤,也可以放在記憶體中)
Varnish與一般伺服器軟體類似,分為master(management)程序和child(worker,主要做cache的工作)程序。master程序讀入指令,進行一些初始化,然後fork并監控child程序。child程序配置設定若幹線程進行工作,主要包括一些管理線程和很多woker線程
Squid代理伺服器(正向代理,反向代理安全控制)
正向
Lan-----------interner
1.nat改變頭部資訊同一個資料包改變來源位址
層次網絡層
安全控制網絡傳輸層
網絡層資訊位址(來源目标)
傳輸層協定(tcpudp)端口(源端口目标端口)标志位(tcpsynackfinrst)
隻能對網絡進行控制,
支援應用多nat好用
2.代理伺服器不改變資料包的頭部資訊
Squid3128端口
代理伺服器是有緩存
安全控制層次-------------》應用層isa(internetsecurityaccelerate)
Squid是一款軟體
安全控制網絡傳輸層應用層
網絡層資訊位址來源目标
傳輸層協定(tcpudp)端口号碼(源端口目标端口)标志位(tcpsynackfinrst)
應用層協定(httpftppopsmtp…..p2p)内容(url域名)
---------------》應用層網關代理伺服器防火牆
----支援應用少----------》缺陷httpftpmail
代理伺服器安全
結合nat+代理伺服器
安裝squid
環境:squid-2.6.STABLE21-3.el5.i386.rpm
步驟:
1.rpm–ivhsquid-2.6.STABLE21-3.el5.i386.rpm
2.vim/etc/squid/squid.confsquid的配置檔案
圖1
<a href="http://blog.51cto.com/attachment/201309/151410898.png" target="_blank"></a>
伺服器端口是3128
Cache_dirufs(緩存資料的存儲格式)/var/spool/squid100(為緩存目錄配置設定的磁盤空間)16(緩存空間的一級目錄個數)256(緩存目錄的二級子目錄個數)通過二叉樹來查找
Cache_mem64MB來存放描述符
Maximum_object_size4096KB最大的緩存對象是4096KB
Reply_body_max_size10240000allowall應答給客戶不能超出1G
Access_log/var/log/squid/access.logsquid日志存放位置
Visible_hostnameproxy.test.com傳回給使用者出錯資訊的頁面
squid–kparse測試squid的文法
tail–f/var/log/squid/access.logsquid的日志檔案
TCP_MISS緩存沒有成為丢失
TCP_DENIED拒絕
TCP_HIT緩存存在的命中
安全控制:
在這裡可以應用正規表達式
元素acl元素名稱類型參數
aclaclnamearpmac-address...(xx:xx:xx:xx:xx:xxnotation)可以基于mac來控制
在源碼安裝的時候需要加上--enable-arp-acl,想用得需要源碼安裝才可以使用.
aclaclnamesrcip-address/netmask...(clientsIPaddress)
aclaclnamesrcaddr1-addr2/netmask...(rangeofaddresses)
aclaclnamedstip-address/netmask...(URLhost'sIPaddress)
aclaclnamemyipip-address/netmask...(localsocketIPaddress)
時間限制:
aclaclnametime[day-abbrevs][h1:m1-h2:m2]
h1:m1mustbelessthanh2:m2其實時間必須小于結束時間
aclworktimetime8:00-18:00
aclofftimetime18:01-23.5900:00-07:59或者!8:00-18:00限制使用者時間上網
aclbadpcsrc192.168.2.200/255.255.255.255限制192.168.2.200使用者不能上網
aclbadpcsrc192.168.2.200-192.168.2.210/255.255.255.255限制這個這個網段不能上網
位址控制
aclbadsiturl_regex–Ihttp://www.sina.com.cn拒絕這個網站位址
aclbadsiturl_regex–Ihttp://*.sina.com.cn
内容過濾
aclbadcontenturlpath_regex–I\.jpg$
aclsinadstdomain.sina.com.cn基于域名來進行過濾
aclsinadstdom_regex–I.*sina.*表達式引用
aclaclnamebrowser[-i]regexp...限制用戶端的浏覽器器
政策:http_access動作政策元素
http_accessdenybadpc
http_accessdenybadpcwortime
http_accessdenybadsit
http_accessdenybadcontent
http_accessdenysina
透明代理
公司的内部網絡,在連接配接internet的時候可以自動配置代理伺服器的位址及NAT轉換出去,稱為透明代理.
1.端口重定向-------》代理端口3128
3.DNS解析--------》snat
Prerouting位址前的轉換dnat
Postrouting位址後的轉換snat
首先做nat轉換
1.vim/etc/sysctl.conf
2.圖2
3.iptables-tnat-RPOSTROUTING1-s192.168.2.0/24-pudp--dport53-oeht1-jSNAT--to192.168.1.4當使用者通過192.168.2.0網絡到了伺服器之後,準備把包發出去,需要把源位址更換成192.168.1.4
4.iptables-tnat-L-v--line-number檢視資料包是否有比對的資訊
5.iptables-tnat-APREROUTING-s192.168.2.0/24-ptcp--dport80-jREDIRECT--to-port3128重定向到3128端口
6.vim/etc/squid/squid.conf
7.圖3
8.squid–kparse
9.servicesquidrestart
反向代理
1.用戶端無法去通路你的3128,是以需要改變成80端口,你也可以加入那個端口的位址也可以
2.vhost
<a href="http://blog.51cto.com/attachment/201309/160946203.png" target="_blank"></a>
3.假如後方有許多伺服器,在這裡我們隻需要把這幾行重新複制一下就可以,在這裡也可以使用weight來設定它的權重
4.serversquidstart
本文轉自 only223wym 51CTO部落格,原文連結:http://blog.51cto.com/ymchaofeng/1297813,如需轉載請自行聯系原作者