Squid 介绍及安装

简介

Squid 是 Linux 系统中最常用的一款开源代理服务软件,是一个广泛使用的开源代理服务器和Web缓存加速器。它支持多种协议,可以很好地实现 HTTP 和 FTP,以及 DNS 查询、SSL 等应用的缓存代理。常用于提高网络性能、节省带宽、提供访问控制以及实现内容过滤,功能十分强大。

官方网站为: http://www.squid-cache.org
作为应用层的代理服务软件,Squid 主要提供缓存加速、应用层过滤控制的功能。

核心特点

  1. 缓存和加速Squid可以缓存请求的网页、图片和其他文件,这样当同一个资源再次被请求时,它可以快速从本地缓存提供,而不是每次都从原始服务器下载。
  2. 控制访问Squid可以用来控制哪些内容可以被用户访问。它支持强大的访问控制列表(ACLs),允许管理员根据源地址、目的地、使用的协议等标准过滤内容。
  3. 提供安全性Squid可以作为一个透明代理来提高网络安全,可以用来拦截恶意流量和提供 SSL/TLS加密的代理服务。
  4. 减少带宽使用:通过缓存频繁访问的内容,Squid可以显著减少带宽需求,特别是在网络连接有限或昂贵的环境中非常有用。
  5. 提高响应时间:由于从近距离缓存提供内容,Squid能够减少数据的往返时间,从而提高响应速度。
  6. 支持多种协议Squid支持 HTTPHTTPSFTP等多种网络协议。

应用场景

  1. 企业网关:在企业环境中,Squid通常用作网关代理,来管理和监控员工的互联网使用。
  2. ISP缓存解决方案:互联网服务提供商(ISP)使用 Squid来减少带宽使用,加快用户访问互联网资源的速度。
  3. 内容分发网络Squid可以用作内容分发网络(CDN)的一部分,来提供地理分布式的缓存服务。
  4. 反向代理和负载均衡Squid还可以配置为反向代理,用于负载均衡和为后端服务器提供缓存服务。
  5. 安全和匿名浏览Squid还可用于提高浏览的安全性和匿名性,尤其是当结合 VPNTor使用时。

Squid但是和VPN还是有区别的:

  • Squid主要用于缓存和控制 HTTP/HTTPS流量,而 VPN用于保护整个网络连接的安全和隐私。
  • Squid在隐私保护方面不如 VPN,因为它不会对所有流量进行加密,也不会隐藏用户的真实 IP地址。
  • Squid的配置可能比 VPN复杂,尤其是在进行高级过滤和控制时。

安装方式

  • 源码编译安装(需要依赖操作系统的 gcc 等编译库)。

  • 直接运行 docker 容器(有容器运行环境的情况下,最简单)。

安装

原生编译方式安装

下载squid源码包,解压缩并使用系统 gcc 库编译安装。

安装和配置

1、首先关闭防火墙和 SELinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2、前往官网下载 squid 安装包

mkdir /opt/squid
cd /opt/squid
# 本例下载squid-6.10 版本
curl -o squid-6.10.tar.gz http://www.squid-cache.org/Versions/v6/squid-6.10.tar.gz

3、检查或安装编译环境

yum -y install gcc gcc-c++ make

4、解压缩安装包

tar zxvf squid-6.10.tar.gz

5、配置 squid

# 先进入解压缩的源代码目录后,然后执行configure进行配置
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_ Chinese" \
--enable-underscore \
--disable-poll \
--enable-epoll \
--enable-gnuregex

配置命令中的参数说明如表:

参数说明
–prefix=/usr/local/squid指定安装目录路径
–sysconfdir=/etc指定配置文件路径
–enable-arp-aclMAC地址管控,防止客户端使用IP欺骗
–enable-linux-netfilter使用内核过滤
–enable-linux-tproxy支持透明模式
–enable-async-io=100异步IO,提升存储性能
–enable-err-language=“Simplify_ Chinese”错误信息的显示语言
–enable-underscore允许URL中有下划线
–disable-poll关闭默认使用poll模式
–enable-epoll开启epoll模式提升性能
–enable-gnuregex使用GNU正则表达式

6、编译和安装

make && make install

7、创建软连接、创建用户并为缓存目录授权

ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid

#此目录用于存放缓存文件
chown -R squid:squid /usr/local/squid/var/       

8、修改Squid的配置文件 /etc/squid.conf

......
-----56行左右的位置--插入(不同版本行数可能有差异)------
http_access allow all  		  #放在http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配
http_access deny all
http_port 3128       		   #用来指定代理服务监听的地址和端口(默认的端口号为3128)
-----61行左右的位置--插入(不同版本行数可能有差异)------
cache_effective_user squid     #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid    #添加,指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid   #指定缓存文件目录
......

编辑内容如下图所示:

image-20240806112937200

验证和启动Squid
# 检查配置文件语法是否正确
squid -k parse

# 启动Squid, 第一次启动Squid服务时,会自动初始化缓存目录
squid -z   #-z选项用来初始化缓存目录
squid      #启动squid 服务

# 查看 squid 进程
netstat -anpt | grep "squid"
配置为系统服务开机自启动

1、创建 Squid 服务脚本,文件 /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 kill &> /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

2345是默认自启动级别,如是 - 代表任何级别都不自启动; 90是启动优先级,25是停止优先级,优先级范围是0一100,数字越大,优先级越低。

2、将服务添加到系统服务中并设置为开机自启动

# 添加到系统服务
chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on
# 设置为开机自启动
systemctl enable squid
# 启动服务
systemctl start squid

Docker容器方式安装

1、准备配置文件 squid.conf。位置例如:/usr/local/squid/squid.conf

(内容略,可以不挂载配置直接启动容器,然后进入容器后将默认配置文件 /etc/squid/squid.conf 拷贝到宿主机后修改)

2、启动docker容器

docker run --name squid -d --restart=always --publish 3128:3128 --volume /usr/local/squid:/etc/squid/ ubuntu/squid:latest

高级配置

HTTPS代理

要配置HTTPS代理,需要启用SSL支持,并生成SSL证书。以下是一个简单的配置示例:

# 生成自签名证书(仅供测试)
sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/squid.key -out /etc/squid/squid.crt

# 配置SSL
https_port 3129 cert=/etc/squid/squid.crt key=/etc/squid/squid.key

身份验证

Squid支持多种身份验证方式,包括基本身份验证和NTLM。以下是启用基本身份验证的示例:

# 安装Apache身份验证模块
sudo apt install apache2-utils

# 创建用户
sudo htpasswd -c /etc/squid/passwords username

# 配置身份验证(修改配置文件)
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
acl authenticated proxy_auth REQUIRED
http_access allow authenticated

性能优化

为了提高Squid的性能,可以考虑以下优化措施:

  • 调整缓存大小:根据网络流量情况调整cache_dir的大小。
  • 使用内存缓存:通过配置cache_mem指令使用更多的内存进行缓存。
  • 优化日志记录:定期清理和压缩日志文件,减少磁盘I/O。

常见问题

  • Squid无法启动:检查配置文件的语法是否正确,可以使用命令sudo squid -k parse来验证。
  • 访问被拒绝:确保ACL配置正确,特别是http_access指令的顺序,Squid会按顺序检查访问规则。

(END)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catoop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值