Squid代理服务器

本文详细介绍了如何配置和使用Squid代理服务器,包括传统代理和透明代理的构建。内容涵盖Squid的编译安装、配置文件详解、运行控制,以及如何通过ACL实现访问控制。此外,还展示了如何使用Sarg进行日志分析。通过实例演示了限制特定IP、时间及文件类型的访问策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本帖目的:

    1、了解代理服务的常见类型

    2、学会构建传统代理、透明代理服务

    3、学会配置Squid的访问控制策略

一、缓存代理概述

    一)缓存代理服务器的使用意义

Web代理的工作机制:缓存网页对象,减少重复请求。

 

使用代理的好处:

  • 实现访问控制(ACL
  • 提高Web访问速度
  • 隐藏客户机的真实IP地址

    二)代理基本类型

传统代理:适用于Internet,需明确指定服务端(在浏览器是指定代理服务器地址和端口)

透明代理:适用于共享上网网关,不需指定服务端

二、编译安装

    1、编译安装Squid 3.4.6

    2、Squid配置文件

    3、Squid的运行控制

    4、如何使用服务脚本

二)源码安装squid

    1、解压包:

        tar xf squid-3.4.6.tar.gz -C /usr/src

        切换到目录下:

        cd /usr/src/squid-3.4.6/

    2、配置squid

./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 \
	--enable-poll	\
	--enable-gnuregex

参数解释
prefix=/usr/local/squid  //指定安装路径
sysconfdir=/etc/	//指定主配置文件存放路径
enable-arp-acl	//启动ACL访问控制列表,实现mac地址过滤,防止IP欺骗
enable-linux-netfilter	//开启内核过滤
enable-linux-tproxy	//支持透明模式
enable-async-io=100	//i=input o=output   提高输入输出的性能
enable-err-language="Simplify_Chinese"   //出现错误时使用简体中文提示
enable-underscore	 //允许url路径中出现下划线_
enable-poll	//打开poll模式,提示缓存的性能
enable-gnuregex 	//可以针对网站内容进行限制,比如限制某个网站,下载某个软件等

    3、编译并安装

        make && make install

三)运行控制

1、安装后环境:
	squid服务默认端口是:TCP 3128端口
	启动squid使用/usr/local/squid/sbin/squid
	配置文件:/etc/squid.conf
	默认用nobody运行。
2、创建软件链接:
   安装完成后,which squid 查找不到,需要建立链接:
   ln -s /usr/local/squid/sbin/* /usr/local/sbin/
   再次which squid

3、编辑配置文件,以squid账户来运行服务):
	vim /etc/squid.conf
	/3128(搜索),找到后在其下面添加:
	cache_effective_user squid   #设置运行squid服务的用户及
	cache_effective_group squid   #用户组账号
	保存退出
4、创建账户:
   useradd -M -s /sbin/nologin squid   #-M不创建宿主目录,-s指定登录SHEll。
   chown -R squid:squid /usr/local/squid  #更改属组和属主。
   chmod 777 -R /usr/local/squid		#赋予上传下载的权限

5、squid命令:
	squid --help #查看帮助
	squid #启动squid代理服务
	squid -k reconfigure #修改配置文件后,配置立即生效执行的命令。
	squid -k shutdown #关闭服务
	squid -k parse #检查语法错误(可以先检查语法错误)
6、启动服务及验证:squid
	开启服务:squid
	验证服务是否开启:netstat -anpt | grep 3128

 三、案例——传统代理配置

    案例环境说明

​​​​​​​        1、主机B提供Web代理服务

        2、主机C通过代理访问主机A的网站

 

 

  1. 基本实现过程
    • 1. 配置并启用squid服务(主机B
    • 2. 设置代理客户端(主机C
    • 3. 测试代理Web访问(主机C

 

一)传统代理:
1、客户机C
	1)配置IP地址:ifconfig ens33 192.168.0.1
	2)浏览器代理服务器配置:
	打开火狐浏览器:编辑->首选项->高级->网络->配置Firefox如何连接到因特网->设置:手动配置代理:代理服务器IP及端口号(192.168.0.100,端口3128)
		访问测试时,清除缓存,查看web服务访问日志,验证是否是网关服务在访问web服务器。(传统代理)
	3)squid代理服务器和WEB服务器配置完成后,使用浏览器访问192.168.0.200

2、网关B(squid代理服务器,仅需配置一块网卡)
	1)配置IP地址:192.168.0.100
	2)启动代理服务:squid

3、服务器C:
	1)配置IP地址:192.168.0.200
	2)安装并开启web服务器:systemctl start httpd
	3)编写首页:echo "12345" > /var/www/html/index.html
	4)客户端访问后,查看访问日志:tail -f /var/log/httpd/access_log

保证各主机互通。

四、案例——构建透明代理

(一)环境说明

实验目的:

适用于共享上网网关,不需指定服务端;

局域网通过代理访问Internet中的网站;

实验环境:

 准备工作:

代理服务器添加一块网卡;客户机配置网关为代理服务器IP

客户机和代理服务器网卡ens36用仅主机模式;

代理服务器ens33和外网服务器用NAT模式。

  1. 基本实现过程
    • 1. 配置Squid支持透明代理
    • 2. 设置iptables重定向策略
    • 3. 验证透明代理的使用

(二)实现过程:

1、配置Squid支持透明代理

                    vim /etc/squid.conf

                    http_port 3128 transparent     #透明代理,编译时必须打开此功能。

                    squid -k reconfigure

2、设置iptables 重定向策略:

        iptables -F

iptables -t nat -I PREROUTING -i ens36 -s 192.168.X.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

3、验证透明代理的使用.

内网浏览器不设置代理。

清空浏览器缓存,再访问外网。

五、ACL访问控制方式

1、概念

       ACLaccess control list,访问控制列表,是squid控制访问的一种技术。

2ACL访问控制配置步骤:

1)定义列表:
根据源地址、目标URL、文件类型等定义列表
格式:acl  列表名称  列表类型  列表内容 ... 
如:acl jifang src 192.168.43.0/24 192.168.1.0/24   #两个网段是或的关系。
2)应用acl:针对已定义的acl列表进行限制
http_access  allow或deny  列表名称 ... 
如:http_access allow jifang

 3、常用的ACL列表类型:

src       IP地址

dst        目标IP地址

port      目标端口

dstdomain       目标域名

time         访问时间

maxconn   最大并发连接

url_regex   目标URL地址

Urlpath_regex     整个目标URL路径

1、禁止任何客户机使用此代理服务
vim /etc/squid.conf
acl all src 0.0.0.0/0.0.0.0
http_access deny all
定义一条名为 all 的列表,匹配来自任意源地址的代理访问;然后拒绝此列表

2、允许多个局域网段在工作时间上网
vi /etc/squid.conf
acl all src 0.0.0.0/0.0.0.0
acl MYLAN src 192.168.1.0/24 192.168.4.0/24
acl WORKTIME time MTWHF 08:30-17:30
http_access allow MYLAN WORKTIME
http_access deny all

3、通过黑名单限制目标网站
vi /etc/squid/ipblock.list
61.135.167.36
60.28.14.0/24
vi /etc/squid/dmblock.list
.qq.com
.msn.com
vi /etc/squid.conf
acl IPBLOCK dst "/etc/squid/ipblock.list"
acl DMBLOCK dstdomain "/etc/squid/dmblock.list"
http_access deny IPBLOCK
http_access deny DMBLOCK

http_access allow MYLAN WORKTIME  #两个ACL之间是and关系。
http_access deny all

注:定义ACL中,如果有多个条件,则条件之间是或者关系(如MYLAN中的两个网段)。
    在应用ACL中,如果有多个ACL,中间用空格分隔,则ACL之间是并且关系(如上上句中的MYLAN WORKTIME之间)。如果需要取消,则在其前面加!。另外,应用多个ACL受应用顺序影响。
    应用ACL时,如果前的应用与后面的冲突,前面的应用生效。

4、常用的ACL列表类型

课堂实验1:
ACL限制访问:
在透明代理实验基础之上完成下面实验:
1、编辑配置文件:
vim /etc/squid.conf
acl badclient src 192.168.43.10
http_access deny badclient #此名必须放在 http_access allow localnet之前。
squid -k reconfigure

客户机再次访问测试:
客户机更换IP,添加网关后,再次访问测试。(注:客户机更换新IP后,原有网关将消失)

2、基于目标地址限制:
acl badserver dst 2.2.2.2
http_access deny badserver
squid -k reconfigure
客户端测试
服务器修改IP后,客户端再次测试

3、基于时间的ACL测试:
acl badtime time W 10:00-11:00 #基于的代理服务器的时间
http_access deny badtime
客户端测试
4、测试文件类型:
**限制访问文件类型:
acl mmxfile url_regex \.mp3 \.mp4

六、Squid日志分析工具:Sarg

    一)安装Sarg

1)配置光盘YUM源
2)安装gd图形库和apache:yum -y install gd httpd
3)安装Sarg: 
tar xf sarg-2.3.7.tar.gz -C /usr/src
cd /usr/src/sarg-2.3.7
配置:
./configure --prefix=/usr/local/sarg \
 --sysconfdir=/etc/sarg \
--enable-extraprotection 
安装:
make && make install
4)建立软链接:
ln -s /usr/local/sarg/bin/* /usr/local/bin/
5)验证:
which sarg

    二)配置sarg

sarg原理:根据squid日志定期生成网页,用于访问分析。

配置项:  

修改/etc/sarg/sarg.conf

access_log /usr/local/squid/var/logs/access.log
title "Squid User Access Reports" #网页标题
output_dir /var/www/html/sarg #分析日志输出目录,放到apache目录中。
user_ip yes #在报告中使用IP地址来代替用户ID,no指使用用户名。
topuser_sort_field BYTES reverse  #内容排序字段,reverse降序排序,根据连接数或字节数降序排序。
user_sort_field CONNECT reverse #用户字段排序字
overwrite_report no #报告已存在,再次生成是否覆盖原有报告。
charset UTF-8	#采用字符集
www_document_root /var/www/html #生成网页存储位置

三)启动apache

systemctl start httpd

    ls /var/www/html  #可以看到一个sarg-php目录。         

不记录日志分析的站点,不记录自己的日志:        

touch /usr/local/sarg/noreport

        sarg #生成报告。

        sarg --help #查看sarg命令的帮助信息。

设置定时任务生成新的日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值