搜索 K
Appearance
在公司电脑上开代理,最典型的事故现场是:外网通了,OA 打不开了;或者 OA 正常,但共享盘、打印机、Git 内网仓库全部超时。根因从来不是"代理不好用",而是默认路由(0.0.0.0/0)被抢走了。
三条核心结论,先记住:
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 以及公司自有网段明确走物理网卡,代理怎么折腾都不会碰到内网。10.x.x.x)解析,一旦被 fake-ip 接管,你会看到"IP 能 ping 通、域名打死不通"的诡异现象。route-exclude-address / 内网绕过选项,只有在企业 VPN 客户端(Cisco AnyConnect、深信服、Pulse)强行改写路由表时,才需要手动补静态路由做兜底。Windows 没有 Linux 那套 ip rule 策略路由(policy routing),它的选路逻辑非常朴素:在匹配同一条目的路由中,取"接口跃点数 + 网关跃点数"之和最小的一条。
具体来说:
0.0.0.0/0,它几乎必然赢,因为虚拟网卡的接口 metric 天然占优。这就是"开代理之后内网全断"的第一性原理——不是代理软件有 bug,是它遵循了操作系统给出的默���优先级。
| 模式 | 接管层级 | 内网影响 | 典型问题 |
|---|---|---|---|
| 系统代理(System Proxy) | WinINET / WinHTTP 应用层 | 几乎无 | 只对走系统代理的应用生效,UDP 全丢 |
| TAP / 分流转发 | 二层网卡 | 中 | 需要驱动签名,兼容性差,已逐渐淘汰 |
| TUN(虚拟三层网卡) | 三层 IP 层 | 大 | 抢默认路由,DNS 泄漏,企业 VPN 冲突 |
2026 年主流客户端(Clash Verge Rev / Mihomo、Sing-box、V2rayN+sing-box 内核)默认都会推荐 TUN,因为它能覆盖 QUIC/UDP、游戏、Docker 容器流量。TUN 本身没错,错的是没配绕过。
很多人把"内网不通"归罪于机场线路,这是混淆概念。上游出口线路决定的是外网体验上限,而分流决定的是内网能不能活。但既然要写深度指南,出口侧的机理也不能省:
0.1% 量级,抖动极低——这也是为什么它贵。企业网络里常见的"双 ISP"指的是两条不同运营商出口做冗余,依赖 BGP 或策略路由做故障切换。在代理场景里,这通常体现在中转商的多线入口上:你的流量进入他们国内入口后,可以在电信、联通、移动之间动态选最优路径。它不解决本地双网卡的分流问题,但决定了你跨境那一段的稳定性下限。
| 指标 | 纯系统代理 | TUN 全局 | TUN + 内网排除 | 双网卡 + 静态路由 + 系统代理 | 双网卡 + TUN + 精确分流 |
|---|---|---|---|---|---|
| 内网 OA/ERP 可达性 | 好 | 差(多数直接断) | 好 | 好 | 好 |
| 外网 UDP / QUIC 支持 | 差 | 好 | 好 | 差 | 好 |
| DNS 解析正确性 | 中 | 中(易泄漏) | 好 | 中 | 好 |
| 是否需要管理员权限 | 否 | 是 | 是 | 是 | 是 |
| 配置持久化能力 | 是 | 是 | 是 | 需 route -p 参数 | 是 |
| 与 Cisco / 深信服 VPN 兼容性 | 好 | 差 | 中 | 中 | 中 |
| 崩溃后对办公网影响面 | 无 | 大 | 小 | 小 | 小 |
| 首次配置耗时 | 约 2 分钟 | 约 3 分钟 | 约 8 分钟 | 约 15 分钟 | 约 20 分钟 |
| 抗 DNS 污染能力 | 弱 | 强 | 强 | 弱 | 强 |
| 适用人群 | 临时轻度使用 | 纯个人电脑 | 多数办公场景 | 内网资源密集 | 有域控 / 多层内网 |
| 链路类型 | 沪-洛杉矶实测延迟 | 晚高峰丢包 | 抖动 | 高峰速率保持率 | 成本水平 |
|---|---|---|---|---|---|
| 公网直连 VPS | 160~220ms | 3%~15% | 高 | 30%~60% | 低 |
| BGP 中转(多线) | 140~190ms | 1%~5% | 中 | 60%~80% | 中 |
| IEPL 企业专线 | 130~160ms | 0.1%~0.5% | 低 | 85%~95% | 高 |
| IPLC 点对点 | 125~155ms | 0.05%~0.3% | 极低 | 90%~98% | 很高 |
判断一个机场是否真在跑 IEPL,最简单的办法是晚高峰(20:30~22:30)跑
mtr -rwzc 100 目标IP,观察第 3~5 跳丢包。公网中转在这一段普遍会跳到 5% 以上,专线基本贴着0.5%以内。
# 查看所有网卡与接口索引(记下 IfIndex)
Get-NetAdapter | Format-Table Name, InterfaceIndex, Status, LinkSpeed
# 查看 IP 配置与网关
Get-NetIPConfiguration | Format-List InterfaceAlias, IPv4Address, IPv4DefaultGateway
# 查看完整 IPv4 路由表
route print -4在 route print -4 输出里,重点看 Network Destination 为 0.0.0.0 的那几行——有几条默认路由,说明就有几方在抢出口。
# 内网网卡(有线)设为 10,让它优先
Set-NetIPInterface -InterfaceIndex 12 -InterfaceMetric 10
# 代理/TUN 虚拟网卡设为 9000,让它只接兜底流量
Set-NetIPInterface -InterfaceIndex 34 -InterfaceMetric 9000注意:设置手动跃点后,"自动跃点"会被取消勾选,网卡重启后依然保留。
# 方式一:经典 route 命令,-p 表示持久化(重启后保留)
route -p add 10.0.0.0 mask 255.0.0.0 10.1.2.1 metric 1 if 12
route -p add 172.16.0.0 mask 255.240.0.0 10.1.2.1 metric 1 if 12
route -p add 192.168.0.0 mask 255.255.0.0 10.1.2.1 metric 1 if 12
# 方式二:PowerShell 原生(推荐,语义更清晰)
New-NetRoute -DestinationPrefix "10.0.0.0/8" `
-NextHop 10.1.2.1 -InterfaceIndex 12 `
-RouteMetric 1 -PolicyStore PersistentStore关键细节:if 12 里的 12 必须是你内网网卡的接口索引,写错等于往黑洞里发包。-PolicyStore PersistentStore 对应 route -p,不加的话重启就没了。
删除路由:
Remove-NetRoute -DestinationPrefix "10.0.0.0/8" -Confirm:$false以 Mihomo / Clash 系内核为例,config.yaml 里两个关键块���
tun:
enable: true
stack: mixed
route-exclude-address:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 169.254.0.0/16
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-filter:
- "*.corp.local"
- "*.company.com"
- "oa.*"
- "+.internal"
nameserver:
- https://223.5.5.5/dns-query
nameserver-policy:
"*.corp.local": 10.1.2.10
"+.company.com": 10.1.2.10fake-ip-filter 是很多人漏掉的一环:只要内网域名被 fake-ip 接管,即使路由是对的,DNS 也解析不出真实内网 IP。
# 让 Git / npm / pip 走代理,但内网地址直连
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.corp.local,.company.com"持久化写入用户环境变量:
[Environment]::SetEnvironmentVariable("NO_PROXY", "localhost,127.0.0.1,10.0.0.0/8,.corp.local", "User")# 1) 路由层:确认默认路由归属
route print -4
# 2) 连通性:指定源地址 ping 内网网关(验证双网卡是否真的双活)
ping -S 10.1.2.100 10.1.2.1
# 3) 端口层:确认 OA 端口是否可达
Test-NetConnection oa.company.com -Port 443 -InformationLevel Detailed
# 4) DNS 层:指定企业 DNS 查询内网域名
nslookup oa.company.com 10.1.2.10
# 5) 路径层:看流量第几跳被带走
tracert -d -h 15 8.8.8.8
tracert -d -h 5 10.1.2.1
# 6) 网卡配置总览
netsh interface ip show config跨平台补充(WSL / macOS / Linux 环境):
# 长时间丢包采样,判断链路稳定性
mtr -rwzc 100 1.1.1.1
# macOS 侧等效命令
scutil --dns # 查看 DNS 解析顺序
route -n get default # 查看默认路由与接口
netstat -rn # 完整路由表Windows 原生抓包(无需装 Wireshark):
# pktmon 是 Windows 内置的包捕获工具
pktmon filter remove
pktmon filter add -p 443
pktmon start --etw -m real-time
# 复现问题后 Ctrl+C,然后 pktmon stop重点看:内网地址的包是否出现在 TUN 网卡上。如果 OA 的包被抓在虚拟网卡上,说明分流规则彻底失效,回到第五节重新配。
| 症状 | 高概率根因 | 处理动作 |
|---|---|---|
| 外网通、OA 打不开 | 默认路由被 TUN 抢占 | 加 route-exclude-address |
| OA 域名解析失败但 IP 能通 | fake-ip 接管了内网域名 | 补 fake-ip-filter + nameserver-policy |
| 共享盘 / 打印机断连 | 内网网段未排除,SMB 走隧道 | 排除 192.168.x.0/24 与 169.254.0.0/16 |
| 重启后内网又断 | 路由未持久化 | 用 -p 或 PersistentStore |
| 挂企业 VPN 后代理失效 | VPN 强制改写了路由表 | 代理侧改用 PAC 或分流模式,避免 TUN 正面冲突 |
| 外网速度只有标称的 1/5 | 走的是公网中转且高峰拥塞 | 换 IEPL/IPLC 线路,用 mtr 验证丢包 |
| 部分网站能开部分 403 | 出口 IP 被风控 | 换节点,优先原生 IP 落地 |
| 上传大文件到内网超时 | MTU 被 TUN 改小导致分片 | 调低 TUN MTU 至 1400 或启用 MSS Clamping |
| 宣传话术 | 真实情况 | 识别方法 |
|---|---|---|
| "全设备兼容,路由器/手机/电脑通用" | 仅支持系统代理,无 TUN、无 UDP 转发 | 看客户端是否提供 TUN 模式开关 |
| "全线路 IPLC 专线" | 实际为公网中转 + BGP 优化 | 晚高峰 |