小型企業 20 台終端,無專用伺服器,需共享 ADSL 上網並實現上網權限控制。利用閒置賽揚 466/128MB 老舊電腦改造為代理/防火牆伺服器。考量硬體性能、維護成本、授權合規,選擇 Debian Linux + Squid + iptables 開源方案。
eth0 連 ADSL Modem (WAN),eth1 連內網交換機 (LAN)。注意: 系統命名 eth0/eth1 不一定對應物理插槽,網不通時嘗試交換網線。/etc/network/interfaces):iface eth1 inet static
address 10.152.16.3
netmask 255.255.255.0
# 禁用 DHCP,確保客戶端能穩定找到代理伺服器
# pppoeconf # 圖形向導配置,開機自動撥號
# 下載穩定版源碼
wget https://www.squid-cache.org/Versions/v3/3.5/squid-3.5.27.tar.gz
tar xzf squid-3.5.27.tar.gz
cd squid-3.5.27
./configure --prefix=/var/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-pthreads \
--enable-err-language="Simplify_Chinese" \
--enable-default-err-language="Simplify_Chinese" \
--enable-storeio=ufs,null \
--enable-auth="basic" \
--enable-basic-auth-helpers="NCSA" \
--enable-underscore
make && make install
關鍵編譯參數: --enable-arp-acl 防 MAC 欺騙;--enable-linux-netfilter 支援透明代理;--enable-underscore 允許 URL 含底線。
/etc/squid/squid.conf 實戰範例http_port 10.152.16.3:8080
cache_mgr admin@company.com
cache_dir null /tmp # 僅作代理,不緩存
cache_access_log /var/squid/access.log
cache_log /var/squid/cache.log
# ACL 定義
acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b # 高權組 MAC
acl normal proxy_auth REQUIRED # 普通組需認證
acl all src 0.0.0.0/0
acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$ # 多媒體/可執行檔
acl conncount maxconn 3 # 最大並發連接數
acl worktime time MTWHF 8:30-12:00 14:00-18:00 # 工作時間
acl sinapage dstdomain ok.sina.com.cn # 黑名單域名
acl qq dstdomain .tcccent.com.cn
# 存取控制規則(順序敏感)
http_access allow advance # 高權組無限制
http_access deny conncount normal # 普通組限並發
http_access deny !worktime # 非工作時間禁網
http_access deny mmxfile # 禁下載類型
http_access deny sinapage # 禁特定站點
http_access deny qq # 禁 QQ 相關
http_access allow normal # 允許普通組其餘請求
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
將此規則寫入 /etc/ppp/ip-up.d/ 腳本實現撥號後自動生效。
零授權成本、低硬體門檻、高安全性、靈活權限控制、易於腳本化維護。Squid 亦可反向作為 Web 前端加速器,一軟多用。