云计算运维

Windows Server 2003 - Windows Server 2019 系统工具,Linux系统脚本,Mysql、Nginx、PHP、Redis、K8S、Seafile、Weblogic 、Jenkins、DNS、DHCP、FTP、IIS、Zookeeper、Rabbitmq、Oracle、Tomcat、Mavrn等服务搭建维护,请关注我.

CentOS 7.8上部署 Squid代理服务器


1.squid代理服务器简介

Squid是一款流行的代理服务器软件,支持正向代理、透明代理和反向代理。它可以进行缓存、流量控制、安全性和隐私保护等操作,广泛应用于企业和互联网服务提供商。

Squid的主要功能包括:

  • 缓存:Squid可以缓存经常访问的Web页面、图片和其他内容,从而提高访问速度和响应时间。
  • 流量控制:Squid可以限制用户的访问速度和访问量,避免网络拥塞和滥用。
  • 安全性:Squid可以进行访问控制、身份验证和日志记录,保护网络安全和隐私。
  • 隐私保护:Squid可以隐藏客户端的真实IP地址,保护用户隐私和匿名性。

常用的Squid端口包括:

  • 3128:默认的Squid代理端口,用于HTTP代理和HTTPS代理。
  • 8080:常用的Squid代理端口,通常用于Web代理和透明代理。
  • 80:常用的Web服务端口,当Squid作为反向代理服务器时,可以使用80端口接收客户端请求并将其转发给后端服务器。

2.代理类型

代理类型代理位置代理功能应用场景
正向代理代理服务器位于客户端和目标服务器之间隐藏客户端的真实IP地址、访问控制、缓存等突破网络限制、提高访问速度、安全访问互联网
透明代理代理服务器位于客户端和目标服务器之间隐藏客户端的真实IP地址、访问控制、缓存等突破网络限制、提高访问速度、安全访问互联网
反向代理代理服务器位于目标服务器和客户端之间负载均衡、缓存、安全控制等构建高可用性和高性能的Web应用程序和服务

3.常见代理服务器软件

软件名称功能支持的代理类型应用领域
Squid缓存、流量控制、安全性和隐私保护正向代理、透明代理和反向代理企业和互联网服务提供商
Nginx负载均衡、缓存和安全性等反向代理构建高性能的Web应用程序和网站
HAProxy流量控制、负载均衡和安全性等反向代理构建高可用性的Web应用程序和服务
Apache负载均衡、缓存和安全性等反向代理构建高性能的Web应用程序和网站
Varnish缓存、流量控制和安全性等反向代理构建高性能的Web应用程序和网站
Tinyproxy缓存和流量控制等正向代理个人用户和小型企业
Pound流量控制和负载均衡等反向代理构建高可用性的Web应用程序和服务
Privoxy隐私保护和广告过滤等正向代理个人用户和小型企业

其中常用的为SquidNginx服务器。

4.部署squid代理服务器基础环境准备

服务名称主机名IP地址/域名操作系统
Squid代理服务器mysquid192.168.250.231Centos7.8
测试机(客户机)moonrong110.129.100.101WIN10系统
WEB服务器testawww.haopython.comcentos7.6

关闭代理服务器selinux。

5.安装Squid服务器

5.1yun方式安装
[root@mysquid ~]# yum -y install squid
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                                                                                                      | 3.6 kB  00:00:00     
extras                                                                                                                                                                                    | 2.9 kB  00:00:00     
updates                                                                                                                                                                                   | 2.9 kB  00:00:00     
(1/2): extras/7/x86_64/primary_db                                                                                                                                                         | 246 kB  00:00:05     
(2/2): updates/7/x86_64/primary_db                                                                                                                                                        |  15 MB  00:00:44     
正在解决依赖关系
--> 正在检查事务
---> 软件包 squid.x86_64.7.3.5.20-17.el7_9.6 将被 安装
--> 正在处理依赖关系 squid-migration-script,它被软件包 7:squid-3.5.20-17.el7_9.6.x86_64 需要
--> 正在处理依赖关系 perl(Digest::MD5),它被软件包 7:squid-3.5.20-17.el7_9.6.x86_64 需要
5.2启动squid服务
[root@mysquid ~]# systemctl start squid
[root@mysquid ~]# systemctl enable squid
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.
[root@mysquid ~]# 
5.3查看服务启动状态
[root@mysquid ~]# systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2022-04-18 11:25:22 CST; 4min 1s ago
 Main PID: 3019 (squid)
   CGroup: /system.slice/squid.service
           ├─3019 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─3021 (squid-1) -f /etc/squid/squid.conf
           └─3024 (logfile-daemon) /var/log/squid/access.log

4月 18 11:25:22 mysquid systemd[1]: Starting Squid caching proxy...
4月 18 11:25:22 mysquid squid[3019]: Squid Parent: will start 1 kids
4月 18 11:25:22 mysquid squid[3019]: Squid Parent: (squid-1) process 3021 started
4月 18 11:25:22 mysquid systemd[1]: Started Squid caching proxy.
[root@mysquid ~]# 

active (running)表示启动成功。

6.配置squid服务

squid默认配置文件在/etc/squid/squid.conf下,先进行备份:

[root@mysquid ~]# cp /etc/squid/squid.conf /etc/squid/squid.conf.ori.20220418
[root@mysquid ~]# 

默认情况下,Squid 被配置成在服务器所有网络接口上监听端口3128。如果想修改端口号,并且设置监听接口,定位到http_port处,并且指定接口 IP 地址和新端口。如果没有接口指定,Squid 将监听所有网络接口。

/etc/squid/squid.conf
# Squid normally listens to port 3128
http_port IP_ADDR:PORT

在所有接口上和默认端口上运行 Squid 对大部分用户都很适用。

可以使用 Access Control Lists (ACLs)来控制 Squid 服务器的访问。

默认情况下,Squid 仅仅允许从本地主机和本地网络来的访问。

如果所有将要使用代理服务器的客户端都有一个固定 IP 地址,你可以创建一个 包含允许 IP 地址的 ACL。

不用在主要配置中添加 IP地址,我们可以创建一个新配置文件,用来配置地址:/etc/squid/myallowed_ips.txt

[root@mysquid squid]# cat squid.conf

acl allowed_ips src "/etc/squid/myallowed_ips.txt"  增加该项
……

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access allow allowed_ips   #增加该项
http_access deny manager

这里需要注意的是,确认在http_access deny all之前添加了这一行。

http_access指令类似于防火墙规则。

Squid 从上到下读取规则,并且后面匹配的规则不会被处理。

接着重启一下squid服务并查看状态:

[root@mysquid squid]# systemctl status squid.service
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2022-04-18 11:54:04 CST; 4s ago
  Process: 3353 ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF (code=exited, status=1/FAILURE)
  Process: 3401 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 3393 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
 Main PID: 3405 (squid)
    Tasks: 3
   CGroup: /system.slice/squid.service
           ├─3405 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─3407 (squid-1) -f /etc/squid/squid.conf
           └─3410 (logfile-daemon) /var/log/squid/access.log

4月 18 11:53:59 mysquid systemd[1]: Starting Squid caching proxy...
4月 18 11:54:04 mysquid squid[3405]: Squid Parent: will start 1 kids
4月 18 11:54:04 mysquid squid[3405]: Squid Parent: (squid-1) process 3407 started
4月 18 11:54:04 mysquid systemd[1]: Started Squid caching proxy.
[root@mysquid squid]# 

7.Squid 身份验证

Squid 可以使用不同的后端,包括 Samba,LDAP 和 HTTP 基本验证来验证用户。

在本例中,我们配置 Squid 使用基本验证。它是一个简单的验证方法,内置在 HTTP 协议中。

我们将使用openssl来生成密码,并且附加username:password对到文件/etc/squid/htpasswd文件中,并且显示出来:

格式如下:

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

比如,这里创建一个用户名为moonrong,密码为SUse#87ss,运行如下:

[root@mysquid squid]# printf "moonrong:$(openssl passwd -crypt SUse#87ss)\n" | sudo tee -a /etc/squid/htpasswd
Warning: truncating password to 8 characters
moonrong:eM1d7DCkceo6g
[root@mysquid squid]# 

下一步是配置 Squid 去启用 HTTP 基本验证,并且使用这个文件。

打开主要配置文件,添加下面的内容:/etc/squid/squid.conf

[root@mysquid squid]# vim squid.conf
[root@mysquid squid]# cat squid.conf

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

前面三行我们创建了一个 ACL 名称为authenticated,最后一行允许通过验证用户访问。

接着重启squid服务:

[root@mysquid squid]# systemctl restart squid
[root@mysquid squid]# systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2022-04-18 12:04:40 CST; 8s ago
  Process: 3558 ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 3569 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 3563 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
 Main PID: 3572 (squid)
    Tasks: 3
   CGroup: /system.slice/squid.service
           ├─3572 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─3574 (squid-1) -f /etc/squid/squid.conf
           └─3577 (logfile-daemon) /var/log/squid/access.log

4月 18 12:04:35 mysquid systemd[1]: Starting Squid caching proxy...
4月 18 12:04:40 mysquid squid[3572]: Squid Parent: will start 1 kids
4月 18 12:04:40 mysquid squid[3572]: Squid Parent: (squid-1) process 3574 started
4月 18 12:04:40 mysquid systemd[1]: Started Squid caching proxy.
[root@mysquid squid]# 

8.防火墙端口放行配置

squid服务需要打开3128端口:

[root@mysquid /]# firewall-cmd --permanent --add-port=3128/tcp
success
[root@mysquid /]# firewall-cmd --reload
success
[root@mysquid /]# 

9.客户端配置并测试

以火狐浏览器为例,设置代理服务器,进行测试。

  • 分享:
评论
还没有评论
    发表评论 说点什么