man.linuxde.net

1、squid是Linux系统中的代理缓存服务,通常用作WEB网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。

2、squid服务特点:配置简单、效率高、功能丰富

3、代理缓存服务有正向代理与反向代理之分。正向代理又粪污标准正向代理和透明正向代理

所谓正向代理指让用户通过squid服务获取到网站页面等资源,以及通过访问控制列表(ACL)限制用户访问网站的行为。标准正向代理与透明正向代理的区别是标准代理模式需要用户在浏览器等软件里手动指定代理服务器IP地址与端口号,透明代理模式则不需要。

反向代理模式是指多台节点主机反向缓存网站数据,从而加快用户访问速度。

16.2 配置Squid服务程序

实验准备。squid服务器内网IP 192.168.10.10 外网网卡桥接模式

客户端IP192.168.10.20

安装squid服务

[root@localhost ~]# yum install squid -y
[root@localhost ~]# systemctl start squid
[root@localhost ~]# systemctl enable squid
ln -s '/usr/lib/systemd/system/squid.service' '/etc/systemd/system/multi-user.target.wants/squid.service'

一:标准正向代理模式

默认为标准正向代理,只需在客户端浏览器指定代理服务器IP及端口号即可实现代理上网功能。

出现一点小问题:

有可能是服务器防火墙策略规则禁止了代理服务

[root@localhost ~]# iptables -F
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

再试下就成功了。

四:透明正向代理

透明正向代理与标准正向代理区别是用户不需要指定代理服务器IP与端口,几乎感觉不到代理服务的存在。

降低了用户使用代理服务的门槛,同事更加隐秘的监督与员工的网络连接

在透明代理模式中,用户无须在浏览器或其他软件中配置代理服务器地址、端口号等信息,而是由DHCP服务器将网络配置信息分配给客户端主机。这样只要用户打开浏览器便会自动使用代理服务了

由于当前没有配置SNAT服务,所以客户端无法通外网

想要访问外网,首先要获取到DNS域名解析服务的数据。使用iptables命令实现DNS域名解析服务53号端口的数据转发功能,并允许squid服务转发Ipv4数据包,sysctl -p 使转发参数立即生效

[root@localhost ~]# iptables -t nat -A POSTROUTING -p udp --dport  -o eno33554992 -j MASQUERADE
[root@localhost ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward =

返回客户端,重新ping外网,发现虽然还是无妨Ping通,但已经能够获取到外网DNS服务的域名解析数据

与配置SNAT与DNS技术相比,squid服务程序的透明代理模式的配置就要显得简单多了,只需要在主配置文件的监听端口号IP后面加上 transparent(透明的)参数,并将62行硬盘缓冲区大小前的注释符号去掉,保存并退出。使用squid -k parse 命令检测主配置文件是否有错误,squid -z 命令对squid服务的透明代理模式进行初始化。

[root@linuxprobe ~]# vim /etc/squid/squid.conf
………………省略部分输出信息………………
# Squid normally listens to port
http_port transparent # Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/spool/squid ………………省略部分输出信息………………
[root@linuxprobe ~]# squid -k parse
// ::| Startup: Initializing Authentication Schemes ...
// ::| Startup: Initialized Authentication Scheme 'basic'
// ::| Startup: Initialized Authentication Scheme 'digest'
// ::| Startup: Initialized Authentication Scheme 'negotiate'
// ::| Startup: Initialized Authentication Scheme 'ntlm'
// ::| Startup: Initialized Authentication.
………………省略部分输出信息………………
[root@linuxprobe ~]# squid -z
// :: kid1| Creating missing swap directories
// :: kid1| /var/spool/squid exists
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/
// :: kid1| Making directories in /var/spool/squid/0A
// :: kid1| Making directories in /var/spool/squid/0B
// :: kid1| Making directories in /var/spool/squid/0C
// :: kid1| Making directories in /var/spool/squid/0D
// :: kid1| Making directories in /var/spool/squid/0E
// :: kid1| Making directories in /var/spool/squid/0F
[root@linuxprobe ~]# systemctl restart squid

在配置妥当重启squid没有报错后,接下来就可以配置SNAT转发功能了,通过iptables将所有客户端主机对网站80端口的请求转发到squid服务器本地的3128端口上。

命令: iptable -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

    iptable -t nat -A POSTROUTING -s 192.168.10.0/24 -o 桥接网卡名 -j SNAT --to 桥接的IP地址

[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport  -j REDIRECT --to-ports
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/ -o eno33554992 -j SNAT -to 192.168.1.140
Bad argument `192.168.1.140'
Try `iptables -h' or 'iptables --help' for more information.
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/ -o eno33554992 -j SNAT --to 192.168.1.140
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

客户端刷新浏览器,发现此时可以上网了

三:ACL访问控制

  

实验1只允许IP地址为192.168.10.20的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其余所有的主机代理请求。

[root@localhost ~]# vim /etc/squid/squid.conf
acl client src 192.168.10.30
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access allow client
http_access deny all
http_access deny !Safe_ports [root@localhost ~]# systemctl restart squid

实验2:禁止所有客户端访问网址中包含linux关键词的网站。

[root@localhost ~]# vim /etc/squid/squid.conf
acl deny_keyword url_regex -i linux
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny deny_keyword
http_access deny !Safe_ports [root@localhost ~]# systemctl restart squid

实验3:禁止所有客户端访问某个特定的网站。www.linuxcool.com

[root@localhost ~]# vim /etc/squid/squid.conf
acl deny_url url_regex http://www.linuxcool.com
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny deny_url
http_access deny !Safe_ports [root@localhost ~]# systemctl restart squid

实验4:禁止员工在企业网内部下载带有某些后缀的文件。(不可在安全超文本传输协议HTTPS中进行限制)

[root@localhost ~]# vim /etc/squid/squid.conf
acl badfile urlpath_regex -i \.rar$ \.mp3$
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny badfile
http_access deny !Safe_ports [root@localhost ~]# systemctl restart squid

实验3:反向代理

实验前为避免冲突,回滚快照,并将主机网卡设置为一块桥接网卡

反向代理是Squid服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。但是这种技术的弊端也很明显,如果有心怀不轨之徒将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容(有些诈骗网站就是这样骗取用户信任的)。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。

http://58.247.138.211/

使用Squid服务程序来配置反向代理服务非常简单。首先找到一个网站源服务器的IP地址,然后编辑Squid服务程序的主配置文件,把端口号3128修改为网站源服务器的地址和端口号,此时正向解析服务会被暂停(它不能与反向代理服务同时使用)。然后按照下面的参数形式写入需要反向代理的网站源服务器的IP地址信息,保存退出后重启Squid服务程序。

58 # Squid normally listens to port 3128
59 http_port 您的桥接网卡IP地址:80 vhost
60 cache_peer 网站源服务器IP地址 parent 80 0 originserver
  http_port 192.168.0.145: vhost
cache_peer 58.247.138.211 parent originserver

此时访问本地主机IP 。会看到反向代理的网页页面信息

squid代理缓存服务的更多相关文章

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

    代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载 ...

  2. 第16章 使用Squid部署代理缓存服务

    章节概述: 本章节从代理缓存服务的工作原理开始讲起,让读者能够清晰理解正向代理(普通模式.透明模式)与反向代理的作用. 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低 ...

  3. 代理缓存服务之Squid

    代理缓存服务 Squid是linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存. 简单来说,Squid服务程序会按照收到的 ...

  4. Linux基础学习-使用Squid部署代理缓存服务

    使用Squid部署代理缓存服务 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常作为Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.Squid服务配置简单. ...

  5. 《Linux就该这么学》培训笔记_ch16_使用Squid部署代理缓存服务

    <Linux就该这么学>培训笔记_ch16_使用Squid部署代理缓存服务 文章最后会post上书本的笔记照片. 文章主要内容: 代理缓存服务 配置Squid服务程序 正向代理 标准正向代 ...

  6. 虚拟机中Linux环境下使用Squid部署代理缓存服务(及透明传输)

    小知识: 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低原服务器的负载. 不仅如此,还为读者们添加了对指定IP地址.网页关键词.网址与文件后缀的ACL访问限制功能的实 ...

  7. 使用Squid部署代理缓存服务(标准正向、透明正反向代理)

    正向代理让用户可以通过Squid服务程序获取网站页面等数据,具体工作形式又分为标准代理模式与透明代理模式.标准正向代理模式: 将网站的数据缓存在服务器本地,提高数据资源被再次访问时的效率,但用户必需在 ...

  8. 12、Nginx代理缓存服务

    通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后端压力,提高网站并发延时 1.缓存常见类型 服务端缓存 代理缓存, 获取服务端内容进行缓存 客户端浏览器缓存 Nginx代理缓存原理 ...

  9. squid代理缓存服务器

    参考文章 http://www.cnblogs.com/mchina/p/3812190.html ;

随机推荐

  1. oracle sqlplus conn 远程连接

  2. delphi 组件容器TObjectList代替List

    delphi 组件容器TObjectList代替List TObjectList objList->delete(0); 这个会释放第0行元素的对象 class TTabFormInfo { p ...

  3. eclipse怎么自定义工具栏

    1.点击透视图按钮---->右键---->Customize: 2.勾选或者去掉相关项目:

  4. 解决SQL将varchar值转换为数据类型为int的列时发生语法错误

    今天遇到一个这样的错误,具体的报错情况如下 解决的方案如下. 数据库MSSQL在比较大小时,出错提示:“将 varchar 值 '24.5' 转换为数据类型为 int 的列时发生语法错!”分析数据库设 ...

  5. nginx部署(普通用户)

    1. Install Nginx software prerequisites : $ sudo yum install pcre pcre-devel openssl-devel perl gcc ...

  6. 如何阅读jdk及开源框架的源码?

    1.熟悉设计模式 可以边读源码 ,边熟悉设计模式,理解编程思想. jdk中对应的设计模式见:http://blog.csdn.net/gtuu0123/article/details/6114197 ...

  7. react-navigation 3.x版本的使用

    安装配置请看: react-navigation 3.x版本的安装以及react-native-gesture-handler配置 2.0以前版本: StackNavigator - 一次只渲染一个页 ...

  8. 323. Number of Connected Components in an Undirected Graph按照线段添加的并查集

    [抄题]: Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of n ...

  9. java代码实现网络远程开机

    http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其 ...

  10. 31-字符串转为 url 格式的两种不同情况

    将此字符串转为 url 格式的: # 如果是转化对象用:data=urllib.parse.urlencode(values) # 如果是转化字符串:s=urllib.parse.quote(s)