Linux巩固篇016-Linux Squid 部署代理缓存服务

简介: 纸上得来终觉浅,绝知此事要躬行

前言

身为一个三年的运维工程师,从开发转测开再转运维,都是不断学习的过程,未必开发才是最优秀的,找到适合自己的职业不断深耕,你也会在自己的行业大放光彩,本系列依照《Linux就该这么学》系列随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,也希望大家多关注刘遄老师的第二版关于centos8的丛书,学习最前沿的Linux相关技术。

常用命令汇总

代理缓存服务

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

正向代理模式,是指让用户通过 Squid 服务程序获取网站页面等资源,以及基于访 问控制列表(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代 理模式与透明代理模式。标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源 被再次访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的 IP 地址与 端口号信息,否则默认不使用代理服务。

image.png

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

image.png

配置 Squid 服务程序

准备两台服务器,一台服务端,一台客户端,新添加的网卡设备必须选择为桥接模式,绑定到服务端

服务端:两块网卡

image.png

主机网卡我不介绍了,但是桥接网卡怕大家没配置过所以顺着流程演示一遍

第一步我们要在虚拟机网络管理里边把这些位置按步骤修改

image.png

完成之后因为我们是两张网卡,所以还需要配置一下网络配置文件,在我们的这个目录下

cd /etc/sysconfig/network-scripts/

会发现只有一块33网卡配置文件,并没有36配置文件

cp -a ifcfg-ens33 ifcfg-ens36

在本机上先查到连接网路的相关配置都是什么,重点是三和四

image.png

我们修改ifconfig-ens36文件

vim ifcfg-ens36

配置如下(除了#号部分其他的通用模板可以直接复制)

TYPE="Ethernet"

PROXY_METHOD="none"

BROWSER_ONLY="no"

BOOTPROTO="static"

DEFROUTE="yes"

IPV4_FAILURE_FATAL="no"

IPV6INIT="yes"

IPV6_AUTOCONF="yes"

IPV6_DEFROUTE="yes"

IPV6_FAILURE_FATAL="no"

IPV6_ADDR_GEN_MODE="stable-privacy"

NAME="ens36"

DEVICE="ens36"

ONBOOT="yes"

IPADDR=10.6.33.140  #对应上图的ip地址

NETWORK=255.255.255.0  #对应上图的子网掩码

GATEWAY=10.6.33.1   #对应上图的网关

DNS1=8.8.8.8  #可写可不写,也可以对应上图的DNS位置填一下

然后我们重启服务

systemctl restart network

用ifconfig查一下ip,发现ens36的ip从原来的没有变成有了,然后我们再打开虚拟机的浏览器测试一下上网功能发现也正常了。

image.png

客户端:一块网卡(正常新建一台Windows服务器什么都不操作即可)

image.png

服务端

[root@mail ~]# yum install squid -y

[root@mail squid]# cat /etc/squid/squid.conf

#

# Recommended minimum configuration:

#

# Example rule allowing access from your local networks.

# Adapt to list your (internal) IP networks from where browsing

# should be allowed

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 localnet src fc00::/7       # RFC 4193 local private network range

acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443

acl Safe_ports port 80  # http

acl Safe_ports port 21  # ftp

acl Safe_ports port 443  # https

acl Safe_ports port 70  # gopher

acl Safe_ports port 210  # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280  # http-mgmt

acl Safe_ports port 488  # gss-http

acl Safe_ports port 591  # filemaker

acl Safe_ports port 777  # multiling http

acl CONNECT method CONNECT

#

# Recommended minimum Access Permission configuration:

#

# Deny requests to certain unsafe ports

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports

http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost

http_access allow localhost manager

http_access deny manager

# We strongly recommend the following be uncommented to protect innocent

# web applications running on the proxy server who think the only

# one who can access services on "localhost" is a local user

#http_access deny to_localhost

#

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

#

# Example rule allowing access from your local networks.

# Adapt localnet in the ACL section to list your (internal) IP networks

# from where browsing should be allowed

http_access allow localnet

http_access allow localhost

# And finally deny all other access to this proxy

http_access deny all

# Squid normally listens to port 3128

http_port 3128

# Uncomment and adjust the following to add a disk cache directory.

#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir

coredump_dir /var/spool/squid

#

# Add any of your own refresh_pattern entries above these.

#

refresh_pattern ^ftp:  1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

refresh_pattern .  0 20% 4320

image.png

正向代理

标准正向代理

Squid 服务程序软件包在正确安装并启动后,默认就已经可以为用户提供标准正向代 理模式服务了,而不再需要单独修改配置文件或者进行其他操作

服务器端

[root@localhost ~]# systemctl restart squid

[root@localhost ~]# systemctl enable squid

进入客户端(Windows系统,之前单元介绍过如何在vm搞Windows:15章)打开网页调整

我们第一次打开的时候会发现NAT模式下的网段可能和服务端的不在一个频段上,我们可以通过查看服务端的频段去找到相关虚拟网络中的对应的网络名称

image.png

然后在客户端的设置里把相关网络改成一样的网络

image.png

然后再把客户端Windows的ipv4改成自动获取

image.png

检查一遍是否和服务端的仅主机网卡在一个频段内,这时候我们发现已经变过来了,这个时候我们的电脑是上不了网的

image.png

服务端把相关防火墙和selinux都关闭

[root@localhost network-scripts]# vim ifcfg-ens36

[root@localhost network-scripts]# systemctl restart network

客户端访问成功,没网的设备也因为连了squid有网可以使用了

image.png

服务端可以通过命令修改端口号

semanage port -a -t squid_port_t -p tcp 10000

ACL 访问控制

Squid 服务程序的访问控制列表(ACL)功能主要是为了限制上网行为,通过布置上网策略实现对网络分区域分时段的控制


只允许 IP 地址为 192.168.10.20 的客户端使用服务器上的 Squid 服务程序提供 的代理服务,禁止其余所有的主机代理请求(加粗字体表示添加命令)

[root@localhost network-scripts]# vim /etc/squid/squid.conf

...

25 acl CONNECT method CONNECT

26 acl client src 192.168.111.129

27 #

28 # Recommended minimum Access Permission configuration:

...

33 # Deny CONNECT to other than secure SSL ports

34 http_access deny CONNECT !SSL_ports

35 http_access allow client

36 http_access deny all

37 # Only allow cachemgr access from localhost

38 http_access allow localhost manager

39 http_access deny manager

...

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

[root@localhost network-scripts]# vim /etc/squid/squid.conf

...

25 acl CONNECT method CONNECT

26 acl deny_keyword url_regex -i linux

27 #

28 # Recommended minimum Access Permission configuration:

29 #

30 # Deny requests to certain unsafe ports

31 http_access deny deny_keyword

32 http_access deny !Safe_ports

...

禁止所有客户端访问某个特定的网站(加粗字体表示添加命令)

[root@localhost network-scripts]# vim /etc/squid/squid.conf

...

26 acl deny_url url_regex http://www.linux.com

27 #

28 # Recommended minimum Access Permission configuration:

29 #

30 # Deny requests to certain unsafe ports

31 http_access deny deny_url

32 http_access deny !Safe_ports

...

禁止员工在企业网内部下载带有某些后缀的文件(加粗字体表示添加命令)

[root@localhost network-scripts]# vim /etc/squid/squid.conf

...

26 acl badfile urlpath_regex -i \.rar\.avi \.avi

27 #

28 # Recommended minimum Access Permission configuration:

29 #

30 # Deny requests to certain unsafe ports

31 http_access deny badfile

32 http_access deny !Safe_ports

...

透明正向代理

正向代理服务一般是针对企业内部的所有员工设置的,“透明”二字指的是让用户在没有感知的情况下使用代理服务,这样的好处是一方面不需 要用户手动配置代理服务器的信息,进而降低了代理服务的使用门槛;另一方面也可以更隐 秘地监督员工的上网行为。

[root@localhost network-scripts]# vim /etc/squid/squid.conf

...

57 # Squid normally listens to port 3128

58 http_port 3128 transparent

59  

60 # Uncomment and adjust the following to add a disk cache directory.

61 cache_dir ufs /var/spool/squid 100 16 256

...

保存主配置文件并 退出后再使用 squid -k parse 命令检查主配置文件是否有错误,以及使用 squid -z 命令对 Squid 服务程序的透明代理技术进行初始化。

反向代理

反向代理是 Squid 服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发 起的用户请求交给 Squid 服务器缓存节点来处理。

把端口号 3128 修改为网站源服务器的地址和端 口号,此时正向解析服务会被暂停(它不能与反向代理服务同时使用)。

[root@localhost network-scripts]# vim /etc/squid/squid.conf

...

58 # Squid normally listens to port 3128

59 http_port 您的桥接网卡 IP 地址:80 vhost

60 cache_peer 网站源服务器 IP 地址 parent 80 0 originserver

61 # Uncomment and adjust the following to add a disk cache directory.

62 #cache_dir ufs /var/spool/squid 100 16 256

...

通过ip查看相关网站

结语

简问简答

1.简述 Squid 服务程序提供的正向代理服务的主要作用。

答:实现代理上网、隐藏用户的真实访问信息以及对控制用户访问网站行为的访问控制列 表(ACL)进行限制。

2.简述 Squid 服务程序提供的反向代理服务的主要作用。

答:加快用户访问网站的速度,降低网站源服务器的负载压力。

3.Squid 服务程序能够提供的代理模式有哪些?

答:正向代理模式与反向代理模式,其中正向代理模式又分为标准正向代理模式与透明正 向代理模式。

4.标准正向代理模式与透明正向代理模式的区别是什么?

答:区别在于用户是否需要配置代理服务器的信息。若使用透明代理模式,则用户感知不 到代理服务的存在。

5.使用 Squid 服务程序提供的标准正向代理模式时,需要在浏览器中配置哪些信息?

答:需要填写 Squid 服务器的 IP 地址及端口号信息。

6.若让客户端主机使用透明正向代理模式,则需要用 DHCP 服务器为客户端主机分配什 么信息?  

答:需要为客户端主机分配 IP 地址、子网掩码、网关地址以及外部 DNS 服务器地址。

如果想根据教程实践的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
3月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
|
3月前
|
缓存 NoSQL Java
【Azure Redis 缓存】示例使用 redisson-spring-boot-starter 连接/使用 Azure Redis 服务
【Azure Redis 缓存】示例使用 redisson-spring-boot-starter 连接/使用 Azure Redis 服务
|
4天前
|
存储 缓存 监控
|
28天前
|
存储 缓存 监控
|
23天前
|
存储 缓存 固态存储
|
28天前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
58 4
|
2月前
|
Linux 网络虚拟化 Windows
ccproxy windows上用的代理软件(类似linux系统上的squid)
ccproxy windows上用的代理软件(类似linux系统上的squid)
|
3月前
|
缓存 NoSQL Go
缓存设计的好,服务基本不会倒
缓存设计的好,服务基本不会倒
|
3月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤
【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤
|
Linux 开发工具
Linux squid配置
yum -y install squid vi /etc/squid/squid.conf http_port 3128 cache_mem 64 MB maximum_object_size 4 MB cache_dir ufs /var/spool...
1235 0