请选择 进入手机版 | 继续访问电脑版

[LINUX] Linux体系 中Squid代理服务器设置 全过程分析

[复制链接]
查看46 | 回复4 | 2021-9-4 21:20:33 | 显示全部楼层 |阅读模式

什么是squid?

Squid是一个缓存internet数据的一个软件,它吸收 用户的下载申请,并自动 处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid毗连 所申请网站并哀求 该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立刻 传给用户,使用 户以为 速率 相当 快。现在 ,Squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 协议.

使用 squid的好处:快速相应 ,减少网络壅闭 ,加强 访问控制,进步 安全性.可以针对特定的网站,用户,网络,数据范例 实行 访问控制.

squid有3种代理方式:平凡 代理模式,透明代理模式,反向代理模式

1.平凡 代理模式

   一个标准的代理缓冲服务被用于缓存静态的网页(比方 :html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时间 ,欣赏 器将直接从本地代理服务器那里 获取哀求 数据而不再向原web站点哀求 数据。如许 就节省 了宝贵的网络带宽,而且进步 了访问速率 。但是,要想实现这种方式,必须在每一个内部主机的欣赏 器上明确 指明代理服务器的IP地址和端标语 。客户端上网时,每次都把哀求 送给代理服务器处理,代理服务器根据哀求 确定是否毗连 到长途 web服务器获取数据。假如 在本地缓冲区有目标 文件,则直接将文件传给用户即可。假如 没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端欣赏 器。


2.透明代理模式

   透明代理缓冲服务和标准代理服务器的功能完全雷同 。但是,代理操尴尬刁难 客户端的欣赏 器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通讯 ,并且过滤出访问外部的HTTP(80端口)流量。假如 客户端的哀求 在本地有缓冲则将缓冲的数据直接发给用户,假如 在本地没有缓冲则向长途 web服务器发出哀求 ,别的 操作和标准的代理服务器完全雷同 。对于Linux操作体系 来说,透明代理使用 Iptables或者Ipchains实现。由于 不必要 对欣赏 器作任何设置,以是 ,透明代理对于ISP(Internet服务器提供商)特别 有效 。

3.反向代理模式

    反向代理是和前两种代理完全不同的一种代理服务。使用 它可以降低原始WEB服务器的负载,又称HTTP加速器。反向代理服务器承担了对原始WEB服务器的静态页面的哀求 ,它是一种通过在繁忙的WEB服务器和Internet之间增长 一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低现实 的WEB服务器的负载.Web服务器加速(反向代理)是针对Web服务器提供加速功能的。它作为代理Cache,但并不针对欣赏 器用户,而针对一台或多台特定Web服务器。只要将Reverse Proxy Cache装备 放置在一台或多台Web服务器前端即可。当互联网用户访问某个WEB服务器时,通过DNS服务器分析 后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时Reverse Proxy Server装备 充当Web服务器,欣赏 器可以与它毗连 ,无需再直接与Web服务器相连。因此,大量Web服务工作量被卸载到反向代理服务上。不但可以或许 防止外部网主机直接和web服务器直接通讯 带来的安全隐患,而且可以或许 很大程度上减轻web服务器的负担,进步 访问速率 。


以下是squid反向代理实验

有2台服务器,1台HTTP Server 10.1.1.200,端口80,有2个假造 机主机www.testone.com www.testtwo.com提供服务

另一台Squid Server为反向代理服务器,10.1.6.200

客户机ip:10.1.6.173

测试: 客户机访问通过Squid Server 访问HTTP Server. 这里必要 在客户机上修改/etc/hosts,添加二行10.1.6.200 www.testone.com
10.1.6.200 www.testtwo.com(为了让客户机可以或许 分析 这2个域名对应ip为10.1.6.200 squid反向代理服务器的ip,监听端口默认是3128)

Squid Server 修改/etc/hosts,添加二行10.1.1.200 www.testone.com
10.1.1.200 www.testtwo.com


安装squid

复制代码代码如下:
root@10.1.6.200:~# apt-get install squid

设置 squid

复制代码代码如下:
root@10.1.6.200:~# vim /etc/squid/squid.conf
http_port 3128 #http_port告诉squid在哪个端口监听http哀求 ,默认3128
http_port 10.1.6.200:80 vhost #这里vhost支持假造 主机
cache_dir aufs /opt/squid/cache 200 16 256 #缓存目次 的设置,语法:<目次 >


复制代码代码如下:
#定义acl(访问控制列表),语法为:acl <设置 的内容>
acl all src all
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network


复制代码代码如下:
acl Safe_ports port 80
acl purge method PURGE
acl CONNECT method CONNECT
acl manager proto cache_object


复制代码代码如下:
#使用 前面定义的acl,定义访问控制规则
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access allow all


复制代码代码如下:
cache_mem 200 MB #假如 物理内存很大,只管 设置大些
maximum_object_size 20 MB #最大缓存块
maximum_object_size_in_memory 5 MB #与内存保存资料有关的设置


复制代码代码如下:
#假造 机主机代理设置 ,如从客户端访问www.testone.com,则Squid向www.testone.com的80端口发送哀求 .
cache_peer www.testone.com parent 80 0 no-query originserver name=one
cache_peer www.testtwo.com parent 80 0 no-query originserver name=two
cache_peer_domain one www.testone.com
cache_peer_domain two www.testtwo.com


复制代码代码如下:
#设置squid用户及用户组
cache_effective_user proxy
cache_effective_group proxy


复制代码代码如下:
#下面是关于日志 文件
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log none


复制代码代码如下:
mime_table /usr/share/squid/mime.conf
pid_filename /var/log/squid/squid.pid

 
复制代码代码如下:
coredump_dir /var/spool/squid

设置缓存目次 权限为proxy,否则启动会提示没有权限

复制代码代码如下:
root@10.1.6.200:opt# chown -R proxy:proxy squid/
root@10.1.6.200:opt# ll
total 8
drwxr-xr-x 3 proxy proxy 4096 2013-02-21 22:42 squid

在开启squid服务之前,先检查设置 文件是否准确 :(假如看不输出,设置 文件有效 )

root@10.1.6.200:opt# squid -k parse

初始化cache目次 ,即建立缓存目次 的存储格式(在初次运行squid之前,或者增长 了新的cache_dir,必须初始化cache目次 ),cache目次 初始化大概 花费一些时间,依赖 cache目次 的大小和数量 ,要观察具体 过程可以加-X选项.

复制代码代码如下:
root@10.1.6.200:squid# squid -z
2013/02/22 20:31:10| Creating Swap Directories

启动squid服务

复制代码代码如下:
root@10.1.6.200:squid# /etc/init.d/squid start
Starting Squid HTTP proxy: squid.
root@10.1.6.200:squid# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:39360 0.0.0.0:* LISTEN 1383/rpc.statd
tcp 0 0 127.0.0.1:833 0.0.0.0:* LISTEN 1929/famd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1372/portmap
tcp 0 0 10.1.6.200:80 0.0.0.0:* LISTEN 2491/(squid)
tcp 0 0 0.0.0.0:22000 0.0.0.0:* LISTEN 1623/sshd
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 2491/(squid)
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1890/exim4
udp 0 0 0.0.0.0:58152 0.0.0.0:* 2491/(squid)
udp 0 0 0.0.0.0:3130 0.0.0.0:* 2491/(squid)
udp 0 0 0.0.0.0:711 0.0.0.0:* 1383/rpc.statd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1372/portmap
udp 0 0 0.0.0.0:59518 0.0.0.0:* 1383/rpc.statd

这里不具体 讲解HTTP Server 10.1.1.200设置 假造 主机过程,已分别设置 好www.testone.com,www.testtwo.com假造 主机

2016130120749868.jpg (380×139)

2016130120815357.jpg (297×146)

查看HTTP Server日志 ,会发现是Squid Server ip 哀求 数据.

复制代码代码如下:
root@10.1.1.200:apache2# tail -f www.testone.com_access.log
10.1.6.200 - - [22/Feb/2013:20:47:17 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 734; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"


复制代码代码如下:
root@10.1.1.200:apache2# tail -f www.testtwo.com_access.log
10.1.6.200 - - [22/Feb/2013:20:49:07 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 734; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

以下是整个访问原理过程:

     1.当客户端在欣赏 器输入:www.testone.com 通过本地/etc/hosts分析 ,域名www.testone.com对应的ip是10.1.6.200(Squid反向代理服务器),于是客户端向Squid反向代理服务器默认3128端口发送哀求 ,注意 :在客户端输入www.testone.com和http://10.1.6.200是不一样的,假如 是通过ip哀求 ,则不能实现让Squid服务器对内部网络多个服务器代理,必要 使用 域名方式.在 设置 Squid 时,有两个选项,cache_peer 和 cache_peer_domain,这两个设置 项让 Squid 有本领 知道www.testone.com这个哀求 终极 是想访问HTTP服务器10.1.1.200的80端口,从而实现了 Squid 对内部多个服务器作代理的功能需求。

     2.Squid服务器收到客户端发来的哀求 ,一看是www.testone.com,从设置 它知道哀求 HTTP服务器10.1.1.200的80端口.

     3.HTTP服务器提供服务监听80端口,收到Squid发送来的哀求 ,于是根据哀求 发送相应数据给Squid服务器.

     4.Squid收到HTTP服务器从80端口发送过来的数据后,会将该数据在本地缓存,同时将数据从本身 的3128发送给客户端10.1.6.173.


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar jimmy肖明 | 2021-9-18 08:02:53 | 显示全部楼层
上次给admin楼主开的药,你都吃完了?
回复

使用道具 举报

avatar 如心所愿1 | 2021-9-30 08:58:54 | 显示全部楼层
在哪里跌倒,就在那里多爬一会儿!
回复

使用道具 举报

avatar 林之秋实 | 2021-9-30 08:58:58 | 显示全部楼层
管它三七二十一!
回复

使用道具 举报

avatar 婚庆中国掌 | 2021-10-19 02:47:19 | 显示全部楼层
论坛人气好旺!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则