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 8迁移Anolis OS 8
Anolis OS 8在做出差异性开发同时,在生态上和依赖管理上保持跟CentOS 8.x兼容,本文为您介绍如何通过AOMS迁移工具实现CentOS 8.x到Anolis OS 8的迁移。
目录
打赏
0
0
0
0
1124
分享
相关文章
|
3月前
|
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
161 25
|
4月前
|
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
96 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
334 19
|
6月前
|
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
2849 7
|
2月前
|
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是Redis+Caffeine构建高性能二级缓存,废话不多说直接开始~
295 0
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
110 32
|
2月前
|
Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡
Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡
69 5
Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡
Redis--缓存击穿、缓存穿透、缓存雪崩
缓存击穿、缓存穿透和缓存雪崩是Redis使用过程中可能遇到的常见问题。理解这些问题的成因并采取相应的解决措施,可以有效提升系统的稳定性和性能。在实际应用中,应根据具体场景,选择合适的解决方案,并持续监控和优化缓存策略,以应对不断变化的业务需求。
189 29
Redis应用—8.相关的缓存框架
本文介绍了Ehcache和Guava Cache两个缓存框架及其使用方法,以及如何自定义缓存。主要内容包括:Ehcache缓存框架、Guava Cache缓存框架、自定义缓存。总结:Ehcache适合用作本地缓存或与Redis结合使用,Guava Cache则提供了更灵活的缓存管理和更高的并发性能。自定义缓存可以根据具体需求选择不同的数据结构和引用类型来实现特定的缓存策略。
213 16
Redis应用—8.相关的缓存框架
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问