Squid 是一個(gè)功能齊全的緩存代理,支持流行的網(wǎng)絡(luò)協(xié)議,如 HTTP , HTTPS , FTP 等。它可用于通過緩存重復(fù)請求,過濾 Web 流量和訪問地域限制內(nèi)容來提高 Web 服務(wù)器的性能。
在本教程中,我們將解釋如何在 Debian Buster 上設(shè)置 Squid 代理。我們還將向您展示如何配置 Firefox 和 Google Chrome 網(wǎng)絡(luò)瀏覽器以使用它。
在 Debian 上安裝 Squid
Squid 軟件包包含在 Debian 10 存儲庫的標(biāo)準(zhǔn)中。以 sudo 用戶身份運(yùn)行以下命令來安裝 Squid :
sudo apt update sudo apt install squid
安裝完成后, Squid 服務(wù)將自動(dòng)啟動(dòng)。
通過檢查 Squid 服務(wù)的狀態(tài)來驗(yàn)證安裝是否成功并且 Squid 服務(wù)是否正在運(yùn)行:
sudo systemctl status squid
● squid.service - LSB: Squid HTTP Proxy version 3.x Loaded: loaded (/etc/init.d/squid; generated) Active: active (running) since Sat 2019-08-03 08:52:47 PDT; 3s ago ...
配置 Squid
可以通過編輯 /etc/squid/squid.conf 配置文件來配置 Squid 。可以使用 “include” 指令包含單獨(dú)的配置文件。
該 squid.conf 配置文件包含注釋描述每個(gè)配置選項(xiàng)做什么。
在進(jìn)行任何更改之前,最好備份原始文件:
sudo cp /etc/squid/squid.conf{,.orginal}
要修改配置,請?jiān)谖谋揪庉嬈髦写蜷_文件:
sudo nano /etc/squid/squid.conf
默認(rèn)情況下, Squid 偵聽所有網(wǎng)絡(luò)接口上的 3128 端口。
如果要更改端口并設(shè)置偵聽接口,請找到以 http_port 開頭的行,并指定接口 IP 地址和新端口。如果沒有指定接口, Squid 將監(jiān)聽所有接口。
/etc/squid/squid.conf 中
# Squid normally listens to port 3128 http_port IP_ADDR:PORT
在所有接口和默認(rèn)端口上運(yùn)行 Squid 應(yīng)該適合大多數(shù)用戶。
訪問控制列表 (ACL) 允許您控制客戶端訪問 Web 資源的方式。默認(rèn)情況下, Squid 只允許從 localhost 訪問。
如果將使用代理的所有客戶端都具有靜態(tài) IP 地址,則最簡單的選項(xiàng)是創(chuàng)建將包含允許的 IP 的 ACL 。
我們將創(chuàng)建一個(gè)存儲 IP 地址的新包含文件,而不是在主配置文件中添加 IP 地址:
/etc/squid/allowed_ips.txt
192.168.33.1 # All other allowed IPs
完成后,打開主配置文件并創(chuàng)建一個(gè)名為 allowed_ips(第一個(gè)突出顯示的行)的新 ACL ,并允許使用該 http_access 指令(第二個(gè)突出顯示的行)訪問該 ACL :
/etc/squid/squid.conf 中
# ... acl allowed_ips src "/etc/squid/allowed_ips.txt" # ... #http_access allow localnet http_access allow localhost http_access allow allowed_ips # And finally deny all other access to this proxy http_access deny all
http_access 規(guī)則的順序很重要。請務(wù)必最后添加該行 http_access deny all 。
該 http_access 指令的工作方式與防火墻規(guī)則類似。 Squid 從上到下讀取規(guī)則,當(dāng)規(guī)則匹配時(shí),不處理下面的規(guī)則。
每當(dāng)您更改配置文件時(shí),都需要重新啟動(dòng) Squid 服務(wù)才能使更改生效:
sudo systemctl restart squid
Squid 身份驗(yàn)證
Squid 可以使用不同的后端,包括 Samba , LDAP 和 HTTP 基本身份驗(yàn)證。
在這個(gè)例子中,我們將配置 Squid 使用基本身份驗(yàn)證。它是 HTTP 協(xié)議中內(nèi)置的簡單身份驗(yàn)證方法。
我們將使用該 openssl 實(shí)用程序生成密碼,并使用以下命令將該 username:password 對附加到 /etc/squid/htpasswd 文件 tee 中:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)n" | sudo tee -a /etc/squid/htpasswd
讓我們創(chuàng)建一個(gè)名為 “buster” 的用戶,密碼為“ Sz$Zdg69” :
printf "buster:$(openssl passwd -crypt 'Sz$Zdg69')n" | sudo tee -a /etc/squid/htpasswd
buster:RrvgO7NxY86VM
下一步是啟用 HTTP 基本身份驗(yàn)證。打開主配置并添加以下內(nèi)容:
/etc/squid/squid.conf 中
# ... auth_param basic program /usr/lib/squid3/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
前三個(gè)突出顯示的行創(chuàng)建一個(gè)名為 authenticated 的新 ACL,最后一個(gè)突出顯示的行允許訪問經(jīng)過身份驗(yàn)證的用戶。
重啟 Squid 服務(wù):
sudo systemctl restart squid
配置防火墻
UFW 用戶可以 3128 通過啟用 “Squid” 配置文件來打開端口:
sudo ufw allow 'Squid'
如果使用 nftables 過濾與系統(tǒng)的連接,請通過發(fā)出以下命令打開必要的端口:
sudo nft add rule inet filter input tcp dport 3128 ct state new,established counter accept
如果 Squid 在另一個(gè)非默認(rèn)端口上運(yùn)行,則需要允許該端口上的流量。
配置瀏覽器以使用代理
在本節(jié)中,您將向您展示如何配置瀏覽器以使用 Squid 代理。
火狐
對于 Windows , macOS 和 Linux ,以下步驟相同。
- 在右上角,點(diǎn)擊漢堡包圖標(biāo)?打開 Firefox 的菜單:
- 單擊⚙ Preferences 鏈接。
- 向下滾動(dòng)到該 Network Settings 部分,然后單擊 Settings… 按鈕。
-
將打開一個(gè)新窗口。
- 選擇 Manual proxy configuration 單選按鈕。
- 在輸入您的 Squid 服務(wù)器的 IP 地址 HTTP Host 字段 3128 的 Port 字段。
- 選中該 Use this proxy server for all protocols 復(fù)選框。
- 單擊 OK 按鈕以保存設(shè)置。
此時(shí),您的 Firefox 已配置,您可以通過 Squid 代理瀏覽 Internet 。要驗(yàn)證它,打開 google.com ,鍵入“我的 IP 是什么”,你應(yīng)該看到你的 Squid 服務(wù)器 IP 地址。
要恢復(fù)默認(rèn)設(shè)置,請轉(zhuǎn)到 Network Settings ,選擇 Use system proxy settings 單選按鈕并保存設(shè)置。
還有幾個(gè)插件可以幫助您配置 Firefox 的代理設(shè)置,如 FoxyProxy 。
谷歌瀏覽器
Google Chrome 使用默認(rèn)的系統(tǒng)代理設(shè)置。您可以使用插件(如 SwitchyOmega) 或從命令行啟動(dòng) Chrome 網(wǎng)絡(luò)瀏覽器,而不是更改操作系統(tǒng)代理設(shè)置。
要使用新配置文件啟動(dòng) Chrome 并連接到 Squid 服務(wù)器,請使用以下命令:
Linux:
/usr/bin/google-chrome --user-data-dir="$HOME/proxy-profile" --proxy-server="http://SQUID_IP:3128"
蘋果系統(tǒng) :
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --user-data-dir="$HOME/proxy-profile" --proxy-server="http://SQUID_IP:3128"
Windows:
"C:Program Files (x86)GoogleChromeApplicationchrome.exe" ^ --user-data-dir="%USERPROFILE%proxy-profile" ^ --proxy-server="http://SQUID_IP:3128"
如果配置文件不存在,將自動(dòng)創(chuàng)建配置文件。這樣,您可以同時(shí)運(yùn)行多個(gè) Chrome 實(shí)例。
要確認(rèn)代理服務(wù)器是否正常工作,請打開 google.com ,然后鍵入 “what is my ip” 。瀏覽器中顯示的 IP 應(yīng)該是服務(wù)器的 IP 地址。
結(jié)論
我們已經(jīng)介紹了如何在 Debian 10 上安裝 Squid 并配置瀏覽器以使用它的基礎(chǔ)知識。
Squid 是最受歡迎的代理緩存服務(wù)器之一。它可以提高 Web 服務(wù)器的速度,并可以幫助您限制用戶訪問 Internet 。
如果您有任何疑問,請?jiān)谙旅媪粞浴?/p>