2_跨网络访问私有 IP:从 VPN 到 TUN 模式原理
跨网络访问私有 IP,例如从家中访问公司内网资源,本质上是在公共互联网上构建一条安全、私密的通信链路。这使得物理上位于外部的设备,在网络逻辑上如同置身于内网之中,从而透明地访问内部服务器和数据库。
本文对比传统 VPN 与现代代理工具(如 Mihomo/Clash)的实现差异,并深入解析 TUN 模式的工作原理。
1. VPN:网络层隧道的标准解
VPN(Virtual Private Network)是解决跨网络访问的标准工业级方案。其核心在于通过 隧道技术 和 加密封装,在公网上延伸私有网络的边界。
1.1 工作原理
VPN 的运作分为三个阶段:
- 隧道建立:客户端与网关协商密钥,建立加密通道
- 封装(Encapsulation):将发往内网的原始数据包加密并包装在新的公网数据包头中
- 解封装(Decapsulation):网关接收后剥离外层包头,解密还原原始数据包,转发至内网目标
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'actorBkg': '#4F46E5', 'actorTextColor': '#fff', 'signalColor': '#6366F1', 'activationBkgColor': '#E0E7FF', 'activationBorderColor': '#4F46E5'}}}%%
sequenceDiagram
autonumber
participant Client as "🏠 客户端 (Home)"
participant Gateway as "🏢 VPN 网关 (Office)"
participant Server as "🖥️ 内网服务器"
Note over Client, Gateway: 阶段一:建立连接
Client->>Gateway: "发起认证 (User/Pass + MFA)"
Gateway-->>Client: "验证通过,协商密钥"
Note right of Client: "建立加密隧道"
Note over Client, Server: 阶段二:数据传输
Client->>Client: "原始包 [Dst: 10.0.1.50]"
Client->>Client: "📦 封装 [公网头 | 加密内容]"
Client->>Gateway: "发送封装数据包 (Internet)"
Gateway->>Gateway: "🔓 解密 & 去除包头"
Gateway->>Server: "转发原始包 [Dst: 10.0.1.50]"
Server-->>Gateway: "响应数据"
Gateway->>Client: "🔒 加密回传"2. Mihomo 与 Trojan-Go
在非企业级或更灵活的场景中,常使用 Trojan-Go 配合 Mihomo 实现内网访问。这种方案利用 Mihomo 的 TUN 模式在网络层捕获 IP 流量,再通过应用层代理协议(Trojan,承载于 TLS/TCP 之上)转发至远端服务器——功能强大但在底层机制上与专业 VPN 有显著区别。
2.1 核心差异:桥梁 Vs 代办
通过一个形象的比喻来理解两者的区别:
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart LR
subgraph VPN["🌉 专业 VPN (WireGuard/IPsec)"]
direction LR
A1["园区 A"] -->|"跨海大桥"| A2["园区 B"]
style A1 fill:#10B981,stroke:#059669,color:#fff
style A2 fill:#10B981,stroke:#059669,color:#fff
end
subgraph Proxy["🏪 代理模式 (Mihomo + Trojan)"]
direction LR
B1["用户"] -->|"请求"| B2["服务站<br/>(Mihomo)"]
B2 -->|"加密专线"| B3["联络点<br/>(Trojan Server)"]
B3 -->|"代访问"| B4["目标资源"]
style B1 fill:#4F46E5,stroke:#3730A3,color:#fff
style B2 fill:#F59E0B,stroke:#D97706,color:#000
style B3 fill:#F59E0B,stroke:#D97706,color:#000
style B4 fill:#4F46E5,stroke:#3730A3,color:#fff
end
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff专业 VPN:如同在两个园区之间修建一条专用物理通道,车辆(IP 数据包)遵守交通规则(路由协议),直接从一端开到另一端。这是网络基础设施级别的打通。
Mihomo (TUN) + Trojan:在园区 A 门口设立服务站,检查目的地后通过加密专线联系园区 B 的联络点,由联络点代替访问目标,再将结果传回。
2.2 方案优劣对比
| 特性 | Mihomo (TUN 模式) | 传统 VPN (WireGuard/IPsec) |
|---|---|---|
| 实现层面 | 用户空间,依赖应用程序处理数据包 | 通常为内核空间实现(如 Linux WireGuard),也有用户空间实现(如 wireguard-go) |
| 本质 | 代理客户端 + 网络层模拟 | 虚拟网络接口 (Virtual Interface) |
| 性能 | 中等,存在用户态 - 内核态切换开销 | 极高,数据包处理路径最短 |
| 协议支持 | 可接收所有 IP 协议,但仅能代理转发 TCP/UDP,ICMP/GRE 无法穿透隧道 | 透明传输任何 IP 协议 |
| 适用场景 | 个人隐私、灵活分流、简单内网穿透 | 企业互联、远程办公标准接入 |
2.3 Mihomo Vs Trojan-Go
1 | # Mihomo(Clash Meta), 运行位置:您的家用设备 |
2.4 网络拓扑
1 | "IP-CIDR,10.228.0.0/16,AWS-VPC", |
1 | 你的家 → 公网代理服务器 → 私有网络 |
jump.liuvv.com是部署在公网的服务器- 这台服务器同时能访问私有网络(可能通过 VPC Peering、VPN 或内网路由)
实际部署示例:
1 | AWS VPC (10.228.0.0/16) |
3. 深入解析 Mihomo TUN 模式
普通代理(HTTP/SOCKS5)是应用层代理,只能接管主动配置了代理的应用(如浏览器)。TUN 模式则接管操作系统层面的所有流量,实现类似 VPN 的 全局透明代理 。
3.1 流量接管流程
当 Mihomo 开启 TUN 模式时,它接管了操作系统的 “ 交通指挥权 “:
处理步骤:
- 创建虚拟网卡:通过内核 TUN 驱动创建虚拟网络接口(如
utun0),数据包处理在用户空间完成 - 修改路由表:将默认网关或特定网段的路由指向虚拟网卡
- 截获流量:操作系统将所有匹配的 IP 数据包发送给虚拟网卡
- 提取与处理:Mihomo 从虚拟网卡读取原始 IP 包,进行分析、分流、封装
3.2 系统代理和 TUN 模式
| 模式 | 机制 | 优势 | 代价 |
|---|---|---|---|
| 系统代理 | 设置 OS 环境变量 | 兼容性好,资源消耗低 | 漏网之鱼多,部分应用会忽略 |
| TUN 模式 | 网络层接管 | 真全局代理,支持终端命令、游戏等不走代理的软件 | 需管理员权限,CPU 占用较高 |
3.3 常见问题
- 混淆概念:Trojan/V2Ray 是应用层代理协议,承载于 TCP/TLS 之上,设计目标是流量伪装与规避审查;WireGuard 是 VPN 协议,设计目标是创建点对点加密隧道,工作在网络层。两者都提供加密,但应用场景和实现层级不同。
- 技术演进:
sing-box作为后起之秀,在 TUN 实现和路由能力上更为激进,支持 Reality 等新协议,正逐渐成为极客首选,但配置复杂度也更高。