Squid 是一款很受歡迎的開源代理伺服器,可以提升網路效能、安全性與隱私性。它可以用來快取常被存取的內容、過濾不需要的流量,並讓用戶端連線匿名化。
在開始之前,需要有 Linux 9 系統的 root 權限,以及穩定的網路連線,並具備基本的 Linux 終端機指令和網路協定知識。
1. 安裝 Squid
使用套件管理器安裝 Squid:
sudo dnf install squid
這會下載並安裝 Squid 套件及其相依套件。如果安裝成功,就可以進行下一步。
2. 在伺服器上設定 Squid
Squid 預設的設定檔位於 /etc/squid/squid.conf。要編輯這個檔案,可以用 root 權限開啟 Nano 或 Vim 等文字編輯器:
sudo vim /etc/squid/squid.conf
可以依照需求自訂設定檔中的各項設定。以下是一個允許任何用戶端存取代理伺服器的設定範例:
http_port 3128
cache_dir ufs /var/spool/squid 100 16 256
acl all src all
http_access allow all
http_port指定 Squid 監聽傳入請求所使用的 TCP 埠號。cache_dir指定 Squid 儲存快取檔案的目錄。acl all src all定義了一個允許任何用戶端存取代理伺服器的存取控制清單。http_access allow all授予 ACL 中的用戶端使用代理伺服器的權限。
用以下指令啟動並啟用 Squid 服務:
sudo systemctl enable --now squid
檢查狀態以確認 Squid 正在執行:
sudo systemctl status squid
應該會看到顯示服務處於啟用中且正在執行的訊息。
3. 保護 Squid
Squid 預設沒有任何安全機制,因此需要採取一些步驟來保護 Squid 的安裝。可以設定存取控制來限制誰能存取代理伺服器、監控 Squid 日誌以留意可疑活動,並讓 Squid 保持在最新的安全修補狀態。
使用存取控制清單(ACL)來限制對代理伺服器的存取。例如,可以建立一個只允許特定 IP 位址或網段發出請求的 ACL。
監控 Squid 日誌,留意異常活動,例如來自未知用戶端的請求,或單一 IP 位址產生的大量流量。可以使用 Logwatch 或 Splunk 之類的工具來解析和分析 Squid 日誌。
要使用 https_proxy,需要一張憑證:
sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.crt
4. Squid 疑難排解
如果遇到 Squid 的問題,可以用各種疑難排解技巧來診斷和解決。以下是一些起步的建議:
檢查 Squid 日誌中的錯誤訊息或警告。預設的日誌檔案位於 /var/log/squid/access.log 和 /var/log/squid/cache.log。
使用 squidclient 指令測試 Squid 的連線和效能。例如,可以執行 squidclient -h localhost -p 3128 http://www.google.com 來測試 Squid 是否能夠取得網頁。
利用線上資源和社群論壇,向其他 Squid 使用者尋求協助。Squid 官方網站、郵件論壇和 IRC 頻道都是不錯的起點。
透過以下指令安裝驗證工具:
sudo dnf install httpd-tools -y
並新增帳號:
sudo htpasswd -c /etc/squid/passwords your_accout_name
編輯設定檔 vim /etc/squid/squid.conf,加入以下幾行:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 5
auth_param basic realm "Squid proxy-caching web server"
auth_param basic credentialsttl 5 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
5. 在用戶端設定
在 Linux 伺服器上設定好 Squid 之後,可能會想要設定用戶端裝置,讓它們透過 Squid 代理伺服器連上網際網路。其中一種方式是在機器上設定 http_proxy 和 https_proxy 這兩個環境變數。
export http_proxy=http://<squid_server_ip>:3128
export https_proxy=http://<squid_server_ip>:3128
把 squid_server_ip 換成 Squid 伺服器的 IP 位址。如果已經把 Squid 設定成監聽其他埠號,也要把 3128 換成對應的埠號。
如果有加上密碼,代理位址中也需要加上驗證資訊:
export http_proxy=your_account_name:your_password@<squid_server_ip>:3128
export https_proxy=your_account_name:your_password@<squid_server_ip>:3128
要讓這些環境變數在不同終端機工作階段之間持續生效,可以把上面兩行指令加進 shell 的啟動檔案(bash 用 ~/.bashrc,zsh 用 ~/.zshrc 等等)。
現在就可以透過 Squid 代理伺服器連上網際網路了。請注意,並非所有應用程式都會遵循這些環境變數,因此有些應用程式可能需要另外個別設定代理伺服器。
6. 小結
本教學示範了如何在 Linux 上部署 Squid,並依照需求進行相關設定。