Squid代理服务
什么是squid?
squid是一款代理的软件,通过缓存的方式为用户提供Web访问加速对用户的Web访问进行过滤控制,可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大squid代理作用:缓存加速、隐藏IP地址、应用层过滤ACL
正向代理、反向代理以及透明代理的区别和特点:
正向代理:
- 通过另一台主机去访问目的地址,提供一个更加有效的访问路径
- 可以起到一个缓冲的作用,提高网络的使用效率
- 对外有着隐藏作用
反向代理:
- 保证内网的安全,通常将反向代理作为公网访问地址
- 负载均衡,通过反向代理服务器来优化网站的负载
透明代理:
- 客户端根本不需要知道代理服务器的存在,多用于NAT转发中
- 不用设置代理就可以通过代理服务器转发到其他地址进行访问,多用于网关防火墙服务器中
squid配置文件常用参数
http_port 3128 \\监听的端口,还可以只监听一个IP http_port 192.168.0.1:3128
cache_mem 64MB \\缓存占内存大小
maximum_object_size 4096KB \\最大缓存块
reply_body_max_size 1024000 allow all \\限定下载文件大小
access_log /var/log/squid/access.log \\访问日志存放的地方
visible_hostname diaodu.renjie.com \\可见的主机名cache_dir ufs /var/spool/squid 100 16 256
ufs:缓存数据的存储格式
/var/spool/squid 缓存目录
100:缓存目录占磁盘空间大小(M)
16:缓存空间一级子目录个数
256:缓存空间二级子目录个数
cache_mgr webmaster@test.com \\定义管理员邮箱
http_access deny all \\访问控制
一、传统代理
1.服务端下载安装squid并启动服务
yum -y install squid
service squid start
查看端口使用情况是否启动成功

2.配置客户端的网卡使其不能正常上网

3.设置客户端配置代理(网不通的主机浏览器设置代理上网)

设置好代理之后就又可以正常上网(如下图)

二、透明代理
也就是在有防火墙的情况下,在网关服务器上安装squid实现代理出去上网
环境配置:
代理防火墙网关服务器:
eth0:192.168.0.21
eth1:192.168.1.1
web服务器:192.168.0.101
测试机:192.168.1.100
1.下载安装squid
yum -y install squid
2.在网关服务器上配置iptables防火墙策略
iptables -t nat -I PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
3.修改配置文件
vim /etc/squid/squid.conf
---------------------------------------------
http_port 3128 transparent
注意:修改后重启遇到下图错误

解决方法:
编辑squid.conf配置文件添加
vim /etc/squid/squid.conf
---------------------------------------------
visible_hostname squid.packet-pushers.net
然后重启服务

访问发现可以不用做SNAT策略就可以访问外面的网页

三、反向代理
环境信息:
服务端:192.168.0.101
代理端:192.168.0.105
客户端:192.168.0.100
单台服务器代理
1.服务端安装好网页
2.代理端下载安装squid
yum -y install squid
3.修改配置文件,修改和添加下面参数
vim /etc/squid/squid.conf
---------------------------------------
# And finally deny all other access to this proxy
http_access allow all
# Squid normally listens to port 3128
http_port 80 vhost vport
cache_peer 192.168.0.101 parent 80 0 no-query
cache_peer:缓存策略;
172.25.254.4(服务端IP,缓存服务端让客户端查看);
parent:没有备用的代理;
80:服务端端口为80;
0:没有备用端口;
no-query:没有备用的代理
4.启动服务用客户端访问代理服务器测试是否成功
service squid start
访问代理服务器(192.168.0.105)发现成功访问192.168.0.101

补充: 能反向代理的常用软件还有Varnish和nginx
squid访问控制
编辑squid.conf配置文件定义ACL列表
格式:acl 列表名称 列表类型 列表内容
vim /etc/squid/squid.conf
------------------------------
#对已定义的ACL列表进行限制
http_access allow deny 列表名称
#还可以允许多个局域网网段在工作时间上网
acl mylan src 192.168.100.0/24
acl worktime time MTWHF 08:30-17:30
http_access allow mylan worktime
http_access deny all
squid负载均衡
环境信息:
代理端:192.168.0.105
服务端:192.168.0.101和192.168.0.102
客户端:192.168.0.100
配置文件修改和添加下面参数
vim /etc/squid/squid.conf
---------------------------------
# And finally deny all other access to this proxy
http_access allow all
# Squid normally listens to port 3128
http_port 80 vhost vport
cache_peer 192.168.0.101 parent 80 0 no-query
ttp_port 80 vhost vport
cache_peer 192.168.0.101 parent 80 0 no-query originserver round-robin name=web1
cache_peer 192.168.0.102 parent 80 0 no-query originserver round-robin name=web2
cache_peer_domain web1 web2 www.squidtest.com
启动或重启服务测试
service squid restart
访问代理服务器(192.168.0.105)查看是否成功

点击刷新页面

页面发生跳转,说明配置成功!!!