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

[经验分享] CentOS7上squid的部署及两种模式(4.1版本)

[复制链接]

尚未签到

发表于 2018-12-26 12:04:57 | 显示全部楼层 |阅读模式
CentOS7上squid的部署及两种模式(4.1版本)

简介


  • squid是什么?

  Squid是一种用来缓冲Internet数据的软件。它接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。



  • Internet缓冲的一些概念

  你可能会想到一些问题:缓冲有多大的用处?什么时候目标(object)应该或者不应该被缓冲?例如,缓冲信用卡号码是完全不适合的,脚本文件的执行结果在远程服务器端,站点经常更新(像www.cnn.com)或者甚至站点不允许缓冲,这些情况也都是不适合缓冲的。Squid处理各种情况是不错的(当然,这需要远程站点按标准形式工作)。可执行的cgi-bin脚本文件不被缓冲,返回正确页眉的页面是在一段限制了的时间内被缓冲,而且你可以规定特殊的规则以确定什么是可以或不可以被缓冲的,还有缓冲的时间为多长。谈到缓冲的用处有多大,这要看Internet的容量大小,各有不同。对于小型的缓冲区(几转磁盘空间)来说,返回值非常高(达到25%)。这个空间缓冲经常访问的站点,如netscape,cnn和其它一些类似情况的站点。如果你增加一倍缓冲的磁盘空间,但你不会成倍增加你的命中率。这是因为你开始缓冲网络中剩余部分时,这些通常时很大的而且很少被访问。一个非常大的高速缓冲区,有20转左右,可能返回值仍小于50%,除非你对保存数据的时间长短经常改变(一般地你不要分配20转的磁盘空间,因为页面很快就会过时,应该被删除掉)。我们在这里说的目标(object)指的是可保存的web页面或其它类似的可下载页面(ftp文件或目录内容也称为目标(object))。

  3.Squid的下载和获取

  squid在诸多unix like系统上都有软件库的提供,比如在ubuntu可以使用apt install squid进行安装,也可以到squid的官网直接下载二进制的编译好的软件包, 下载地址


代理的基本类型


  • 传统代理
  也就是普通的代理服务,,必须在客户端的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。


  • 透明代理
  提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对于客户机来说是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为“透明代理”。

安装部署(基于CentOS7部署squid4.1版本)


  • 实验准备
  CentOS7虚拟机、squid-4.1.tar.gz软件包


  • 实验部署


  • 解压源码包

  tar zxvf squid-4.1.tar.gz -C /opt



  • 进行配置

./configure \
--prefix=/usr/local/squid \         #安装目录
-- sysconfdir =/etc \          #单独将配置文件修改到其他目录
--enable-arp-acl \             #可以在规则中设置为直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter \     #使用内核过滤
--enable-linux-tproxy \       #支持透明模式
--enable-async-io=100 \      #异步I/O,提升存储性能,相当于 --enable-pthreads   --enable-storeio=ufs,aufs
--enable-err-language="Simplify_Chinese" \         #错误信息的显示语言
--enable-underscore \     #允许URL中有下划线
--enable-poll \     #使用Poll()模式,提升性能
--enable-gnuregex        #使用GUN正则表达式

  • 编译安装

  make && make install



  • 创建链接文件、用户和组

  ln -s /usr/local/squid/sbin/* /usr/local/sbin/
  useradd -M -s /sbin/nologin squid
  chown -R squid.squid /usr/local/squid/var/



  • 修改squid配置文件
    vim /etc/squid.conf

。。。省略
http_port 3128
cache_effective_user squid        #添加   指定程序用户
cache_effective_group squid       #添加   指定账号基本组



  • 初始化缓存目录、启动服务

  squid -z      #初始化缓存目录
  squid      #启动服务




  • 创建服务启动脚本

  vim /etc/init.d/squid


#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k shutdown &> /dev/null     #这里可以仔细看下
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:$0{start|stop|status|reload|check|restart}"
;;
esac
chmod +x /etc/init.d/squid       #给与执行权限
chkconfig --add squid         
chkconfig --level 35 squid on     #加入开机自启动并且在3、5模式下开机自启动
  测试下服务启动脚本




  • 构建传统代理服务


主机
IP地址
主要服务




CentOS7-1
172.16.10.129
http服务


CentOS7-2
172.16.10.128
squid服务


windows7
172.16.10.131
客户机



  vim /etc/squid.conf


# And finally deny all other access to this proxy
http_access allow all     #添加 允许任意客户机使用代理服务
http_access deny all
# Squid normally listens to port 3128
http_port 3128
cache_mem 64 MB   #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB   #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB    #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
cache_effective_user squid        #添加   指定程序用户
cache_effective_group squid       #添加   指定账号基本组
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

  • 清空防火墙以前的策略及SELinux,添加防火墙策略并且重启服务

  iptables -F     #清空防火墙策略
  setenforce 0    #关闭SELinux
  iptables -I INPUT -p tcp --dport 3128 -j ACCEPT  #允许访问3218端口的tcp数据包通过



  • 重启服务器

  service squid restart



  • web服务器关闭防火墙并且开启服务

  systemctl stop firewalld.service
  setenforce 0
  systemctl start httpd     #开启web服务




  • client端浏览器设置代理




  • 查看web服务器的访问日志




  • 构建透明模式
  首先代理服务器要配置双网卡,
  其中ens33为内网网关192.168.100.1;
  ens36为外网网关12.0.0.1;
  web服务器 12.0.0.12
  client客户端 192.168.100.50



  • 设置路由转发,清空防火墙策略

echo "1" > /proc/sys/net/ipv4/ip_forward     #开启路由转发
iptables -F       #清空防火墙策略
iptables -t nat -F   

  • 修改squid配置文件

  #这边解释一下,可能有人会问不应该是3128端口么,其实不是,因为我使用squid4.1版本做的,有些东西和3.4版本可能会不同,如果设置3128端口,squid服务会无法开启的,因为3128端口在被占用。


  •   重启squid代理服务

      service squid stop
      service squid start
      netstat -ntap | grep squid
      tcp        0      0 192.168.100.1:3129      0.0.0.0:               LISTEN      57899/(squid-1)     
    tcp6       0      0 :::3128                 :::
                        LISTEN      57899/(squid-1)
      这里可以看到我们设置的3129端口已经启动了


  • 访问验证



  • 查看web服务器的访问日志

  这样透明代理就完成了
  #注:squid4.1和squid3.4版本配置还是有些不同的,希望能帮助到各位




运维网声明 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-656062-1-1.html 上篇帖子: squid-7240173 下篇帖子: squid+dansguardian实现网页过滤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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