# Linux下如何搭建Squid代理服務器
## 一、Squid代理服務器概述
### 1.1 什么是Squid
Squid是一個功能完善且穩定的開源代理服務器軟件(GNU通用公共許可證),主要支持HTTP、HTTPS、FTP等協議。作為緩存代理服務器,Squid可以:
- 加速Web請求響應
- 減少帶寬消耗
- 控制網絡訪問
- 提供訪問日志分析
### 1.2 核心功能特性
- **緩存加速**:通過緩存頻繁訪問的內容提升響應速度
- **訪問控制**:基于IP、域名、時間等維度進行訪問限制
- **流量優化**:支持負載均衡和流量整形
- **安全防護**:可過濾危險內容并隱藏客戶端真實IP
- **協議支持**:兼容HTTP/1.1、HTTPS、FTP等協議
## 二、環境準備
### 2.1 系統要求
- 操作系統:主流Linux發行版(Ubuntu/CentOS/Debian等)
- 硬件配置:
- 最低1核CPU/1GB內存
- 建議2核CPU/4GB內存(高并發場景)
- 磁盤空間:至少10GB可用空間(緩存目錄專用)
### 2.2 網絡規劃
| 配置項 | 示例值 | 說明 |
|-----------------|------------------|-----------------------|
| 服務器IP | 192.168.1.100 | 代理服務器內網地址 |
| 監聽端口 | 3128 | 默認代理端口 |
| 緩存目錄大小 | 5GB | 根據用戶量調整 |
## 三、安裝Squid服務
### 3.1 Ubuntu/Debian系統安裝
```bash
sudo apt update
sudo apt install squid -y
sudo yum install epel-release -y
sudo yum install squid -y
squid -v
# 應顯示類似:Squid Cache: Version 5.x
配置文件路徑:/etc/squid/squid.conf
# 網絡監聽配置
http_port 3128
# 訪問控制列表
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80
# 緩存設置
cache_dir ufs /var/spool/squid 5000 16 256
# 日志配置
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
http_port
:可配置多個端口如 3128 8080
cache_mem
:建議不超過物理內存的1/3maximum_object_size
:默認4MB,根據需求調整acl allowed_ips src 192.168.1.50 192.168.2.0/24
http_access allow allowed_ips
http_access deny all
acl workhours time MTWHF 09:00-18:00
http_access allow workhours
acl banned_sites dstdomain .youtube.com .facebook.com
http_access deny banned_sites
cache_dir ufs /data/squid_cache 5000 16 256
# 參數說明:
# 5000 - 緩存大小(MB)
# 16 - 一級子目錄數
# 256 - 二級子目錄數
cache_mem 512 MB
maximum_object_size_in_memory 256 KB
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
sudo htpasswd -c /etc/squid/passwords proxy_user
修改配置文件:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
認證類型 | 安全性 | 配置復雜度 | 適用場景 |
---|---|---|---|
Basic | 低 | 簡單 | 內部測試環境 |
Digest | 中 | 中等 | 普通生產環境 |
NTLM | 高 | 復雜 | Windows域環境 |
mkdir /etc/squid/ssl
cd /etc/squid/ssl
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
-keyout squid.key -out squid.crt
cat squid.key squid.crt > squid.pem
http_port 3128 intercept
https_port 3130 cert=/etc/squid/ssl/squid.pem intercept
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
access_log daemon:/var/log/squid/access.log squid
# 日志格式自定義
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
sudo apt install sarg
sarg -l /var/log/squid/access.log -o /var/www/sarg
# 增加文件描述符限制
echo "ulimit -n 65535" >> /etc/profile
# 調整TCP參數
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.core.somaxconn=8192
# 工作進程數建議為CPU核心數的1.5倍
workers 6
# I/O線程配置
io_threads 4
# 檢查配置語法
squid -k parse
# 查看詳細日志
tail -f /var/log/squid/cache.log
錯誤代碼 | 含義 | 解決方案 |
---|---|---|
ERR_ACCESS_DENIED | 訪問被拒絕 | 檢查acl規則配置 |
ERR_DNS_FL | DNS解析失敗 | 檢查DNS服務器設置 |
ERR_CONNECT_FL | 連接目標服務器失敗 | 檢查網絡連通性 |
http_access deny manager
chmod 640 /etc/squid/squid.conf
iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j DROP
http_port 3128 transparent
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
客戶端 → 邊緣Squid → 父級Squid → 源站
配置示例:
cache_peer parent.example.com parent 3128 3130
cp -a /etc/squid /etc/squid_backup
systemctl stop squid
squid -k parse -f /etc/squid/squid.conf
命令 | 作用 |
---|---|
systemctl start squid |
啟動服務 |
squid -k reconfigure |
重載配置 |
squid -k rotate |
輪轉日志文件 |
squid -z |
初始化緩存目錄 |
注意:生產環境部署前建議在測試環境充分驗證,所有敏感操作應做好備份預案。 “`
這篇文章包含: 1. 技術細節與實用配置示例 2. 表格對比和結構化排版 3. 從安裝到高級配置的完整流程 4. 安全建議和性能優化方案 5. 常見問題解決方法
可根據實際需求調整配置參數和章節深度,建議在測試環境驗證后再應用于生產環境。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。