squid 代理

目录

  • squid代理

    • 课程目标
    • 一、squid基本概述
    • 二、squid代理类型
    • 三、squid代理服务器和SNAT|DNAT的区别
    • 四、了解squid代理软件相关信息
    • 五、squid端正向代理配置
    • 六、squid的透明代理配置
    • 七、squid实现访问控制
    • 八、反向代理(扩展)

squid代理

课程目标

  • 了解squid的应用场景
  • 理解squid的工作原理和作用
  • 理squid的代理类型(重点)
  • 掌握squid的正向和透明代理的配置(重点)
  • 能够根据需求对squid服务器做简单的访问控制

一、squid基本概述

1.squid是什么?用来做什么?

squid cache(简称squid)是流行最广的,使用最普遍的开源缓存代理服务器

2.squid的作用和应用场景有哪些?

  • 用来做前置的web缓存,加快用户访问web的速度
  • 代理内网用户访问互联网资源
  • 设置访问控制策略,控制用户的上网行为
  • 主要支持http、ftp等应用协议
  • 官网地址:http://www.squid-cache.org/

3.常见的代理服务器软件

  • squid 非常古老,功能齐全
  • varnish 性能优于squid,功能相对没有squid多
  • 其他 haproxy、nginx等

4.squid的工作原理

优点:减少访问请求,节约带宽

具有ACL(access control list)访问控制列表功能,对客户机上网行为灵活控制

对内网客户机具有保护作用

二、squid代理类型

1.正向代理

2.透明代理

正向代理的过程隐藏了真实的请求客户端,服务器不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求。我们常说的代理就是正向代理,正向代理代理的是请求方,也就是客户端。

3.反向代理

反向代理的过程隐藏了真实的服务器,客户不知道真正提供服务的人是谁,客户端请求的服务都被代理服务器处理。反向代理代理的是响应方,也就是服务端。

4.总结

  • 正向代理和透明代理中的代理服务器和客户端同属一个LAN,对server端是透明的,服务器并不知道自己为谁提供服务。作用都是让内网用户可以通过代理服务器上互联网,也可以提高访问速度,并且可以通过代理服务器的访问控制限制内网用户的上网行为。
  • 反向代理的过程隐藏了真实的服务器,对客户端是透明的,客户端并不知道真正提供访问的服务器。可以起到负载均衡端作用,提高用户的访问速度。
  • 两者的区别在于代理的对象不一样,正向代理代理的对象是客户端,反向代理代理的对象是服务端。
  • 应用场景
    • 正向和透明代理:一般用于公司内网用户访问互联网,根据需求进行访问控制
    • 反向代理:一般用于公司服务器集群前做web缓存,提高用户访问效率,同时可以起到负责均衡作用,为互联网提供可持续端web服务。

三、squid代理服务器和SNAT|DNAT的区别

1.SNAT和DNAT

  • 网络层次:网络层

    局域网用户访问外围走SNAT模式,同一个数据包,改变数据包头部的来源地址,再把数据包发到internet

  • 作用:内网用户上外网(SNAT)和内网服务发布到公网(DNAT)

2.代理服务器模式

  • 网络层次:应用层

    不改变数据包头信息,把数据包代理给Internet的服务器,基于应用层端过滤。

  • 应用层:

    协议:http、ftp、pop、smtp、p2p等

  • 作用:缓存页面,加速访问,ACL资源访问控制
  • 反向代理:
    • Internet用户访问局域网服务器
    • squid做反向代理服务器,把用户端请求转发到后方端真实端服务器,可以做到负载均衡端效果,同时缓存用户经常访问的页面以提高访问速度。

四、了解squid代理软件相关信息

1.安装软件

squid在本地镜像里有,只需要配置好本地端yum源即可
yum -y install squid

2.软件的文件列表

rpm -ql squid
/etc/squid/squid.conf   配置文件
/etc/rc.d/init.d/squid  启动脚本
/usr/sbin/squid     二进制命令
/usr/share/doc/squid-3.1.23 手册
/var/log/squid      日志目录
/var/spool/squid    缓存目录

3.配置文件说明

[[email protected] ~]# vim /etc/squid/squid.conf      简化的配置文件
[[email protected] ~]# vim /usr/share/doc/squid-3.1.23/squid.conf.documented  查看文档
//设置监听端IP和端口号
http_port 3128
//额外提供给squid使用端内存大小
cache_mem   256MB(默认大小)
//设置squid磁盘缓存最大文件,超过4M端文件不保存到磁盘
maximum_object_size 4MB
//设置squid磁盘缓存最小文件
minimum_object_size 0 KB
//设置squid内存缓存最大文件,超过4M不保存到内存
maximum_object_size_in_memory 4096 KB
//定义squid端cache存放路径、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
cache_dir ufs /var/spool/squid 100 16 256

//log文件日志格式
#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
//log文件存放路径和日志格式
# access_log /var/log/squid/access.log squid
//设置缓存日志
cache_log /var/log/suqid/cache.log
//log轮转60天
logfile_rotate 60
//cache目录使用量大于95%时,开始清理旧的cache
cache_swap_high 95
//cache目录清理到90%时停止
cache_swap_low 90

//定义本地网段
acl localnet src 192.168.1.0/24
//允许本地网段使用
http_access allow localnet
//拒绝所有
http_access deny all
//主机名
visible_hostname xxx.xxxx.xxxx

//管理员邮箱
cache_mgr [email protected]
 

五、squid端正向代理配置

需求:内网用户通过浏览器指定代理服务器端ip和端口访问互联网中端web服务

环境:client:10.1.1.2
squid—server:10.1.1.1和2.2.2.1
web-server:2.2.2.2
(都是仅主机模式)
思路:
1.squid-server需要两个IP,一个公网一个私网
2.client端只需要和squid-server能互通就行,不需要指定gw和dns
3.client端需要在浏览器上设置代理服务器端IP和端口
4.squid-server可以上外网(要能访问2.2.2.2),client不能上外网,目的就是让squid代理内网用户访问互联网web服务
5.搭建一个web服务

步骤:
搭建squid-server服务器
1.安装软件
yum -y install squid

把主机名改为squid-server.itcast.cc 下面要用到,临时改就行,要求不严

2.根据需求修改配置文件
需求:代理内网所有用户访问互联网端web服务
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
vim /etc/squid/squid.conf
...
#http_access deny all   注释掉这行
http_access allow all   允许所有人来访问代理服务器

cache_dir ufs /var/spool/squid 100 16 256   取消掉前面注释,打开缓存目录
增加以下两行:
visible_hostname squid-server.itcast.cc     定义squid服务器主机名
access_log  /var/log/squid/access.log       定义访问日志

3.启动squid服务
service squid start
init_cache_dir /var/spool/squid... Starting squid: .       [ ok ]

服务器启动后会再缓存目录里产生以下一级、二级缓存目录文件
ls /var/spool/squid/
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  swap.state

查看端口3128已经处于监听状态

注意:如果再次重启会报以下警告:
WARNING cache_mem is larger than total disk cache space!
原因:默认情况下,cache_mem为256M,而squid端配置里磁盘缓存默认为100M
解决:
方法1:调小cache_mem的值
在配置文件中增加 cache_mem 100MB
方法2:调大磁盘缓存
修改配置文件中如下内容:
cache_dir ufs /var/spool/squid 256 16 256   ——>把100换成256
说明:squid缓存从 内存 ————> 磁盘
    cache_mem   /var/spool/squid

搭建web服务:
web-server:2.2.2.2

rpm -q httpd
做一个网页文件,带图片的,可以展示缓存,放到/var/www/html/里面
启动httpd

客户端测试:
client:10.1.1.2 注意:不需要设置网关和dns
配置代理服务器前:不能够直接访问web服务
ping 2.2.2.2 网络不可达
客户端内火狐浏览器访问http://2.2.2.1不能连接(因为没有打开转发功能echo 1 > /proc/sys/net/ipv4/ip_forward,此处不需要打开)
手动配置代理服务器ip和port
edit-->preferences--advanced-->network-->connection-->setting-->manual proxy configuration
输入代理服务器端内网地址10.1.1.1,port 3128
此时再输入http://2.2.2.2
能够看到自己端网页文件

内网不直接访问web服务器,但是通过代理服务器访问到了,这就是代理

假设web-server宕机,
service httpd stop
客户端重新输入http://2.2.2.2,仍能访问到

六、squid的透明代理配置

需求:内网用户通过代理服务器可以直接访问互联网中的web服务,不用指定proxy地址和端口

思路:
1.squid-server需要两个IP,一个公网一个私网
2.client端浏览器不需要指定代理服务器的IP和端口,但是需要指定网关为squid-server的私网地址
3.squid-server需要借助iptables将内网的80端口重定向到自己的3128端口帮内网用户代理上网
4.搭建一个web服务
(仅主机模式)

步骤:
client端浏览器清空刚刚的代理设置(不要忘记)
client端指定自己的默认网关为squid-server的私有地址
[[email protected] ~] route add default gw 10.1.1.1

squid-server端配置透明代理服务器并添加iptables规则:
1.修改squid配置文件
vim /etc/squid/squid.conf
http_port 3128 transparent  //在代理端口后面加上transparent(透明),代表透明代理
重启服务:
service squid restart

2.添加防火墙规则
iptables -t nat -A PREROUTING -s 10.1.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -nL

说明:
-j REDIRECT 表示端口重定向,仅用于tcp和udp协议
This is only valid if the rule also specifies -p tcp or -p udp

3.客户端测试验证
1)打开浏览器,输入http://2.2.2.2    可以看到web-server的web页面
curl -I http://2.2.2.2/index.html   //查看是否缓存
。。。
X-Cache:HIT from squid-server.itcast.cc
X-Cache-Lookup:HIT from squid-server.itcast.cc:3128     //HIT代表命中,缓存

。。。
X-Cache:MISS from squid-server.itcast.cc
X-Cache-Lookup:MISS from squid-server.itcast.cc:3128
2)web-server端,查看/var/log/httpd/access.log日志
3)squid-server端,查看/var/log/squid/access.log日志
4)测试web-server服务停止,squid-server是否缓存

只能上外网,访问页面,不能ping通2.2.2.2
另外:
windows不能访问是因为网关不同,网络不能访问squid-server端

七、squid实现访问控制

1.访问控制配置语法

1.禁止IP地址为192.168.0.100的客户机上网
    acl test src 192.168.0.100  //定义来源IP,test可以自己定义,代表定义端IP
    http_access deny test   //拒绝test后面定义端源IP :192.168.0.100上网
可以把要管理的IP写到一个文件里,然后在src后面跟上“文件路径”

2.禁止192.168.1.0这个网段里端所有客户机上网
    acl test src 192.168.1.0/255.255.255.0
    或者
    acl test src 192.168.1.0/24
    http_access deny test

3.禁止用户访问IP为210.21.118.68的网站
    acl test dst 210.21.118.68
    http_access deny test

4.禁止用户访问域名为www.163.com的网站
    acl test dstdomain -i www.163.com   //-i 忽略大小写
    http_access deny test

5.禁止用户访问域名包含有163.com的网站
    acl test url_regex -i 163.com   //使用正则表达式匹配URL地址
    http_access deny test

6.禁止用户访问包含有sex关键字端URL
    acl test url_regex -i sex
    http_access deny test

7.禁止用户访问多个网址
    acl test dstdom_regex "/etc/squid/baddaturl"
    //如果网址太多,可以写成一个文件,然后在这个文件里一行一个网站写上要
    http_access deny test

8.vip用户没有任何限制
    acl vip arp 00:0c:29:79:0C:1A   //绑定mac地址
    http_access allow vip

9.禁止192.168.2.0这个子网内所有客户机在周一到周五的9点到18点上网
    acl test1 src 192.168.2.0/255.255.255.0
    acl test2 time MTWHF 9:00-18:00     /S日/M一/T二/W三/H四/F五/A六/D(周一到周五)
    http_access deny test1 test2

hwclock --hctosys   还原时间命令

10.禁止用户下载*.mp3,*.exe,*.zip,*.rar带有定义后缀名的文件
    acl test urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$ \.txt$
    //urlpath_regex 正则表达式匹配URL地址
    http_access deny test

注意:设置acl访问控制规则的时候,有先后顺序。第一条规则匹配上就不再继续往下,所以先把拒绝写在前面

2.应用案例

2.1根据IP地址访问控制
2.2根据域名访问控制
2.3根据时间和日期访问控制

2.4根据文件名访问控制

3.综合案例

八、反向代理(扩展)

需求:某公司内网搭建了一台web服务器,希望互联网用户来访问该web服务,越多越好

环境:
client:2.2.2.2  互联网用户
squid-server:2.2.2.1和10.1.1.1   2个IP,一个公网一个私网
web-server:10.1.1.3     公司内网web服务器

还原acl控制

搭建反向代理服务器squid步骤:
1.清空之前的环境
iptables -t nat -F
2.修改squid.conf配置文件来配置反向代理
vim /etc/squid/squid.conf
...
http_port 80 vhost
cache_peer 10.1.1.3 parent 80 0 originserver

解释说明:
less /usr/share/doc/squid-3.1.10/squid.conf.documented
...
cache_peer hostname type http-port icp-port [options]

cache_peer:做反向代理的关键字
hostname:代表后台真正的web服务器
type:代表代理服务器的类型,有PARENT和SIBLING两种:parent代表父亲,sibling代表兄弟伙伴
http-port:后台web服务的端口
icp-port:代表代理服务器之间通讯的端口(用于查询兄弟缓存的端口)
[options]:代表可选项
originserver:代表原始服务器(真正的web服务器)
weight:代表权重
max-coon:代表
...

3.测试验证
在client端:2.2.2.2上直接访问代理服务器:
http://2.2.2.1      (访问代理服务器)

原文地址:https://www.cnblogs.com/liuwei-xd/p/11022791.html

时间: 2024-09-29 02:39:09

squid 代理的相关文章

Linux下squid代理缓存服务环境部署

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

squid代理配置

squid:作用:代理,缓存,不可访问的通过代理可访问. 正向代理:squid后面是客户端,客户端上网要通过squid常用在企业办公环境中,节省网络带宽资源,员工上网需通过squid代理. 用户<--->访问<--->代理服务器<--->防火墙|资源服务器反向代理:squid后面是服务器,服务器返回给用户数据需要走squid.用在网站架构中,常用来搭建网站静态项(图片,css,html,js,流煤体等)缓存服务器. 用户<--->代理服务器<---&g

linux squid 代理

代理的作用,我的理解就是正向代理就是在一台电脑上实现简单两个不同网段的互通.代理服务器在这一点上和路由器的功能类似,常用于翻墙.反向代理为了解决大的访问量拥挤在同一台或者同一处的主机上出现拥堵.ps:每次修改过配置文件别忘了重启服务. 1,环境:Red Hat 4.4.7-16. 2,安装squid.可以采用yum -y install squid.如果使用源码编译安装,必须安装的依赖包有:gcc pcre-devel zlib-devel opensll-devel. 3,1)正向代理. 1.

配置squid 代理

一.什么是squid    1. squid可以做代理也可以做缓存       2.squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O       3.squid即可以做正向代理也可以做反向代理        4.正向代理,squid后面是客户端,客户端上网要通过squid去上:反向代理后面是服务器,服务器返回给用户数据的时候需要走squid        5.正向代理用在企业的办公环境中,员工上网需要通过squid代理来上网,这样子可以节省网络带宽资源,而反向代理用来搭建网

nfs、samba、squid代理部署及优化

nfs部署及优化 nfs服务器上: [[email protected] vhosts]# yum install -y nfs-utils rpcbind [[email protected] vhosts]#  vim /etc/exports /mnt/ 192.168.137.21(rw,sync) //  /mnt/共享的目录,192.168.137.21允许访问的主机IP,(rw,sync)权限 [[email protected] vhosts]#  /etc/init.d/rpc

【树莓派】Squid代理以及白名单配置

Squid安装: sudo apt-get install squid3 -y 首先,建议备份一下这个配置文件,以免配错之后,无法恢复,又得重新安装: sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default.bak squid log查看: sudo tial -f /var/log/squid3/access.log 服务启动停止与查看状态: sudo service squid3 start sudo service squ

squid 代理服务器安装配置

ubuntu16.04 安装squid代理服务器配置 本文参考 http://www.cnblogs.com/newflypig/archive/2012/09/28/2862000.html 1,删除已有squid服务 sudo apt-get autoremove squid sudo apt-get autoremove squid-common 如果出现错误 Could not get lock /var/lib/dpkg/lock 执行步骤 sudo rm -rf /var/cache

squid代理与acl控制

      squid代理与acl控制 1:squid服务的作用 1.加快对http访问的速度 2.提高安全性 3.能够进行访问控制 代理的基本类型 l 传统代理:需要在客户机的浏览器.相关的工具上手动设置代理服务器的地址和端口,访问的网页域名也是由代理服务器进行解析的 l 透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理:域名解析有客户机完成 2:首先进行传统配置:如图   一.安装squid 1.解压 [[email prote

squid 代理配置

vi /etc/squid/squid.conf cache_mem 64 MB cache_dir ufs /var/spool/squid 1000 16 256 cache_effective_user squid cache_effective_group squid dns_nameservers 8.8.8.8 cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_sto

squid代理(传统代理)

squid代理服务器 Squid是linux系统中常用的一款开源代理服务软件,可以很好地实现HTTP和FTP ,以及DNS查询,SSL等应用的缓存代理,功能十分强大 作为应用层的代理服务器软件,Squid主要提供缓存加速,应用层过滤控制的功能 1 代理的工作机制 {1}当客户机通过代理来请求Web页面时, {2}指定的代理服务器会检查自己的缓存, {3}如果缓存中已经有客户机需要的页面, {4}则直接将缓存中的内容反馈给客户机, {5}如果缓存中没有客户机要访问的页面, {6}则由代理服务器向l