Squid代理服务器应用

本文详细介绍了如何在Linux系统中安装和配置Squid代理服务,包括缓存代理的基础知识、代理工作原理、传统与透明代理的区别,以及Squid的安装步骤和配置参数。此外,还展示了如何通过防火墙规则允许代理服务,并创建服务脚本以便于管理和启动Squid。最后,文章提到了构建传统代理服务器的实例,包括关闭防火墙、修改Squid配置文件以增加缓存内存大小和限制最大下载文件大小,以及配置防火墙规则。
摘要由CSDN通过智能技术生成

一、Squid 服务基础

Squid 是 Linux 系 统 中 最 常 用 的 一 款 开 源 代 理 服 务 软 件 ,可以很好地实现 HTTP 和 FTP,以及 DNS 查询、SSL 等应 用的缓存代理,功能十分强大

缓存代理概述

作为应用层的代理服务软件,Squid 主要提供缓存加速、应用层过滤控制的功能

代理的工作机制

当客户机通过代理来请求 Web 页面时,指定的代理服务器会先检查自己的缓存

1.如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机

2.如果缓存中没 有客户机要访问的页面,则由代理服务器向 Internet 发送访问请求,获得返回的 Web 页面以后,将网页数据保存到缓存中并发送给客户机

HTTP 代理的缓存加速对象主要是文字、图像等静态 Web 元素。使用缓存机制后,当 客户机在不同的时候访问同一 Web 元素,或者不同的客户机访问相同的 Web 元素时,可 以直接从代理服务器的缓存中获得结果。这样就大大减少了向 Internet 提交重复的 Web 请 求的过程,提高了客户机的 Web 访问响应速度
 

代理的基本类型

根据实现方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务

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

2.透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务 器的地址和端口,而是通过默认路由、防火墙策略将 Web访问重定向,实际仍然交给 代理服务器来处理。重定向的过程对客户机是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为透明代理。使用透明代理时,网页浏览器访问网站时的域名解析请 求将优先发给 DNS 服务器

安装Squid服务

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装依赖环境并把安装包解压到opt目录

yum -y install gcc gcc-c++ make                     #安装依赖环境
tar zxvf squid-3.5.28.tar.gz -C /opt/               #将安装包解压到指定目录opt中
cd /opt/squid-3.5.28

编译安装squid

./configure --prefix=/usr/local/squid \				#指定安装目录路径
--sysconfdir=/etc \									#指定配置文件路径
--enable-arp-acl \									#MAC地址管控,防止客户端使用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正则表达式


make && make install
 

ln -s /usr/local/squid/sbin/* /usr/local/sbin/   #创建软链接使系统直接能够识别squid命令
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/		 #此目录用于存放缓存文件

 修改squid配置文件

vim /etc/squid.conf

http_access allow all
http_access deny all             #在56行插入http_access allow all 允许任意客户机使用代理服务,控制规则自上而下匹配


在61行插入
cache_effective_user squid		#添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid		#添加,指定账号基本组

squid运行控制

squid -k parse   #检查配置文件语法是否正确
squid -z 					#-z 选项用来初始化缓存目录
squid						#启动 squid 服务
netstat -anpt | grep "squid"

 

 

 

创建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 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

 

 

chmod +x /etc/init.d/squid    #给脚本执行权限
chkconfig --add squid         #加入系统服务管理
chkconfig --level 35 squid on
chkconfig --list squid        #查看在哪些运行级别下自启

 

构建传统代理服务器

Squid代理服务器:192.168.100.20/24

web服务器:192.168.100.40/24

客户机:192.168.100.10/24

1.Squid代理服务器192.168.100.20

关闭防护墙与selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

修改squid配置文件

vim /etc/squid.conf
--63行--插入
cache_mem 64 MB
#指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
 
reply_body_max_size 100 MB 
#允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
 
maximum_object_size 4096 KB
#允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

重启服务 

service squid restart

 修改防火墙规则

iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

2.web服务器192.168.100.40

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装apache网页并启动


yum install httpd -y
systemctl start httpd

 查看web服务器访问日志

cd /etc/httpd/logs/
ls
tail -f access_log

 打开浏览器(尽量使用IE浏览器),工具-->Internet选项-->连接-->局域网设置-->开启代理服务器(地址:Squid服务器IP地址,端口:3128)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值