正向代理请求失败时,若nginx进程、端口、日志均正常,需排查系统级网络路径干扰:检查默认路由是否指向可上网网卡,确认无多条default路由冲突;核查策略路由(ip rule)是否误导向错误出口;验证iptables/nftables的output链是否拦截出站流量;最后通过tcpdump抓包确认syn是否发出及目标ip是否正确。

正向代理本身不直接依赖服务器路由表,但若代理请求发出后无法抵达目标站点,而 nginx 进程正常、端口监听正常、日志无明显错误,就需排查底层网络路径是否被系统级路由策略干扰。所谓“路由表冲突”,通常不是指传统三层路由错配,而是指系统层面的流量走向被本地策略(如策略路由、iptables 规则、多网卡默认路由、或 loopback 特殊处理)意外劫持或丢弃,导致代理请求根本没走预期出口。
检查默认路由与代理出口一致性
正向代理本质是 nginx 主动发起 outbound 请求(如访问 https://www.example.com),其源 IP 和出接口由系统路由表决定。若 nginx 所在机器有多个网卡(如 eth0 上网、eth1 内网),必须确保默认路由指向能通外网的接口:
- 运行 ip route show default,确认输出类似 default via 192.168.1.1 dev eth0,且该 dev 对应的是可上网网卡
- 若存在多条 default 路由(比如因 NetworkManager 或自定义脚本写入),会导致不确定出口,用 ip route flush table main && ip route add default via ... dev ... 清理并重置
- 特别注意:若 nginx 绑定在非默认网卡的 IP(如 listen 10.0.0.100:3128),但该 IP 所属子网无对应路由,系统仍会按默认路由发包——此时目标网站可能返回源 IP 不匹配的 TLS 错误或连接超时
排查策略路由(policy routing)干扰
某些环境(如高校/企业出口网关、双线多拨设备)会启用策略路由,根据源 IP 或用户标记强制指定出口。若 nginx 进程被标记(如通过 cgroup 或 iptables TPROXY),或其绑定 IP 被 rule 匹配,可能被导向错误网关:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 执行 ip rule show,查看是否有非 0/32 的 rule(如 from 10.0.0.0/24 lookup 100);若有,再查 ip route show table 100 确认该表路由是否可达外网
- 临时禁用所有非主表规则:ip rule flush,然后测试代理是否恢复;若恢复,说明问题在此,需修正 rule 条件或调整 nginx 绑定地址
- 避免使用 bind 指令绑定到策略路由覆盖的 IP 段,改用明确的公网出口 IP 或 0.0.0.0
验证 iptables/nftables 是否拦截 outbound 流量
正向代理请求属于 OUTPUT 链(而非 INPUT),常被忽略。若系统启用了严格防火墙策略,可能 DROP 掉 nginx 发起的连接:
- 检查 OUTPUT 链:iptables -t filter -L OUTPUT -n -v,观察是否有高计数的 DROP 规则匹配 dpt:443 或 dpt:80
- 临时清空 OUTPUT 链(仅用于验证):iptables -t filter -P OUTPUT ACCEPT && iptables -t filter -F OUTPUT,再测试代理;若恢复,需在防火墙中放行 nginx 用户或其目标端口
- 注意:若使用 nftables,运行 nft list chain inet filter output 替代
抓包确认真实发包路径与目的地址
绕过配置层,直击网络栈行为。在 nginx 服务器上对代理端口(如 3128)和外网目标端口同时抓包:
- 启动代理请求(如 curl -x http://localhost:3128 https://httpbin.org/ip)
- 另开终端运行:tcpdump -i any port 3128 or port 443 -nn -A
- 观察:
- 是否有 SYN 包从本机某 IP 发往目标域名解析出的 IP?若没有,说明请求未发出,问题在 nginx 配置或模块(如 ngx_http_proxy_connect_module 未生效)
- 若有 SYN 但无响应,且目标 IP 是正确外网地址,则问题在路由/防火墙/运营商拦截
- 若 SYN 目标 IP 是内网地址(如 10.x、172.16–31.x、192.168.x),说明 DNS 解析或 upstream 配置错误,或 hosts 文件污染










