首页 服务与套餐 排查指南 技术文章 常见问题 技术支持
进入服务入口

DNS、应用代理和系统代理之间的关系

1. 三者协同工作层级的直接结论

DNS 负责“查地址”,应用代理负责“局部指路”,而系统代理与 TUN 虚拟网卡负责“全局交警调度”。三者处于网络协议栈的不同生命周期:当你在浏览器输入网址时,系统必须先通过 DNS 获取服务器 IP,随后根据系统代理或虚拟网卡规则,决定该连接是走本地直连、还是打包交给代理核心转发至 SSOne 远端节点。

如果 DNS 被污染得到错误 IP,或者系统代理端口设置错误导致中间人失联,网络通信都会在不同阶段瞬间中断。因此明确三者的边界,是排查一切复杂网络故障的底层逻辑。

2. DNS 解析流程与本地污染防御机制

DNS 污染是指当本地设备发出未经加密的 UDP 53 端口查询时,中间网络节点抢先应答虚假的解析结果,引导客户端连接不可达的目标 IP。

现代代理架构主要通过两种手段规避 DNS 污染:

  • 远端代理 DNS:客户端将域名本身打包到代理协议载荷中,直接发送给 SSOne 节点服务器,由远端在目标本地完成干净的解析,彻底避免本地流量泄露。
  • Fake-IP 机制:客户端在本地收到 DNS 请求后,不发起真实查询,而是直接从保留私网网段(如 198.18.0.0/16)派发一个虚拟 IP,并在本地维护映射字典。待 TCP 连接发起时,客户端截获该虚拟 IP 并根据字典还原真实域名由节点发出。此方式消除了网络往返首包延迟。

3. 系统代理与应用内独立代理的边界

很多开发者经常遇到“浏览器能科学浏览,但 Git 命令行或终端 curl 报错连不上”的现象。其根本原因在于:系统代理只是一项系统级广播建议,绝非内核级强制劫持。

Windows 和 macOS 设置中的“代理开关”,仅供遵循操作系统的通用库(如 IE 选项、Chrome、Edge、Safari 等)主动读取。而大量的命令行工具(Git、Pip、Docker、Node.js、SSH)均出于工程独立性,默认完全忽略系统代理设置。

开发排查技巧:在终端中如需临时生效,可在 Windows PowerShell 中执行 $env:http_proxy="http://127.0.0.1:7890",在 macOS/Linux 终端中执行 export http_proxy=http://127.0.0.1:7890。更彻底的方案是开启客户端的 TUN 全局网卡模式。

4. TUN 虚拟网卡对全流量的接管原理

TUN 虚拟网卡模式(Tun Mode)运行于操作系统第 3 层(网络层)。它在操作系统中注册一张虚拟以太网卡,并将系统所有出站流量路由默认网关重定向到这张虚拟网卡。

无论是浏览器、游戏客户端、后台守护进程还是命令行终端,任何不需要特别配置代理的程序,其数据包都会被 TUN 驱动透明捕获并移送给代理核心处理。这也是跨平台排查排障的首选模式。详细系统要求可参阅 设备与路由器兼容清单。

5. 代理技术实现与应用场景比对表

接管模式 工作层级 接管范围与兼容性 优缺点分析 典型排障方案
系统 HTTP/SOCKS 代理 第 7 层 (应用层) 常规浏览器及遵从系统 API 的软件 极轻量,但非标准软件及命令行常忽略,易遗留注册表残留。 若异常断网,需在系统设置手动关闭“代理服务器”。
TUN 虚拟网卡模式 第 3 层 (网络层) 全局所有 TCP/UDP 流量 (包括终端与游戏) 穿透力强,但需要系统底层驱动与管理员权限支持。 需检查 Wintun 驱动状态,详见 网络中断排查。
浏览器插件单独代理 单个应用沙盒 仅限该浏览器标签页,完全不影响系统其他软件 安全性极高,不改动系统配置;但无法支持外部客户端与后台服务。 检查插件内代理端口与客户端监听端口是否一致。

6. 常见问答 (FAQ)

这是因为关机或崩溃时客户端未能正常调用系统 API 清除系统代理开关。请在 Windows 打开“设置” > “网络和 Internet” > “代理”,将“使用代理服务器”关闭,即可立即恢复上网。

在客户端中,建议采用“规则分流”。国内域名由国内公共 DNS(如 223.5.5.5 或 119.29.29.29)解析以获得最佳本地 CDN 速度;国外域名直接交由代理核心的远端 DNS 解析,避免跨国 DNS 污染。

掌握原理,高效使用 SSOne 网络服务

进入服务入口,快速配置标准化分流规则与全协议集群。

进入服务入口