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    \\访问控制

TOC

一、传统代理

1.服务端下载安装squid并启动服务

yum -y install squid
service squid start

查看端口使用情况是否启动成功
squid.001
2.配置客户端的网卡使其不能正常上网
squid.002
3.设置客户端配置代理(网不通的主机浏览器设置代理上网)
squid.003
设置好代理之后就又可以正常上网(如下图)
squid.004

二、透明代理

也就是在有防火墙的情况下,在网关服务器上安装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.005
解决方法:
编辑squid.conf配置文件添加

vim /etc/squid/squid.conf
---------------------------------------------
visible_hostname squid.packet-pushers.net

然后重启服务
squid.006
访问发现可以不用做SNAT策略就可以访问外面的网页
squid.007

三、反向代理

环境信息:
服务端: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
squid.008
补充: 能反向代理的常用软件还有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)查看是否成功
squid.009
点击刷新页面
squid.010
页面发生跳转,说明配置成功!!!