在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