Squid代理服务器

目录

一、Squid 服务基础

1.1 缓存代理概述

1.2 编译安装及运行步骤(理论)

1.3 编译安装及运行具体操作(实操)

二、构建代理服务器

2.1 传统代理

2.1.1 搭建传统代理的步骤(理论)

2.2 透明代理

2.2.1 搭建透明代理的步骤(理论)

2.2.1 搭建透明代理的具体实验步骤(实操)

2.3 ACL 访问控制

2.3.1 设置ACL访问控制的步骤(理论)

2.4 Squid 日志分析

2.2.1 实现Squid日志分析的步骤(理论)

2.2.2 实现Squid日志分析的具体操作步骤(实操)

2.5 反向代理

2.5.1 反向代理的步骤(理论)

2.5.1 反向代理的具体操作步骤(实操)

三、总结


一、Squid 服务基础

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

官 方 网 站 为: http://www.squid-cache.org/

1.1 缓存代理概述

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

(一) 代理的工作机制

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

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

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

 

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

由于客户机的 Web 访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户 的真实 IP 地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色, 可以针对要访问的目标、客户机的地址、访问的时间段等进行过滤控制。

(二)代理的基本类型

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

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

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

实际应用中,传统代理多见于 Internet 环境,如为 QQ 程序使用代理可以隐藏本机真实 IP 地址、为下载工具使用多个代理可以规避服务器的并发连接限制。而透明代理多见于局 域网环境,如在 Linux 网关中启用透明代理后,局域网主机无须进行额外设置就可以享受更 好的上网速度。

1.2 编译安装及运行步骤(理论)

## 首先关闭防火墙和SElinux

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

1.编译安装Squid(将所需的包上传到/opt目录下)

yum -y install gcc gcc-c++ make

tar zxvf squid-3.5.28.tar.gz -C /opt/ #解压软件包

cd /opt/squid-3.5.28

./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/

useradd -M -s /sbin/nologin squid

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

2.修改Squid的配置文件

vim /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 #指定缓存文件目录

3 . Squid 的运行控制

#检查配置文件语法是否正确

squid -k parse

#启动Squid, 第一次启动Squid服务时,会自动初始化缓存目录

squid -z #-z选项用来初始化缓存目录

squid #启动squid 服务

netstat -anpt | grep "squid"

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

#2345是默认自启动级别,如是 - 代表任何级别都不自启动; 90是启动优先级,25是停止优先级,

优先级范围是0一100,数字越大,优先级越低。

chmod +x /etc/init.d/squid

chkconfig --add squid

chkconfig --level 35 squid on

1.3 编译安装及运行具体操作(实操)

首先关闭防火墙和SElinux

1.编译安装Squid(将所需的包上传到/opt目录下)

①放入软件包安装相关程序

②解压 

③安装squid相关模块 

④编译安装squid 

⑤优化路径、创建squid用户和指定存放缓存文件的路径

2.修改Squid的配置文件

3 . Squid 的运行控制

①检查配置文件语法是否正确

②启动Squid, 第一次启动Squid服务时,会自动初始化缓存目录

4.创建 Squid 服务脚本

①创建squid文件写入脚本

②赋予权限加入开机自启动

二、构建代理服务器

2.1 传统代理

使用传统代理的特点在于客户机的相关程序(如 IE 浏览器、QQ 聊天软件)必须指定 代理服务器的地址、端口等基本信息。

基于 Internet 网络环境(如下图),案例的主要需求描述如下。

在 Linux 主机 B 上,构建 Squid 为客户机访问各种网站提供代理服务,但禁止通过代 理下载超过 10MB 大小的文件。 -

在客户机 C 上&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值