Squid代理服务器
Squid代理服务器
什么是squid?
squid是一款代理的软件,通过缓存的方式为用户提供Web访问加速对用户的Web访问进行过滤控制,可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大
squid代理作用:缓存加速、隐藏IP地址、应用层过滤ACL
Squid主要组成部分(默认情况)
服务名:squid
主程序:/usr/sbin/squid
主配置文件位置:/etc/squid/squid.conf
监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log
正向代理、反向代理以及透明代理的区别和特点:
正向代理:1.通过另一台主机去访问目的地址,提供一个更加有效的访问路径
2.可以起到一个缓冲的作用,提高网络的使用效率
3.对外有着隐藏作用
反向代理:1.保证内网的安全,通常将反向代理作为公网访问地址
2.负载均衡,通过反向代理服务器来优化网站的负载
透明代理:1.客户端根本不需要知道代理服务器的存在,多用于NAT转发中
2.不用设置代理就可以通过代理服务器转发到其他地址进行访问,多用于网关防火墙服务器中
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 aaa@qq.com \\定义管理员邮箱
http_access deny all \\访问控制
传统代理
1.服务端下载安装squid并启动服务
yum -y install squid
service squid start
查看端口使用情况是否启动成功
2.配置客户端的网卡使其不能正常上网
3.设置客户端配置代理(网不通的主机浏览器设置代理上网)
设置好代理之后就又可以正常上网
补充:编译安装步骤
tar zxf squid-3.4.6.tar.gz
cd squid-3.4.6/
./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-poll --enable-gnuregex
--prefix=/usr/local/squid:安装目录
--sysconfdir=/etc:单独将配置文件修改到其他目录
--enable-arp-ad:可以在规则中设置为直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter:使用内核过滤
--enable-linue-tproxy:支持透明模式
--enable-async-io=值:异步I/O,提升存储性能,相当于—enable-pthreads --enable-storeio=ufs,aufs // --with-pthreads --with-aufs-thread=值
--enable-err-language="Simplify_Chinese":错误信息的显示语言
--enable-underscore:允许URL中有下划线
--enable-poll:使用Poll()模式,提升性能
--enable-gnuregex:使用GNU正则表达式
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var
路径优化:ln -s /usr/local/squid/sbin/* /usr/local/sbin/
透明代理
也就是在有防火墙的情况下,在网关服务器上安装squid实现代理出去上网
代理防火墙网关服务器:eth0:192.168.0.21
eth1:192.168.1.1
web服务器:192.168.1.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策略就可以访问外面的网页
反向代理(cdn加速)
服务端: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
http_access allow all
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
补充:能反向代理的常用软件还有Varnish和nginx
squid的访问控制
编辑squid.conf配置文件定义ACL列表
vim /etc/squid/squid.conf
格式:acl 列表名称 列表类型 列表内容
对已定义的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
http_access allow all
http_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
启动或重启服务测试
点击刷新更换页面