liunx 下巧妙使用代理服务器(squid)
一、代理服務器
簡介:
? 代理服務器是目前網絡中常見的服務器之一,它可以提供文件
緩存、復制和地址過濾等服務,充分利用有限的出口帶寬,加快
內部主機的訪問速度,也可以解決多用戶需要同時訪問外網但公
有IP地址不足的問題。同時可以作為一個防火墻,隔離內網與外
網,并且能提供監控網絡和記錄傳輸信息的功能,加強局域網的
安全性等。它的主要作用有以下幾點。
1.共享網絡
2.加快訪問速度,節約通信帶寬
3.防止內部主機受到***
4.限制用戶訪問,完善網絡管理
原理:?
① 客戶端A向代理服務器提出訪問Internet的請求。
② 代理服務器接受到請求后,首先與訪問控制列表中的訪問規則相對照,如果滿足規則,則在緩存中查找是否存在需要的信息。
③ 如果緩存中存在客戶端A需要的信息,則將信息傳送給客戶端。如果不存在,代理服務器就代替客戶端向Internet上的主機請求指定的信息。
④ Internet上的主機將代理服務器的請求信息發送到代理服務器中,同時代理服務器會將信息存入緩存中。
⑤ 代理服務器將Internet上主機的回應信息傳送給客戶端A。
⑥ 客戶端B向代理服務器提出相同的請求。
⑦ 代理服務器也首先與訪問控制列表中的訪問規則相對照。
⑧ 如果滿足規則,則將緩存中的信息傳送給客戶端B。
二、squid簡介??
? Squid是Linux和UNIX平臺下最為流行的高性能免費應用
層代理服務器,它具有權限管理靈活、性能高和效率快等特
點。Squid是一個由眾多在互聯網上的開發人員共同努力完
成的高性能的代理緩沖服務器,它的具體開發是由國家網絡
應用研究室(the National Laboratory for Applied Network
Research)的Duane Wessels主持,由NSF出資支持的。
??? Squid的另一個優越性在于它使用訪問控制列表(ACL)
和訪問權限列表(ARL)進行權限管理和內容過濾。訪問控
制清單和訪問權限清單通過阻止特定的網絡連接來減少潛在
的Internet非法連接,可以使用這些清單來確保內部網的主
機無法訪問有威脅的或不適宜的站點。
三、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 lindenstar@163.com
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
[root@gjp99 ~]# mkdir /mnt/cdrom
[root@gjp99 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@gjp99 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的主配置文件
[root@gjp99 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 主文件配置:
[root@gjp99 Server]# ll /var/spool/squid/
total 0
說明:squid還沒有被初始化!
[root@gjp99 Server]# vim /etc/squid/squid.conf
修改成:
3.5 支持代理的軟件
瀏覽器支持代理、聊天工具(qq支持代理)、下載工具(如:網絡螞蟻):
登陸時設置:
?
?
3.6 客戶機訪問外網測試:
該為允許所有!
?
刷新頁面
?
[root@gjp99 Server]# tail -f /var/log/squid/
access.log? cache.log?? squid.out?? store.log??
[root@gjp99 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 文件,避免其他人使用此代理服務器訪問外網!
squid.conf?
?
類型參考:
4.代理服務器安全應用測試:
4.1.拒絕某個人:禁止IP地址為192.168.2.22的客戶機上網。
允許其他人:
[root@gjp99 Server]# service squid restart
測試:日志監視:
[root@gjp99 ~]# 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
下班時間可以正常上網:
[root@gjp99 ~]# date
Fri Aug 31 18:37:49 CST 2012
調整為上班時間:
[root@gjp99 ~]# 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已無法正常登陸!
轉載于:https://blog.51cto.com/guojiping/978839
總結
以上是生活随笔為你收集整理的liunx 下巧妙使用代理服务器(squid)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Socket编程实践(9) --套接字I
- 下一篇: 未来科技风口:ABCD