Squid代理服务
1、本章结构
2、代理服务器概述
3、squid简介
Squid是一个在GNU/GPL协议下发布的既可作为代理服务器,同时也可作为Web缓存守护进程的应用软件。Squid主要是支持像HTTP和FTP那样的协议,但是对其它的协议比如HTTPS,SSL,TLS等同样也能支持。其特点是Web缓存守护进程通过从经常上访问的网站里缓存Web和DNS数据,从而让上网速度更快。Squid支持所有的主流平台,包括Linux,UNIX,微软公司的Windows和苹果公司的Mac。
每一台代理服务器上都有若干颗硬盘,每个硬盘又分割成多个分区,每一个分区又可建立多个目录,目录下存放文件,squid称这些文件为object。
查询方式:
4、代理的基本类型
①传统代理:适用于Internet,需明确指定服务端
[传统代理]
②透明代理:适用于共享上网网关,不需指定服务端
[透明代理]
透明代理的意思是客户端根本不需要知道有代理服务器的存在。
③反向代理:位于网站前端,代理web接受客户端的请求
5、使用代理的好处
①提高web访问速度
②隐藏客户机的真实IP地址
6、代理服务器概述
7、常见配置
http_port 3128 #代理服务器的端口
access_log /var/log/squid/access.log squid #squid记录的日志
cache_mem 64 MB #缓存程序所使用的空间
cache_dir ufs /var/spool/squid 100 16 256
visible_hostname proxy.wdd.com #告诉squid它的主机名,必须写
dns_testnames www.google.com www.163.com#可以测试squid是否可用
maximum_object_size 4096 KB #限制squid能够在本地缓存的文件的大小
reply_body_max_size 10 MB #用户通过squid能够下载的最大文件大小
error_directory /usr/share/squid/errors/Simplify_Chinese #中文错误信息
hierarchy_stoplist cgi-bin ? #用来强制某些特定的对象不被缓存,主要是处于安全的目的
coredump_dir /var/log/squid #定义dump的目录
refresh_partern #刷新缓存的规则
8、acl访问控制
①ACL(Access Control List,访问控制列表):根据源地址、目标URL、文件类型等定义列表。
acl 列表名称 列表类型 列表内容 …
②针对已定义的acl列表进行限制
http_access allow或deny 列表名称 …
③访问规则
如下所示:
#vim /etc/squid/squid.conf
….
acl all src 192.168.131.0/24
http_access deny all
#service squid reload
④列表类型
src | 源地址 |
dst | 目标地址 |
port | 目标端口 |
dstdomain | 目标域 |
time | 访问时间 |
maxconn | 最大并发连接数 |
url_regex | 目标URL地址 |
urlpath_regex | 整个目标URL路径 |
如下所示
#vim /etc/squid/squid.conf
…
acl all src 0.0.0.0/0.0.0.0
acl MYLAN src 192.168.1.0/24 192.168.4.0/24
acl WORKTIME time MTWHF 08:30-17:30
http_access allow MYLAN WORKTIME
http_access deny all
#service squid reload
注:HTTP_PROXY 为HTTP协议提供代理
HTTPS_PROXY 为HTTPS协议提供代理
FTP_PROXY 为FTP协议提供代理
NO_PROXY 添加不使用代理的客户机地址
二、传统代理
试验准备:主机A、B、C,IP地址分别为192.168.131.137、192.168.131.130、192.168.131.136,主机B和主机C操作系统为RHEL6.4 x86_64,为最小化安装,主机A为桌面化安装。主机A、B、C均在同一个网段,主机A作为客户端,主机B作为squid服务器,主机C作为网站服务器。
均关闭防火墙和SELINUX。
1、主机C操作
#yum –y install httpd
#service httpd start
#vim /var/www/html/index.html
I am host c
2、主机B操作
# yum -y install squid
# vim /etc/squid/squid.conf
http_port 3128
visible_hostname www.taobao.com #一定要填写
# service squid start
3、主机A操作
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
#service NetworkManager stop
#ifdown eth0
#ifup eth0
#ifconfig
3、客户端测试
①图形化测试
修改火狐浏览器设置:"Edit"—"Preferences"—"Advanced"—"Network"—"Settings"—"Manual proxy configuration",填写好代理服务器端口和3128端口,如下
点击"ok"即可。
将squid代理服务器停掉
#service squid stop
发现访问不了了
重新启动squid
#service squid start
又可以访问了
②字符界面测试
# yum -y install elinks #安装字符浏览器
#vim /etc/profile
HTTP_PROXY=http://192.168.131.130:3128
export HTTP_PROXY
# elinks 192.168.131.136
停止squid服务器
#service squid stop
在访问192.168.131.130,连接被拒绝
三、透明代理
实验准备:主机A作为内网测试机,IP地址为192.168.10.2,主机B作为代理服务器,两块网卡,第一张网卡eth0于主机A在同一个网段,IP地址为192.168.10.1;第二张网卡IP地址为200.200.200.1,主机C在同一个网段。主机C作为外网服务器,其IP地址为200.200.200.2。三台主机均清楚防火墙和禁用SLEINUX。
1、主机A操作
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
#指定网关
#service NetworkManager stop
#ifdown eth0
#ifup eth0
2、主机C操作
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
#service network restart
#yum –y install httpd
#service httpd start
#vim /var/www/html/index.html
3、主机B操作
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
#vim /etc/sysconfig/network-scripts/ifcfg-eth1
#service network restart
#vim /etc/sysctl.conf
#sysctl –p
#yum –y install squid
#vim /etc/squid/squid.conf
#service squid start
#iptables –F #清楚防火墙策略
#iptables –t nat -A PREROUTING –I eth0 –s 192.168.10.0/24 –p tcp –dport 80 –j REDIRECT –to-ports 3128
#配置防火墙策略 iptables -t nat -I PREROUTING -i 内网接口名 -s 内网网段 -p tcp --dport 80 -j REDIRECT --to-ports 3128
4、测试
①用内网测试机,访问外网
把代理服务器停掉
#service squid stop
发现无法访问了
②限制下载大小
代理服务器
#vim /etc/squid/squid.conf
reply_body_max_size 10 MB #10和MB之间是有空格的,否则报错
#service squid reload #重新加载配置文件
网站服务器
#dd if=/dev/zero of=/var/www/html/wdd.txt bs=1M count=15
客户端测试
在浏览器输入http://200.200.200.2/wdd.txt
四、反向代理
试验准备:主机A、B、C、D,主机A作为外网客户端,IP地址为200.200.200.2,主机B为代理服务器,双网卡,第一张网卡eth0与内网主机C和主机D在同一个网段,IP地址为192.168.10.1;第二张网卡与外网主机在同一网段,IP地址为200.200.200.1;主机C和主机D作为网站服务器,其IP地址分别为192.168.10.2和192.168.10.3,均关闭防火墙和SELINUX。主机A为图形化安装,主机B、C、D为最小化安装,操作系统为RHEL6.4 x86_64。
1、主机A操作
#vim /etc/sysconfig/network-ifcfg-eth0
#service NetworkManager stop
#ifdown eth0
#Ifup eth0
2、主机C操作
#vim /etc/sysconfig/network-ifcfg-eth0
#ifdown eth0
#ifup eth0
#yum -y install httpd
#service httpd start
#vim /var/www/html/index.html
I am web1
3、主机C操作
#vim /etc/sysconfig/network-ifcfg-eth0
#ifdown eth0
#ifup eth0
#yum -y install httpd
#service httpd start
#vim /var/www/html/index.html
I am web2
4、主机B操作
#vim /etc/sysconfig/network-ifcfg-eth0
#vim /etc/sysconfig/network-ifcfg-eth1
#service network restart
#yum –y install squid
#vim /etc/squid/squid.conf
acl wan src 200.200.200.0/24
http_access allow wan
http_port 200.200.200.1:80 vhost
visiable_hoatname www.taobao.com
cache_peer 192.168.10.2 parent 80 0 originserver round-robin weight=1
cache_peer 192.168.10.3 parent 80 0 originserver round-robin weight=1
#service squid start
5、测试
在外网主机输入http://200.200.200.1,按F5刷新得到如下结果
原文:http://www.cnblogs.com/fengyutech/p/4967495.html