需求
Client不用設定 Proxy 伺服器 IP,即可讓client之流量皆經由squid發送,並對一特定網站限制連線,本機系統使用 CentOS 7.6。
系統建置
CentOS 7.6(need NetworkAdapter *2) CentOS 7 建置筆記
Enable ipv4_forward
1 | vim /etc/sysctl.conf |
加入
1 | net.ipv4.ip_forward=1 |
apply
1 | sysctl -p /etc/sysctl.conf |
Squid Intercept 原理
用戶端不需設定proxy相關設定,所有http與https流量由NAT導向至proxy Server,proxy Server將成為LAN與WAN之中間人(squid-in-the-middle),此一功能除可避免手動設定proxy外,也可提升安全性需求。
squid 設定
squid.conf(add in config part )
1 | http_port 3128 intercept #for http |
make certificate(openSSL)
1 | openssl genrsa -out myCA.key 2048 |
產生出cert後,client端需匯入此憑證。
iptables
將LAN端port 80(http)與443(https)流量導向至squid
1 | iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j REDIRECT --to-port 3128 |
Screenshot

備忘錄
- CentOS 7 系統有default iptables rules,建議先全部清除。
- 當前模式為intercept,若client端指定proxy ip,則流量將被squid forbid,所以當squid為transparent(intercept)mode時,就不應該手動設定proxy ip 。
- 要清楚是squid本身擋掉封包,還是iptables。(善用wireshark與access.log)
- SELinux要關閉。
參考文獻
wiki squid(NAT REDIRECT)
wiki squid(DNAT)
build squid proxy with ssl bumping
squid正向代理
acl 設定
squid SSL相關特性
Squid configuration directive ssl_bump