前言
身为一个三年的运维工程师,从开发转测开再转运维,都是不断学习的过程,未必开发才是最优秀的,找到适合自己的职业不断深耕,你也会在自己的行业大放光彩,本系列依照《Linux就该这么学》系列随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,也希望大家多关注刘遄老师的第二版关于centos8的丛书,学习最前沿的Linux相关技术。
常用命令汇总
代理缓存服务
Squid 是 Linux 系统中最为流行的一款高性能代理服务软件,通常用作 Web 网站的前置 缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。
正向代理模式,是指让用户通过 Squid 服务程序获取网站页面等资源,以及基于访 问控制列表(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代 理模式与透明代理模式。标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源 被再次访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的 IP 地址与 端口号信息,否则默认不使用代理服务。
反向代理模式是指让多台节点主机反向缓存网站数据,从而加快用户访问速度。
配置 Squid 服务程序
准备两台服务器,一台服务端,一台客户端,新添加的网卡设备必须选择为桥接模式,绑定到服务端
服务端:两块网卡
主机网卡我不介绍了,但是桥接网卡怕大家没配置过所以顺着流程演示一遍
第一步我们要在虚拟机网络管理里边把这些位置按步骤修改
完成之后因为我们是两张网卡,所以还需要配置一下网络配置文件,在我们的这个目录下
cd /etc/sysconfig/network-scripts/
会发现只有一块33网卡配置文件,并没有36配置文件
cp -a ifcfg-ens33 ifcfg-ens36
在本机上先查到连接网路的相关配置都是什么,重点是三和四
我们修改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从原来的没有变成有了,然后我们再打开虚拟机的浏览器测试一下上网功能发现也正常了。
客户端:一块网卡(正常新建一台Windows服务器什么都不操作即可)
服务端
[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
正向代理
标准正向代理
Squid 服务程序软件包在正确安装并启动后,默认就已经可以为用户提供标准正向代 理模式服务了,而不再需要单独修改配置文件或者进行其他操作
服务器端
[root@localhost ~]# systemctl restart squid
[root@localhost ~]# systemctl enable squid
进入客户端(Windows系统,之前单元介绍过如何在vm搞Windows:15章)打开网页调整
我们第一次打开的时候会发现NAT模式下的网段可能和服务端的不在一个频段上,我们可以通过查看服务端的频段去找到相关虚拟网络中的对应的网络名称
然后在客户端的设置里把相关网络改成一样的网络
然后再把客户端Windows的ipv4改成自动获取
检查一遍是否和服务端的仅主机网卡在一个频段内,这时候我们发现已经变过来了,这个时候我们的电脑是上不了网的
服务端把相关防火墙和selinux都关闭
[root@localhost network-scripts]# vim ifcfg-ens36
[root@localhost network-scripts]# systemctl restart network
客户端访问成功,没网的设备也因为连了squid有网可以使用了
服务端可以通过命令修改端口号
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 服务器地址。