51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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代理服务器 | mysquid | 192.168.250.231 | Centos7.8 | | 测试机(客户机) | moonrong | 110.129.100.101 | WIN10系统 | | WEB服务器 | testa | www.haopython.com | centos7.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.客户端配置并测试

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

赞(0)
未经允许不得转载:工具盒子 » CentOS 7.8上部署 Squid代理服务器