设为首页 收藏本站
查看: 1746|回复: 0

[经验分享] Squid(Version 3.1.23)

[复制链接]

尚未签到

发表于 2018-12-27 06:27:15 | 显示全部楼层 |阅读模式
一、安装squid
Yum install squid
squid -v  查看版本以及编译参数

二、配置squid

Vim /etc/squid/squid.conf

1、正向代理的基础配置(代理上网+缓存)


1.1 squid服务器配置(保证该主机能够连接互联网)
http_port 192.168.1.121:3128          #设置squid代理服务器
cache_mem 64 MB                    
cache_dir ufs /data/cache1 4096 16 256  #缓存目录设置4GB缓存空间,16个目录,256个子目录
cache_effective_user squid              #设置运行squid的用户
cache_effective_group squid             #设置运行squid组的用户
dns_nameservers 8.8.8.8      #设置互联网dns解析                                                         
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.1.121        
#定义运行 Squid 的主机名称,当访问发生错误时,该选项会显示在错误提示网页中
#cache_mgr squidtest888@163.com
http_access allow all

mkdir  /data/cache  #创建缓存目录
chown -R squid:squid /data/cache1  #更改权限
squid -z  #初始化缓存目录
/etc/init.d/squid start
squid  -kcheck #可以检测配置文件是否有错
squid -k rec #可以重新加载配置
service squid restart #重启squid服务

1.2 客户端设置
局域网代理设置

测试方式:多次打开同一个网站,查看其速度访问速度,也可通过如下的命令,查看squid缓存的信息


[root@mysql ~]# find /data/cache1/ -type f     
/data/cache1/00/00/0000001C
/data/cache1/00/00/0000000B
/data/cache1/00/00/00000029
/data/cache1/00/00/00000011
/data/cache1/00/00/00000012

2、透明代理(代理上网+缓存)
考虑到正向代理要修改浏览器的设置,在实际应用中,肯定应用比较麻烦,所以接下来就通过“透明代理”完成这样的工作。
原理:简单点说,就是把所以得数据发送到squid上,让squid完成数据的处理和转发,并完成数据缓存等工作。测试环境(squid服务器可通过192.168.1.121连接互联网)


2.1 完成基础网络配置

客户端的配置如下:
IPADDR=172.16.1.2
NETMASK=255.255.255.0
GATEWAY=172.16.1.1         #注意网关指向squid服务器的地址172.16.1.1
DNS1=8.8.8.8

Squid服务器配置
eth3接口:
IPADDR=172.16.1.1
NETMASK=255.255.255.0
eth2接口:
IPADDR=192.168.1.121
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
打开转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
启动nat功能
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

客户端可以正常上网
[root@web1 sysconfig]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=53 time=46.9 ms
64 bytes from 61.135.169.125: icmp_seq=2 ttl=53 time=51.4 ms
64 bytes from 61.135.169.125: icmp_seq=3 ttl=53 time=48.1 ms
64 bytes from 61.135.169.125: icmp_seq=4 ttl=53 time=48.0 ms

2.2 squid的配置
根据2.1的配置,只需修改如下内容
http_port 172.16.1.1:3128 transparent

执行squid -k rec
重新启动squid/etc/init.d/squid restart
接下来的一般就比较关键,让所有访问80端口的服务都转到3218端口
iptables -t nat -A PREROUTING -i eth3 -p tcp -s 172.16.1.0/24 --dport 80 -j REDIRECT --to-ports 3128

[root@mysqlcache1]#
curl -I http://www.china.com.cn/cppcc/2015-09/18/content_36622331.htm



  
注意:Curl -I 测试的时候,如果只测试www.baidu.com或者www.qq.com域名是看不到hit效果的

3、反向代理的基础配置
反向代理,squid后面是服务器,服务器返回给用户数据需要走squid,在网站架构中,主要用来搭建网站静态项(图片、html、流媒体、js、css等)的缓存服务器



3.1 squid的配置
http_port 192.168.1.121:80 accel vhost vport
cache_peer 172.16.1.2 parent 80 0 originserver name=web1
cache_peer_domain web1 www.web1.com
cache_mem 64 MB
cache_dir ufs /data/cache1 4096 16 256
cache_effective_user squid
cache_effective_group squid                                    
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.1.121
#cache_mgr squidtest888@163.com
http_access allow all

说明:cache_peer设置。表示从客户端过来的请求,如果是 www.web1.com,则SquidServer 172.16.1.2的端口80发送请求,如果有多台服务器可以设置多行,name表示设置cached_peer的别名


3.2 客户端配置
设置DNS解析(注意,此时web服务器的IP地址为如上图所示的外网地址)
192.168.1.121 www.web1.com
访问www.web1.com,其测试结果如下(通过浏览器查看):


squid服务器上可以查看命中率,如下所示
查看缓存命中率
使用命令:  squidclient -h host -p port mgr:info
比如:  /usr/local/squid/bin/squidclient -h 127.0.0.1 -p 8080 mgr:info


删除缓存:http://www.aminglinux.com/bbs/thread-5297-1-1.html

故障汇总: http://www.aminglinux.com/bbs/thread-148-1-1.html

三、访问控制列表
1、禁止 192.168.1.0使用代理上网
acl badclientnet src 192.168.1.0/24
http_access deny badclientip
## 顺序很重要,把想拒绝的放前面,然后重新加载配置文件,当 1.110 访问网页时则提示拒绝访问

2、禁止访问 IP 61.135.169.121 的网站
acl badwebserver dst 61.135.169.121
http_access deny badwebserver
## 这里其实直接写成 baidu.com www.baidu.com 也是可以的

3、禁止访问域名为 www.163.com 的网站
acl badwebserver dstdomain www.163.com
http_access deny badwebserver
## 用户可以访问 163.com mail.163.com

4、禁止用户访问域名中包含 163.com 的网站
acl badwebserver url_regex 163.com
http_access deny badwebserver
## 这样就可以全面禁止所有包含 163.com 的网站


5、限制 IP 192.168.1.110 的并发最大连接数为10
acl clientip src 192.168.1.110
acl conn10 maxconn 10
http_access deny clientip conn10
## 通过两条 acl 来限制最大并发连接数,注意 有时候做完就直接不能访问网站了,是因为连接上限了,可以打开一个网页的连接数已经超过了 10

6、禁止 1.0 网段的 IP 9:00-18:00 上网
acl clientnet src 192.168.1.0/24
acl worktime time MTWHF 9:00-18:00
http_access deny clientnet worktime

7、禁止用户访问域名包含abc的网站(针对url的关键字)
acl badwebserver url_regex abc
http_access deny badwebserver
## 用户无法访问 www.abc.com/index.html 等站点

8、禁止下载 *.mp3 *.mp4 *.exe *.zip *.rar 类型的文件(针对文件)
acl badfile urlpath_regex -i .mp3 .mp4 .exe .zip .rar
http_access deny badfile

9、防止盗链
squid防盗链,通过设置Referer值。  
acl has_referer referer_regex .                 #直接访问的
acl allow_referer referer_regex -i baidu\.com
acl allow_referer referer_regex -i google\.com
acl allow_referer referer_regex -i yahoo\.cn
acl allow_referer referer_regex -i google\.cn  
http_access allow !has_referer
http_access deny !allow_referer deny_info http://img1.test.com/images/noposter.jpg allow_referer  

解释一下,has_referer匹配Referer存在,然后利用!has_referer来匹配没有Referer,即直接访问的请求,这部分请求不予做防盗链处理,allowallow_referer即允许使用源站资源的网站,然后利用!allow_referer来匹配不在允许列表的网站,这些不允许的Referer过来的请求就返回deny_info的内容

七、常见的安全配置(acl匹配安装顺序进行)

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 8080     # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
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 localnet
http_access allow localhost
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656191-1-1.html 上篇帖子: Squid +Havp+Clamva 下篇帖子: iptables+squid
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表