千家信息网

CentOS7上squid的部署及两种模式(4.1版本)

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,CentOS7上squid的部署及两种模式(4.1版本)简介squid是什么?Squid是一种用来缓冲Internet数据的软件。它接受来自人们需要下载的目标(object)的请求并适当地处理这些请求
千家信息网最后更新 2026年11月03日CentOS7上squid的部署及两种模式(4.1版本)

CentOS7上squid的部署及两种模式(4.1版本)

简介

  1. squid是什么?

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

  1. 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软件包

  • 实验部署
  1. 解压源码包

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

  1. 进行配置
./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正则表达式
  1. 编译安装

make && make install

  1. 创建链接文件、用户和组

ln -s /usr/local/squid/sbin/* /usr/local/sbin/

useradd -M -s /sbin/nologin squid

chown -R squid.squid /usr/local/squid/var/

  1. 修改squid配置文件
    vim /etc/squid.conf
。。。省略http_port 3128cache_effective_user squid        #添加   指定程序用户cache_effective_group squid       #添加   指定账号基本组

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

squid -z #初始化缓存目录

squid #启动服务

  1. 创建服务启动脚本

vim /etc/init.d/squid

#!/bin/bash#chkconfig: 2345 90 25PID="/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}"   ;;esacchmod +x /etc/init.d/squid       #给与执行权限chkconfig --add squid         chkconfig --level 35 squid on     #加入开机自启动并且在3、5模式下开机自启动

测试下服务启动脚本

  • 构建传统代理服务

主机IP地址主要服务
CentOS7-1172.16.10.129http服务
CentOS7-2172.16.10.128squid服务
windows7172.16.10.131客户机

vim /etc/squid.conf

# And finally deny all other access to this proxyhttp_access allow all     #添加 允许任意客户机使用代理服务http_access deny all# Squid normally listens to port 3128http_port 3128cache_mem 64 MB   #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4reply_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版本配置还是有些不同的,希望能帮助到各位

服务 代理 缓冲 服务器 客户 文件 页面 端口 防火墙 防火 代理服务 用户 空间 策略 配置 模式 版本 大小 数据 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 江苏根荣互联网科技 居家互联网科技有限公司 恒生科技互联网指数分析 卫星互联网科技股票 互联网科技有哪些公司 速维有品互联网信息科技(苏州)有限公司 健康食品互联网创新科技园项目 互联网科技创新的路径 南博望互联网科技有限公司 伍佰万互联网科技怎么赚钱 有人说阿里系是互联网科技企业 云鲸互联网络科技有限公司 张家口科技产业互联网平台 保山互联网科技靠谱吗 青岛易易互联网科技 山东蛋芒互联网科技有限公司 黑龙江互联网科技公司 互联网科技自媒体灵感 每日互联网科技新闻 深圳市人人互联网科技有限公司 互联网最新的科技有限公司 无锡溥仪互联网科技有限公司 湖南一路畅行互联网科技 互联网科技圈年度人物 南通创西澳互联网科技有限公司 智帮互联网科技公司最近动向 互联网科技快讯热点 互联网科技年终奖 保山互联网科技靠谱吗
0