访问别的机房私有IP
从家中访问公司私有 IP,本质上是指通过技术手段,在公共互联网(The Internet)上建立一条安全、加密的虚拟通道,将你家里的电脑 “ 接入 “ 到公司的内部私有网络中。这使得你的电脑虽然物理上在家里,但从网络层面看,就如同在公司办公室一样,可以访问那些不对外开放的内部服务器、数据库等资源。
我们以最常见的 VPN (Virtual Private Network) 技术为例来讲解其工作原理。
关键组成:
- VPN 客户端 (Client):安装在你家用电脑上的软件。
- VPN 网关 (Gateway):部署在公司网络边界的一台专用服务器或设备,是内外网的 “ 看门人 “。
- 加密隧道 (Encrypted Tunnel):客户端和网关之间建立的虚拟连接。
工作步骤:
- 发起连接:你在家里的电脑上打开 VPN 客户端,输入公司提供的地址、你的用户名和密码。
- 身份验证:VPN 网关验证你的身份。通常除了密码,还会要求你提供一个动态验证码(MFA - Multi-Factor Authentication),确保是你本人在操作。
- 建立隧道:验证通过后,你的客户端和公司网关之间会协商加密算法,并建立一个加密的 “ 隧道 “。
- 数据封装:当你访问一个公司内网 IP(例如
10.0.1.50
),你的电脑会把发送给这个 IP 的数据包(这叫 “ 内部数据包 “)进行加密,并把它 “ 装 “ 进一个发往公司 VPN 网关公网 IP 的新数据包里。这个过程叫封装 (Encapsulation)。 - 公网传输:这个封装后的数据包在公共互联网上传输。由于外部被加密,中间的任何人(比如你的网络运营商)都无法知道你传输的真实内容和真实目的地。
- 解封装与转发:VPN 网关收到数据包后,用密钥解密,取出 “ 内部数据包 “,然后根据其目标地址(
10.0.1.50
),将其转发到公司内网的正确服务器上。 - 返回流量:内部服务器的响应会沿着相反的路径,由 VPN 网关加密后,通过隧道传回你的电脑。
1. Trojan-Go 和 Mihomo
当我们将它们用于 “ 连接机房内网 “ 时,我们实际上是在利用 Mihomo (Clash Meta 内核)强大的 TUN 模式,将一个应用层代理(Trojan)” 伪装 “ 成一个网络层隧道(类似 VPN)来使用。这是一种 “ 降维打击 “ 的应用方式,功能强大,但与专业的网络层解决方案有本质区别。
- 专业 DCI 技术 (如 IPsec/WireGuard):这相当于在两个园区(机房)之间修建了一座私有的、坚固的 “ 跨海大桥 “。桥梁本身就是网络基础设施的一部分,任何车辆(IP 数据包)都可以按照交通规则(路由协议)直接、自由地从一端开到另一端的任意地址。
- Trojan-Go + Mihomo (TUN 模式):这更像是在一个园区门口设立了一个能力超强的 “ 全能代办服务站(Mihomo)”,并与另一个园区里的 “ 秘密联络点(Trojan-Go)” 有一条加密专线。任何车辆想去对面,都必须先开到这个服务站,由服务站的工作人员检查你的目的地,然后通过他们的专线联系对面的联络点,让联络点代你去访问最终地址,再把结果带回来。
你看,一个是 “ 直接通行 “,一个是 “ 代理中转 “,这是最核心的区别。
1.1 不合适之处
- 单点故障: Trojan-Go 服务器是单点。它如果宕机,整条链路就断了。虽然可以做高可用,但远不如基于路由协议的 VPN 方案来得灵活和标准。
- 性能瓶颈与 TCP-in-TCP 问题: Trojan 协议本身是基于 TCP 的。如果你用它来传输另一个 TCP 连接(例如访问网页),就会形成 “TCP 套 TCP” 的结构。当外部 TCP 连接发生丢包重传时,会引起内部 TCP 连接不必要的超时和降速,导致性能急剧下降。
特性 | Mihomo (TUN 模式) | 传统 VPN (如 WireGuard/IPsec) |
---|---|---|
实现层面 | 用户空间 (User Space) 应用。操作系统将数据包交给应用处理。 | 内核空间 (Kernel Space)。作为操作系统网络栈的一部分,效率更高。 |
本质 | 代理客户端 + 网络层模拟。 | 虚拟网络接口。在操作系统看来与真实网卡无异。 |
性能效率 | 较低。数据包需要在内核和用户空间之间多次拷贝,且易受 TCP-in-TCP 影响。 | 极高。数据包处理完全在内核中完成,路径最短。 |
协议普适性 | 受限。原生不支持路由协议等非 TCP/UDP 的报文。ICMP 需要特殊处理。 | 完美。可透明传输任何 IP 协议(TCP, UDP, ICMP, GRE, …)。 |
配置管理 | 基于 YAML 文件和规则引擎,灵活但分散,不适合大规模部署。 | 基于网络设备标准配置(或简单配置文件),易于标准化和自动化。 |
目标场景 | 个人隐私保护、绕过审查、灵活分流。 | 企业站点互联、远程访问、构建安全网络。 |
推荐技术:
- Tailscale (或 ZeroTier)
- 原生 WireGuard
1.2 注意事项
- 混淆代理与 VPN: 最大的陷阱就是认为 “ 既然都能让我的 IP 变到别处,那它们就是一回事 “。通过上面的讲解,你应该明白,一个是 “ 找人代办 “,一个是 “ 亲自开车过桥 “,实现机制和可靠性完全不同。
ping
不通就懵了: 在非 TUN 模式下,ping
(ICMP 协议)根本不会被代理程序处理,所以肯定不通。即使在 TUN 模式下,也可能因为 Trojan-Go 服务器所在机器的防火墙规则,导致ping
失败。sing-box
是一个比 Clash/Mihomo 内核更强大的后起之秀,它支持更多的协议,并且其路由和底层能力更为激进,进一步模糊了代理和隧道的界限。但其本质和复杂度决定了它依然是 “ 发烧友 “ 和 “ 个人用户 “ 的工具,而非企业级标准
2. Mihomo
2.1 Mihomo 的 TUN 模式
- TUN 模式的魔力:
- Mihomo 启动 TUN 模式后,会在你的操作系统中创建一个虚拟网卡(TUN device)。
- 同时,它会修改系统的路由表,将所有(或指定的)网络流量都指向这个虚拟网卡。
- 当你的服务器(例如
10.1.1.10
)发起一个访问10.2.2.20
的请求时,这个 IP 数据包实际上被操作系统发送给了 Mihomo 创建的虚拟网卡。
- Mihomo 的处理:
- Mihomo 作为一个应用程序,从这个虚拟网卡接收到完整的 IP 数据包。
- 它分析这个 IP 包,发现目标是
10.2.2.20
。 - 根据你配置的规则(
rules
),Mihomo 决定将这个请求通过PROXY
策略组,发送到你预设的 Trojan-Go 服务器。
- Trojan 协议的封装与传输:
- Mihomo 于是作为客户端,与远端机房 B 的 Trojan-Go 服务器建立一个 TCP 连接。这个连接被伪装成标准的 TLS (HTTPS) 流量。
- Mihomo 将原始的请求目标(
10.2.2.20
)和其他信息,按照 Trojan 协议的格式打包,通过这个伪装的 TLS 连接发送出去。
- Trojan-Go 服务器的处理:
- 机房 B 的 Trojan-Go 服务器接收到流量,解密后发现这是一个代理请求,目标是它自己所在内网的
10.2.2.20
。 - 于是,Trojan-Go 服务器在机房 B 内部,发起一个新的连接去访问
10.2.2.20
。 - 服务器
10.2.2.20
响应的流量会先返回给 Trojan-Go 服务器,然后由 Trojan-Go 服务器通过加密隧道传回给 Mihomo,最后 Mihomo 再交还给最初发起请求的应用程序。
- 机房 B 的 Trojan-Go 服务器接收到流量,解密后发现这是一个代理请求,目标是它自己所在内网的
2.2 TUN 模式原理
- 常规代理模式(System Proxy):这就像在城市的某些特定路口(比如浏览器、微信)设置了保安。只有从这些路口出发的汽车,才会被保安引导到一条特殊的加密通道。而其他路口(比如终端里的
ping
命令、某些游戏)出发的汽车,保安根本管不着,它们还是走普通的老路。 - TUN 模式(Enhanced Mode):这完全不同!它相当于在整个城市的唯一出口修建了一个巨大的、超级智能的 “ 中央交通指挥中心 “。操作系统被告知:” 所有要出城的汽车,无论从哪个路口来的,都必须先开到这个指挥中心接受调度!”
这个 “ 中央交通指挥中心 “ 就是 TUN 模式。
技术上的实现原理
- 创建虚拟网卡 (TUN Device):当 Mihomo/Clash 开启 TUN 模式时,它会在你的操作系统(macOS, Windows, Linux)里创建一个虚拟的网络接口(就像多了一张看不见的网卡)。
- 接管系统路由 (Take Over Routing):接着,它会修改你电脑的系统路由表,把默认网关或者指定的 IP 段指向这个刚刚创建的虚拟网卡。这一个操作就是 “ 强制所有流量先来我这里报到 “ 的关键。
- 处理 IP 数据包:现在,任何应用程序发出的网络请求(IP 数据包),都会被操作系统根据新的路由规则,发送到这个虚拟网卡。Mihomo 内核作为一个应用程序,就能从这个虚拟网卡中读到最原始的 IP 数据包。
- 智能分流:Mihomo 内核拿到数据包后,会分析它的目标地址、端口等信息,然后根据你配置的
rules
(规则)来决定:- 这个包是直连(
DIRECT
)? - 还是需要走代理(
PROXY
)? - 或者直接拒绝(
REJECT
)?
- 这个包是直连(
- 转发流量:做出决定后,Mihomo 内核会代替你的应用程序,完成后续的连接。
总结一句话:TUN 模式通过创建一个虚拟网卡并修改系统路由,从网络层(IP 层)截获并管理你电脑上几乎所有的网络流量。
Clash 系客户端主要还有以下几种模式:
模式名称 | 工作原理 | 优点 | 缺点 |
---|---|---|---|
TUN / 增强模式 (Enhanced Mode) | 网络层代理。 创建虚拟网卡,接管系统所有 IP 流量。 | 功能最强:能代理任何应用,包括命令行工具、不遵循系统代理的应用、游戏等。 支持 ICMP:你可以 ping 通一个被代理的地址。 | 兼容性/性能:需要管理员权限来修改网络设置。在某些系统上可能不稳定。性能略低于普通模式(数据包需在内核与应用间拷贝)。 |
系统代理 (System Proxy) | 应用层代理。 将自己设置为系统的 HTTP/SOCKS5 代理。 | 兼容性最好,最稳定。几乎所有系统都原生支持。 | 功能受限:只对遵循系统代理设置的应用生效(如浏览器)。对很多命令行工具、游戏、顽固软件无效。 |
全局模式 (Global) | 只是规则配置的一种状态。 强制所有被接管的流量都走同一个代理节点。 | 简单粗暴,适合临时需要所有流量都走代理的场景。 | 不够智能,可能会让国内流量也绕一圈,影响速度。 |
规则模式 (Rule) | 只是规则配置的一种状态。 根据你设定的规则列表,智能判断流量是走代理、直连还是拒绝。 | 最常用、最智能的模式。可以实现精细化分流,国内外网站两不误。 | 需要维护一套高质量的规则。 |
直连模式 (Direct) | 只是规则配置的一种状态。 强制所有被接管的流量都不走代理。 | 在需要关闭代理时很方便,无需退出整个程序。 |
关键点:全局
、规则
、直连
这三种其实是策略模式,它们决定了流量如何被分配。而 TUN
和 系统代理
是接管模式,它们决定了流量如何被捕获。你可以用 TUN 模式 + 规则策略,也可以用系统代理模式 + 规则策略。
答案很简单:ClashX Pro 的「增强模式」就是它对 TUN 模式的 UI 实现和命名。