深色模式
正向代理 Squid
摘要:正向代理是「客户端通过它访问外网」。本文搭一个最小化 Squid 代理,让内网机器借它出网,并给出基础访问控制。
适用环境
bash
which squid || sudo apt install squid
squid -v | head -1
# 代理机需能访问外网;被代理的内网机只需能连到代理机的 31281
2
3
2
3
操作步骤
1. 安装与启动
bash
sudo systemctl enable --now squid
sudo ss -lntp | grep 31281
2
2
2. 最小化配置
bash
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
sudo sed -i 's/^http_access deny all/#&/' /etc/squid/squid.conf
# 在 acl 段落后允许本地网段(示例 10.0.0.0/24)
echo 'acl internal src 10.0.0.0/24' | sudo tee -a /etc/squid/squid.conf
echo 'http_access allow internal' | sudo tee -a /etc/squid/squid.conf1
2
3
4
5
2
3
4
5
3. 检查并重载
bash
sudo squid -k parse # 语法检查
sudo squid -k reconfigure1
2
2
4. 客户端使用代理
bash
# 临时给命令走代理
export http_proxy=http://10.0.0.1:3128
export https_proxy=http://10.0.0.1:3128
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.com1
2
3
4
2
3
4
或在浏览器/Firefox 网络设置里填 10.0.0.1:3128。
验证
bash
# 在代理机上确认有访问日志产生
sudo tail -f /var/log/squid/access.log
# 客户端再发一次 curl,应看到对应域名/状态码的日志行1
2
3
2
3
常见坑
WARNING
Squid 默认配置里 http_access deny all 会拒绝一切。务必在自己 allow 规则之后保留 deny,且 allow 要放在 deny all 之前,否则永远不通。
DANGER
开放代理(不限制来源网段)会被当作开放中继,被滥发垃圾请求、甚至用于攻击跳板,IP 进黑名单。生产务必用 acl src 限制可信网段,并考虑加认证(auth_param)。