在CentOS 8上安装和配置Squid代理

在本指南中,您将学习如何在CentOS 8上安装和配置Squid代理。

鱿鱼 功能齐全的Web代理缓存服务器应用程序,可为HTTP,FTP,SSL请求,DNS查找提供代理和缓存服务。它还可以缓存和重用经常请求的网页,从而提供透明的缓存,从而减少带宽并缩短响应时间。

在CentOS 8上安装和配置Squid代理

执行系统更新

首先,请确保您的系统软件包是最新的。

sudo dnf update

在CentOS 8上安装Squid代理

Squid代理在默认的CentOS 8存储库中可用,并且可以通过运行命令进行安装。

sudo dnf install squid
=======================================================================================================================================================
 Package                             Arch                     Version                                                Repository                   Size
=======================================================================================================================================================
Installing:
 squid                               x86_64                   7:4.4-5.module_el8.0.0+182+b6dc903f                    AppStream                   3.6 M
Installing dependencies:
 libecap                             x86_64                   1.0.1-2.module_el8.0.0+182+b6dc903f                    AppStream                    29 k
 perl-DBI                            x86_64                   1.641-2.module_el8.0.0+66+fe1eca09                     AppStream                   740 k
 perl-Digest-SHA                     x86_64                   1:6.02-1.el8                                           AppStream                    66 k
 perl-Math-BigInt                    noarch                   1:1.9998.11-5.el8                                      BaseOS                      195 k
 perl-Math-Complex                   noarch                   1.59-416.el8                                           BaseOS                      108 k
Enabling module streams:
 perl-DBI                                                     1.641                                                                                   
 squid                                                        4                                                                                       

Transaction Summary
=======================================================================================================================================================
Install  6 Packages

Total download size: 4.7 M
Installed size: 16 M
Is this ok [y/N]: y

在CentOS 8上运行Squid

安装完成后,在系统启动时启动Squid并使其运行。

sudo systemctl enable --now squid

在CentOS 8上配置Squid代理

Squid代理已安装并正在运行。进行配置以满足您环境的需求。

首先 /etc/squid/squid.conf 是具有建议的最小配置设置的默认Squid代理配置。

默认情况下,Squid配置文件如下所示(注释已删除):

acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|?) 0     0%      0
refresh_pattern .

在根据需要开始自定义Squid配置之前,请备份配置文件。

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

配置Squid访问策略

创建一个访问控制列表,以定义使用Squid作为代理的本地网络。每个ACL均由名称,类型和值组成,并使用 acl 可选的。

例如,要将网络192.168.100.0/24上的主机配置为使用Squid作为代理服务器,请使用类似于以下内容的ACL:

acl mylocalnet src 192.168.100.0/24

适当更换网络

这将创建一个名为 mylocalnet 在指定的网络上指定主机。

定义ACL之后,您可以通过添加引用已定义ACL的行来允许或拒绝对缓存功能的访问。例如 http_access 允许或拒绝Web浏览器访问Web缓存。

http_access allow mylocalnet

配置选项的顺序很重要,因为Squid从上到下读取配置。因此,您可以将上述行添加到您的配置文件中。

#
### Adding Custom ACL #######
acl mylocalnet src 192.168.100.0/24
http_access allow mylocalnet

# 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 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
...

封锁特定网站

您可以使用Squid代理来限制对某些网站的访问。例如,要阻止对youtube,facebook和netflix的访问,您需要创建一个文件来定义这些网站的域,如下所示。

vim /etc/squid/restricted-sites.squid
.youtube.com
.facebook.com
.netflix.com

然后在squid配置文件中为上述受限站点创建并设置ACL。 拒绝 定义了ACL规则。

#
### Adding Custom ACL #######
acl mylocalnet src 192.168.100.0/24

## Adding Sites to Block access to ###
acl blockedsites dstdomain "/etc/squid/restricted-sites.squid"

http_access deny blockedsites
http_access allow mylocalnet
...

域命令也可以由ACL语句分隔。

acl blockedsites dstdomain youtube.com facebook.com netflix.com

根据特定关键字屏蔽网站

您还可以使用关键字来限制对网站的访问。创建具有特定关键字的文件,如下所示。

vim /etc/squid/banned-keywords.squid
porn
ads
movie
gamble

对squid配置文件进行必要的更改。

#
### Adding Custom ACL #######
acl mylocalnet src 192.168.100.0/24

## Adding Sites to Block access to ###
acl blockedsites dstdomain "/etc/squid/restricted-sites.squid"
acl keyword-ban url_regex "/etc/squid/keyword-ban.squid"

http_access deny blockedsites
http_access deny keyword-ban
http_access allow mylocalnet
...

注释掉其他网络ACL。

...
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
## should be allowed
#acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
#acl localnet src 10.0.0.0/8            # RFC 1918 local private network (LAN)
#acl localnet src 100.64.0.0/10         # RFC 6598 shared address space (CGN)
#acl localnet src 169.254.0.0/16        # RFC 3927 link-local (directly plugged) machines
#acl localnet src 172.16.0.0/12         # RFC 1918 local private network (LAN)
#acl localnet src 192.168.0.0/16                # RFC 1918 local private network (LAN)
#acl localnet src fc00::/7              # RFC 4193 local private network range
#acl localnet src fe80::/10             # RFC 4291 link-local (directly plugged) machines
...

还要注释localnet访问规则。

#http_access allow localnet

屏蔽传出流量

就像使用代理服务器向其他Web服务器提供代理的IP地址并匿名化IP地址一样,代理服务器可能会在传出的HTTP请求中公开IP地址。但是,您可以通过在squid配置文件的末尾包含以下指令来覆盖它:

...
#
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
# Anonymize Traffic
via off
forwarded_for off

request_header_access From deny all
request_header_access Server deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all
request_header_access Cache-Control deny all
request_header_access Proxy-Connection deny all
request_header_access X-Cache deny all
request_header_access X-Cache-Lookup deny all
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
request_header_access Pragma deny all
request_header_access Keep-Alive deny all

更改Squid默认端口

鱿鱼代理听 TCP port 3128 默认情况下。如果要更改此端口,只需打开 /etc/squid/squid.conf 替换配置文件中的值 http_port 使用所需的端口号。

例如,将默认端口更改为8888,除非另一个应用程序正在同一端口上侦听。

...
# Squid normally listens to port 3128
# http_port 3128                 << Comment the line by adding #
http_port 8888
...

您也可以将其设置为侦听特定IP(相应地替换IP地址

http_port 192.168.100.50:8888

重启鱿鱼

完成后,保存文件并重新启动squid。

systemctl restart squid

确保Squid在新端口上侦听。

ss -altnp | grep 8888
LISTEN   0         128           192.168.100.50:8888            0.0.0.0:*        users:(("squid",pid=4321,fd=15))

在防火墙中允许Squid端口

如果启用了防火墙,则允许 Squid 端口。如果更改了默认值,请更换端口。

firewall-cmd --add-port=3128/tcp --permanent
firewall-cmd --reload

配置代理客户端以连接到代理服务器

要配置客户端以连接到Squid代理服务器,请设置系统范围的代理配置,将客户端配置为使用Squid代理作为网关,或在浏览器中设置代理设置。

系统范围的代理配置

创建配置文件以设置系统范围的代理配置 /etc/profile.d 一个环境变量,它定义squid代理服务器的详细信息,如下所示:

vim /etc/profile.d/squid.sh

相应地替换Squid服务器的IP地址。

PROXY_URL="192.168.100.50:3128"
HTTP_PROXY=$PROXY_URL
HTTPS_PROXY=$PROXY_URL
FTP_PROXY=$PROXY_URL
http_proxy=$PROXY_URL
https_proxy=$PROXY_URL
ftp_proxy=$PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy

然后获取一个新的配置文件。

source /etc/profile.d/squid.sh

要对此进行测试,请尝试从客户端下载一些内容,同时使用鱿鱼代理服务器跟踪访问日志。

在客户端上运行。

wget google.com
--2019-11-21 20:26:04--  http://google.com/
Connecting to 192.168.100.50:8888... connected.
Proxy request sent, awaiting response... 301 Moved Permanently
Location: http://www.google.com/ [following]
--2019-11-21 20:26:04--  http://www.google.com/
Reusing existing connection to 192.168.100.50:8888.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html.4’

index.html.4                              [                                                                      ]  12.16K  --.-KB/s    in 0.01s   

2019-11-21 20:26:04 (914 KB/s) - ‘index.html.4’ saved [12449]

鱿鱼代理服务器。

tail -f /var/log/squid/access.log 
1574357161.958    294 192.168.100.51 TCP_MISS/301 664 GET http://google.com/ - HIER_DIRECT/216.58.223.110 text/html
1574357162.217    255 192.168.100.51 TCP_MISS/200 13350 GET http://www.google.com/ - HIER_DIRECT/216.58.223.68 text/html
...

尝试访问被阻止的站点。

wget youtube.com
--2019-11-21 20:27:24--  http://youtube.com/
Connecting to 192.168.100.50:8888... connected.
Proxy request sent, awaiting response... 403 Forbidden
2019-11-21 20:27:24 ERROR 403: Forbidden.
tail -f /var/log/squid/access.log
1574357241.664      0 192.168.100.51 TCP_DENIED/403 3994 GET http://youtube.com/ - HIER_NONE/- text/html

您也可以将Squid服务器设置为默认网关。

配置Firefox通过Squid服务器连接到外部网络。 偏好设定 > l> 网络设置>手动代理设置。检查一下 将此代理服务器用于所有协议。

到此结束有关如何在CentOS 8上安装和配置Squid代理的教程。

阅读更多

阅读更多 鱿鱼Wiki

Sidebar