ubuntu 使用代理伺服器 squid
一、代理伺服器
簡介:
代理伺服器是目前網路中常見的伺服器之一,它可以提供檔案 快取、複製和地址過濾等服務,充分利用有限的出口頻寬,加快 內部主機的訪問速度,也可以解決多使用者需要同時訪問外網但公 有IP地址不足的問題。同時可以作為一個防火牆,隔離內網與外 網,並且能提供監控網路和記錄傳輸資訊的功能,加強區域網的 安全性等。它的主要作用有以下幾點。 1.共享網路 2.加快訪問速度,節約通訊頻寬 3.防止內部主機受到攻擊 4.限制使用者訪問,完善網路管理
原理:
① 客戶端A向代理伺服器提出訪問Internet的請求。 ② 代理伺服器接受到請求後,首先與訪問控制列表中的訪問規則相對照
二、squid簡介
Squid是Linux和UNIX平臺下最為流行的高效能免費應用 層代理伺服器,它具有許可權管理靈活、效能高和效率快等特 點。Squid是一個由眾多在網際網路上的開發人員共同努力完 成的高效能的代理緩衝伺服器,它的具體開發是由國家網路 應用研究室(the National Laboratory for Applied Network Research)的Duane Wessels主持,由NSF出資支援的。 Squid的另一個優越性在於它使用訪問控制列表(ACL)
三、CDN簡介:
檔案下載加速服務:
四、Web快取的型別和特點:
Web快取的位置可以有三種,一是可以防止在客戶端,二是放在伺服器,三是放在客戶端與伺服器之間的某個網路節點上,這個網路節點就是web代理伺服器。
1 客戶端快取
2 代理伺服器快取
3 伺服器快取
三種典型的代理方式
1 傳統代理
2 透明代理
3 反向代理
五、配置簡介
1.檢視是否已安裝squid
Red Hat Enterprise Linux 5安裝程式預設沒有安裝Squid 服務,讀者可以使用下面的命令檢查系統是否已經安裝了 Squid服務或檢視已經安裝了何種版本。 rpm -q squid
2.Squid代理服務的基本配置
2.1 Squid主配置檔案是/etc/squid/squid.conf ,最基本的設定如下。 http_port 192.168.16.1:8080 cache_mem 64 MB cache_dir ufs /var/spool/squid 4096 16 256 cache_effective_user squid cache_effective_group squid dns_nameservers 61.144.56.101 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 192.168.16.1 cache_mgr [email protected] acl all src 0.0.0.0/0.0.0.0 http_access allow all
2.2 acl選項的格式如下: acl列表名稱 列表型別 [-i] 列表值 列表名稱:用於區分Squid的各個訪問控制列表,任何兩個訪問控制列表不能用相同的列表名。雖然列表名稱可以隨便定義,但為了避免以後不知道這條列表是幹什麼用的,應儘量使用有意義的名稱,如badurl、clientip和work time等。 列表型別:是可被Squid識別的類別。Squid支援的控制類別很多,可以通過IP地址、主機名、MAC地址和使用者/密碼認證等識別使用者,也可以通過域名、域字尾、檔案型別、IP地址、埠和URL匹配等控制使用者的訪問,還可以使用時間區間對使用者進行管理 -i選項:表示忽略列表值的大小寫,否則Squid是區分大小寫的。 列表值:針對不同的型別,列表值的內容是不同的。例如,對於型別為src或dst,列表值的內容是某臺主機的IP地址或子網地址;對於型別為time,列表值的內容是時間;對於型別為srcdomain和dstdomain,列表值的內容是DNS域名。
型別選項
2.3 http_access 的使用
Squid會針對客戶HTTP請求檢查http_access規則, 定義訪問控制列表後,就使用http_access選項根據訪 問控制列表允許或禁止訪問了。 該選項的基本格式為: http_access [allow | deny] 訪問控制列表名稱 ? [allow | deny]:定義允許(allow)或禁止(deny)訪問控制列表定義的內容。 ? 訪問控制列表名稱:需要http_access控制的ACL名稱
2.4 初始化Squid
1.建立Squid使用硬碟緩衝區的目錄結構 /usr/sbin/squid –z 2.設定Squid錯誤提示資訊為中文 在Squid的主配置檔案/etc/squid/squid.conf中新增下 列語句,並使用命令“/etc/init.d/squid reload”重新載 入配置檔案 error_directory /usr/share/squid/errors/Simplify_Chinese
2.5啟動和停止代理伺服器
1.啟動代理服務 /etc/init.d/squid start 2.停止代理服務 /etc/init.d/squid stop 3.重新啟動代理服務 /etc/init.d/squid restart 4.重新載入配置檔案 /etc/rc.d/init.d/squid reload
六、具體案例
案例一:傳統代理:
介紹:
代理伺服器(squid):Red Hat Linux 5.4
(eth1 :Host-only 到vmware1
eth0: Bridged 到本地連線)
內網主機:windows xp (虛擬機器Host-only)
實機(windows 7)通過無線路由器直接上網!
1.用setup配網路引數:
2. 安裝squid
[[email protected] ~]# mkdir /mnt/cdrom
[[email protected] ~]# mount /dev/cdrom /mnt/cdrom mount: block device /dev/cdrom is write-protected, mounting read-only
[[email protected] Server]# rpm -ql squid |less
檢視註釋語句:
/etc/httpd/conf.d/squid.conf //和Apache的代理捆綁在一起
/etc/pam.d/squid //支援pam
/etc/rc.d/init.d/squid //獨立守護程序
/etc/squid/squid.conf // squid的主配置檔案
[[email protected] Server]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$" acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http 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 localhost http_access deny all 預設拒絕所有 icp_access allow all http_port 3128 代理伺服器的監聽埠,最好在前面寫上具體ip地址, hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log squid acl QUERY urlpath_regex cgi-bin \? cache deny QUERY refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl apache rep_header Server ^Apache broken_vary_encoding allow apache coredump_dir /var/spool/squid
3.測試機配置:
3.1 配ip
走代理,dns也不用配置(無需地址解析)
3.2 代理設定
IE 右擊屬性----連線-----區域網(LAN)設定
3.3 參考文件:
3.4 主檔案配置:
[[email protected] Server]# ll /var/spool/squid/ total 0
說明:squid還沒有被初始化!
[[email protected] Server]# vim /etc/squid/squid.conf
3.5 支援代理的軟體
瀏覽器支援代理、聊天工具(qq支援代理)、下載工具(如:網路螞蟻):
登陸時設定:
3.6 客戶機訪問外網測試:
重新整理頁面
[[email protected] Server]# tail -f /var/log/squid/ access.log cache.log squid.out store.log [[email protected] Server]# tail -f /var/log/squid/access.log
t_search_word_style/piddomain.js - DIRECT/220.181.124.108 application/x-javascript 1346398516.767 17157 192.168.2.22 TCP_MISS/000 0 GET http://www.gougou.com/js/input-ac.js - DIRECT/www.gougou.com - 1346398516.767 17188 192.168.2.22 TCP_HIT/000 0 GET http://www.gougou.com/ - DIRECT/www.gougou.com -
修改squid.conf 檔案,避免其他人使用此代理伺服器訪問外網!
型別參考:
4.代理伺服器安全應用測試:
4.1.拒絕某個人:禁止IP地址為192.168.2.22的客戶機上網。
允許其他人:
[[email protected] Server]# service squid restart
測試:日誌監視:
[[email protected] ~]# tail -f /var/log/squid/access.log
1346401928.431 2 192.168.2.22 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html 1346401938.105 1 192.168.2.22 TCP_DENIED/403 1417 GET http://www.google.com/ - NONE/- text/html
換了個ip,就能正常上網!(參考日誌資訊)
1346402102.080 897 192.168.2.21 TCP_MISS/302 934 GET http://www.google.com/ - DIRECT/74.125.71.106 text/html 1346402106.243 4162 192.168.2.21 TCP_MISS/302 648 GET http://www.google.com.hk/url? - DIRECT/74.125.71.199 text/html 1346402109.660 3416 192.168.2.21 TCP_MISS/200 169690 GET http://www.google.com.hk/ - DIRECT/74.125.71.199 text/html 1346402113.359 3596 192.168.2.21 TCP_MISS/404 1310 GET http://www.google.com.hk/compressiontest/gzip.html - DIRECT/74.125.71.199 text/html
4.2 拒絕某個網段的人:禁止192.168.2.0這個子網裡所有的客戶機上網。
任選該網段的三個ip段作為測試:
1346402829.564 4 192.168.2.21 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html 1346402881.349 2 192.168.2.1 TCP_DENIED/403 1417 GET http://www.gougou.com/ - NONE/- text/html 1346402926.390 2 192.168.2.254 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html
4.3 拒絕訪問某個ip的網站 禁止使用者訪問IP地址為119.75.218.77的網站
主配置檔案的590行!
以上證明:拒絕ip,卻拒絕不了訪問該網站,因為一個伺服器可對應於多個ip
4.4 拒絕訪問帶某個域名的網站 :禁止使用者訪問域名包含有sina.com的網站。
日誌資訊:
1346407353.802 12 192.168.2.22 TCP_DENIED/403 1413 GET http://www.sina.com/ - NONE/- text/html 1346407365.210 3 192.168.2.22 TCP_DENIED/403 1415 GET http://news.sina.com/ - NONE/- text/html
4.5 禁止使用者訪問域名包含有sex關鍵字的URL。
4.6 禁止使用者訪問域名為 www.163.com的網站 acl baddomain1 dstdomain -i www.163.com http_access deny baddomain1
4.7 限制IP地址為192.168.2.100的客戶機併發最大連線數為5。 acl clientip1 src 192.168.2.100 acl conn5 maxconn 5 http_access deny client1 conn1 4.8 禁止192.168.2.0這個子網裡所有的客戶機在週一到週五的9:00到18:00上網。 acl clientnet1 src 192.168.2.0/255.255.255.0 acl worktime time MTWHF 9:00-18:00 http_access deny clientnet1 worktime
下班時間可以正常上網:
[[email protected] ~]# date Fri Aug 31 18:37:49 CST 2012
調整為上班時間:
[[email protected] ~]# date 083112302012 Fri Aug 31 12:30:00 CST 2012
日誌資訊:
1346387408.908 1 192.168.2.22 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html
4.9 禁止客戶機下載*.mp3、*.exe、*.zip和*.rar型別的檔案。
測試:迅雷中:
禁止的是用下載工具下載如(迅雷)如果網頁上直接儲存,可以下載! 4.10 禁止QQ通過Squid代理上網。 acl qq url_regex -i tencent.com http_access deny qq
正常情況下,qq工具只要設定代理方式中的任意一種也可登陸qq
qq已無法正常登陸!