【实战】Squid 缓存服务器 之 传统代理 + 透明代理

目录:

1· Squid代理的概述原理
2· 代理的基本类型
3· Squid 服务脚本
4· 构建代理服务器(传统代理、透明代理)
5· 总结


Squid代理的概述原理

1)代理的工作机制



1.什么是 Squid ?

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。



2·缓存的工作原理

squid 是工作在应用层的代理服务软件,squid 主要提供缓存加速和应用层过滤控制的功能。在这里举个列子:当客户机通过代理来请求 web 页面时,那么代理服务器会检查自己有没有你请求的页面,有的话就直接发送给客户端,没有的话,代理服务器就会向web发送请求,当获得了web页面后,就会把数据保存到缓存中,并发给客户端。



下图是代理服务的缓存机制过程:



2)·HTTP 代理的缓存说明:


HTTP代理的缓存加速对象主要针对文字、图像等静态 Web 元素。使用缓存机制后,客户端在访问 同一 Web 元素,就可以直接从代理服务器的缓存中得到你想要的。这样做的好处就减少 对 Web 请求的过程,提高了客户端的访问速度


还有就是客户机访问的 Web 访问请求实际上是由代理服务器带完成的,这样就可以隐藏用户的真实 IP,有一定的保护作用,代理服务器还有机会对访问的目标、客户机的地址、访问的时间段进行过滤控制。


代理的基本类型与应用方向:

1)传统代理:

也就是普通的代理服务,比如我们用的浏览器、QQ聊天工具等需要手动设置代理服务器的地址和端口,才能使用代理服务的。


下图是浏览器设置代理服务器地址图:




对以上图说明:每个软件或者是浏览器设置代理服务器的位子是不一样的,只要找到选项,几乎就在里面,设好代理服务器的地址与端口即可。



2)应用方向

传统代理:多用于 Internet 环境,QQ 程序、下载工具等,可以规避服务器的并发连接。


透明代理:多用于局域网环境,比如在 Linux 网关中启用代理,局域网主机就不用再进行额外的设置就能更快的访问。


传统代理服务器部署

部署前说明:

1·部署环境是:CenOS 7.4


2·部署方式:手工编译, 版本为 Squid 3.4.6


3·提供源码包下载地址:Squid 缓存源码包,需要请点击 密码:63xn



传统代理服务器拓扑图如下:





开始部署:
1)编译安装 Squid,现在是手工编译的,在这之前我们需要把源码包下载,进行解压,安装编译环境、指定安装路径与功能模块等

[[email protected] ~]# tar zxvf squid-3.4.6.tar.gz -C /opt/ ----(解压到 /opt 目录下


[[email protected] ~]# yum install gcc gcc-c++ make -y ----(安装编译环境


[[email protected] ~]# cd /opt/squid-3.4.6/
[[email protected] squid-3.4.6]# ./configure --prefix=/usr/local/squid \
> --sysconfdir=/etc \
> --enable-arp-acl \
> --enable-linux-netfilter \
> --enable-linux-tpoxy \
> --enable-async-io=100 \
> --enable-err-language="Simplify_Chinese" \
> --enable-underscore \
> --enable-poll \
> --enable-gnuregex



2)对以上模块解释:

1·指定安装路径
2·单独将配置文件放在 /etc
3·可以在规则中设置为直接通过客户端MAC进行管理,防止客户端使用IP欺骗
4·使用内核过滤
5·支持透明模式
6·异步 I/O,提升存储性能
7·错误信息的显示语言
8·允许 URL 中有下划线
9·使用POLL()模式,提升性能
10·使用GNU 正则表达式


[[email protected] squid-3.4.6]# make && make install ----(制作、编译安装,这里等待的时间需要稍长一点,请耐心等待



3)安装完毕,现在需要对 Squid 进行一些优化,使以后我们用起来更加符合日常日操作习惯


[[email protected] squid-3.4.6]# ln -s /usr/local/squid/sbin/ /usr/local/sbin ——(创建软连接)


[[email protected] squid-3.4.6]# useradd -M -s /sbin/nologin squid ---(创建管理用户)


[[email protected] squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/



4)修改主配置文件,有图有文字说明:

[[email protected] squid-3.4.6]# vim /etc/squid.conf ----(在编译的时候就指定了主配置文件放在 /etc 下



修改如下内容:

http_access allow all -----(需要添加,意思是运行所有人访问http,这里相当于是一个ACL访问控制列表
cache_effective_user squid ------(添加指定的程序用户
cache_effective_group squid ------(添加 指定的账号基本组



下图是配置文件添加内容:





检查配置文件语法,看看是否有报错:

[[email protected] squid-3.4.6]# squid -k parse ---(检查语法,有报错问题几乎是配置文件的问题)


编写 Squid 启动脚本

[[email protected] squid-3.4.6]# 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 -antp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid...."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/nulll
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -antp | 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



优化 squid 与 启动脚本

[[email protected] squid-3.4.6]# chmod +x /etc/init.d/squid ---(给脚本执行权限
[[email protected] squid-3.4.6]# chkconfig --add squid ----(加入系统服务
[[email protected] squid-3.4.6]# chkconfig --level 35 squid on ----(设置开机自启



到此 Squid 服务基本配置完成。接下来我们需要先来做传统代理模式


[[email protected] squid-3.4.6]# vim /etc/squid.conf ---(修改配置文件)


添加内容如下:
cache_mem 64 MB ---(#指定缓存功能使用的内存空间大小,以便于保持访问较频繁的web对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4)


reply_body_max_size 10 MB ----(允许用户下载的最大文件大小,以字节为单位,默认0,表示不限制


maximum_object_size 4096 KB ---(允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户)



下图是修改后的配置文件:


启动前准备:


[[email protected] squid-3.4.6]# squid -k parse ---(再次检查配置文件语法


[[email protected] squid-3.4.6]# squid -z ---(初始化缓存目录


[[email protected] squid-3.4.6]# iptables -F ----(清空防火墙规则,便于之后我们自己填写策略)
[[email protected] squid-3.4.6]# iptables -t nat -F


[[email protected] squid-3.4.6]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT ---(添加防火墙策略:允许 tcp 协议 3128端口通过)‘
[[email protected] squid-3.4.6]# setenforce 0 ---(关闭增强功能)


[[email protected] squid-3.4.6]# service squid start ----(启动服务)
正在启动 squid...


[[email protected] squid-3.4.6]# netstat -antp | grep 3128 ----(查看启动端口
tcp6 0 0 :::3128 :::* LISTEN 36813/(squid-1)


验证传统代理服务器:

方法:搭建 Apache 网站服务器,用 windows 客户端 IE 浏览器设置代理服务器,访问 Apache 网站服务器,然后查看Apache 日志文件,查看是谁访问的Apache。如果是代理服务器说明我们部署成功。



1)在另外一台服务器上搭建 Apache 服务器:


[[email protected] ~]# yum install httpd -y ---(注意这里是在其他服务器上安装Apache


[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl start httpd.service



2)在客户机上给 IE 浏览器设置 Squid 代理服务器的地址与端口



这里用图表示:



开始访问 apache 网站服务器:


以上图说明:访问成功,但是我们需要知道是谁去访问的,所以现在需要看看 apache 的日志文件。



下图是 Apache 的日志文件:


上图说明:传统代理服务器部署成功!


透明代理部署:

透明代理提供的服务功能与传统代理是一致的,但是其 ” 透明 “ 的实现依赖默认路由和防火墙的重定向策略。


在Linux 网关上,构架squid 为客户机访问 Internet 提供代理服务
在所有的局域网客户机上,只需要争取设置IP地址、默认网关,而不需要手动指定代理服务器的地址、端口等信息。



根据以上的理论,所以我们应该把 Squid 代理服务器 再添加一块新的网卡,透明代理的拓扑图如下:



开始部署:

[[email protected] ~]# vim /etc/squid.conf ---(修改配置文件


修改内容如下:
http_port 192.168.100.1:3128 transparent ----(修改监听地址,因为是内网需要访问外网,所以监听的是内网 transparent:意思就是透明模式



配置文件修改得不多,接下来就是需要设置 iptables 的重定向策略:

[[email protected] ~]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128


[[email protected] ~]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128


开启路由转发功能:
[[email protected] ~]# echo "1" > /proc/sys/net/ipv4/ip_forward



重启 squid 代理服务器

[[email protected] ~]# service squid restart
正在关闭 squid...
正在启动 squid...


透明模式验证:
说明:透明模式 是不需要手动设置代理服器的,访问如下图:




下图是apache 日志分析,看看是那一台主机访问的web




结论:如上图,是不需要手动设置代理服务器,访问web服务器是由代理服务器去访问!


如果要再Linux客户机的命令行界面中使用代理服务器(比如:elinks 网页浏览器、wget 下载工具),必须通过环境变量来指定代理服务器的地址、端口等信息。


[[email protected] ~]# vim /etc/profile ---(添加如下内容到环境变量中)



添加如下内容:

HTTP_PROXY=http:192.168.100.50:3128 ---(为使用HTTP协议指定代理)
HTTPS_PROXY=http:192.168.100.50:3128 ---(为使用HTTPS协议指定代理)
FTP_PROXY=http:192.168.100.50:3128 ----(为使用FTP协议指定代理)
NO_RPOXY=192.168.20.,192.168.30. ---(对两个局域网段不使用代理)
export HTTP_PROXY HTTPS_PROXY FRP_PROXY NO_PROXY**

[[email protected] ~]# source /etc/profile


总结:

1·要知道,我们访问的是web服务器,如果 Squid缓存代理服务器有访问的数据,代理服务器就会直接给予回馈,如果没有,squid 就会去找web服务器要数据,再返回给客户端。



2·代理的基本类型有:传统代理、透明代理。之间最大的区别是:需要手动设置代理服务器的地址和端口。


3·排错可能性:·访问的时候,web服务器的防火墙没有关闭;防火墙策略写入有误、修改配置文件后是否重启服务,查看端口服务是否启动。



【实战】Squid 缓存服务器 之 传统代理 + 透明代理

原文地址:http://blog.51cto.com/13746824/2177725

时间: 2024-08-04 06:33:29

【实战】Squid 缓存服务器 之 传统代理 + 透明代理的相关文章

squid 缓存服务器之传统、透明代理

Squid 简介 Squid是一种用来缓冲Internet数据的软件.它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求.也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面.Squid随之连接到远程服务器并向这个页面发出请求.然后,Squid显式地聚集数据到客户端机器,而且同时复制一份.当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上.当前的Squid可以处理HTTP,FTP,GOPHER

Squid 缓存服务器的缓存代理,及配置 Squid 的ACL访问控制策略

Squid缓存服务器 Squid 是 Linux 系统中最常见的一块开源代理服务软件(官方网站为 http://www.squid-cache.org ),可以很好地实现HTTP.FTP.DNS.查询,以及SSL等应用的缓存代理,功能十分强大. 缓存代理概述 作为应用层的代理服务软件,Squid 主要提供缓存加速和应用层过滤控制的功能. 代理的工作机制 当客户机通过代理来请求 Web 页面时,指定的代理服务器辉县检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给

squid缓存服务器————反向代理

squid缓存服务器----反向代理如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用1.首先给网页做区分 [[email protected] httpd]# cd /var/www/html/ [[email protected] html]# ls [[email protected] html]# vim index.htm

Squid缓存服务器原理与实战演练

Squid服务基础讲解代理缓存机制:代理的基本类型:1. 传统代理:需要在客户端软件手动设置指定代理服务器 2. 透明代理:无需用户手动指定,通过路由.防火墙策略将访问重定向Squid 反向代理:为网站服务下面进行实战演练! 实验环境:代理服务器squid 192.168.80.181HTTP服务器192.168.80.182Win7客户端 192.168.80.9代理服务器端配置如下[[email protected] squid-3.5.27]# tar xf squid-3.5.27.ta

squid缓存服务器

squid缓存服务器 缓存概念 作为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制功能 代理服务器 客户端向网站发送请求数据 (为了能承受更多的并发连接客户端访问先请求代理服务器听过代理服务器提供出的数据给客户端,如果代理服务器上没有客户端的需求则代理服务器江湖发送请求给web服务器请求数据然后缓存到自己的缓存里面) 代理服务器分为以下几种 传统代理(客户端发送请求数据,访问的是代理服务器有代理服务器提供数据) 透明代理(代理服务器作为客户端的网关,在客户机访问web服务器时,

squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理

缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤.作为应用层的代理服务器软件,Sqiod主要提供了缓存加速和引用层过滤控制能力 代理的工作机制 当客户机通过代理来请求 Web 页面时,指定的代理服务器,会先检查自己的缓存如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机需要访问的页面,则用代理服务器向Internet 发送访问请求. 由于客户机的W

squid缓存服务器——传统模式

一.web代理的工作机制两台服务器传统模式中,客户端知道自己是一个代理透明模式中,不需要对客户端进行设置二.代理的基本类型 传统代理:适用于internet,需明确指明服务端 透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由.防火墙策略将web访问重定向给代理服务器处理 三.使用代理的好处 提高web'访问速度 隐藏客户机的真实IP地址 四.实操演示传统代理web端IP:192.168.247.160squid端IP:192.168.247.206win10客户端IP:192.

Linux squid 缓存服务器

一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快.Squid 可以代理HTTP.FTP.GOPH

CentOS7上实现Squid缓存服务器的两种模式

一.缓存代理概述Squid服务作为应用层的代理服务软件,Squid主要提供缓存加速和应用层过滤控制的功能. 二.代理的基本类型根据实现的方式不同,代理服务可以分为传统代理和同名代理两种行间的代理服务 1.传统代理:也就是普通的代理服务,首先必须在客户机的浏览器.下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络.对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器.2.透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和