GCP配置Squid Proxy路由后VM无法访问互联网的问题
GCP中Squid代理+Cloud NAT出站流量故障排查方案
1. 开启Squid VM的IP转发
GCP虚拟机默认禁止IP流量转发,这是核心卡点之一,必须手动开启:
- 控制台操作:找到你的Squid虚拟机,进入编辑页面,勾选「启用IP转发」后保存
- 命令行快速操作:
gcloud compute instances update [你的Squid VM名称] --enable-ip-forwarding
2. 调整自定义路由的优先级
Cloud NAT自动生成的路由优先级为1000,你的自定义路由必须设置比1000更小的数值(比如900),才能优先于NAT路由生效:
- 进入VPC网络的路由页面,找到指向Squid的自定义路由,编辑后将优先级改为小于1000的数值
3. 配置必要的防火墙规则
至少需要两条关键防火墙规则:
- 允许内部VM访问Squid代理:
- 方向设为入站,目标选择Squid所在子网或给Squid打的标签,来源填你的VPC私有IP段(比如10.0.0.0/16),端口开放3128(若修改过Squid端口则对应调整)
- 允许Squid VM出站访问互联网:
- 方向设为出站,目标填0.0.0.0/0,来源选择Squid的IP或标签,端口按需开放80、443或全放开
4. 修正Squid代理配置
确保Squid允许转发内部子网的流量:
- 编辑Squid配置文件
/etc/squid/squid.conf,添加以下规则(替换为你的VPC网段):acl internal_net src 10.0.0.0/16 http_access allow internal_net - 如果使用透明代理,将
http_port配置改为http_port 3128 transparent - 修改完成后重启Squid服务:
systemctl restart squid
5. 确认Cloud NAT关联的子网
进入Cloud NAT网关页面,检查关联的子网列表,必须包含Squid VM所在的子网,否则Squid自身无法通过NAT访问互联网
6. 流量测试与排查
- 在普通VM上测试代理连通性:
curl -x http://[Squid私有IP]:3128 https://google.com,观察是否能正常返回内容 - 在Squid VM上直接测试外网连通性:
curl https://google.com,先确认Squid自身能通过Cloud NAT上网 - 查看Squid日志
/var/log/squid/access.log和cache.log,排查是否有访问被拒绝的记录
内容的提问来源于stack exchange,提问作者suman mallela
相关产品推荐
相关产品推荐

