2_跨网络访问私有 IP:从 VPN 到 TUN 模式原理

跨网络访问私有 IP,例如从家中访问公司内网资源,本质上是在公共互联网上构建一条安全、私密的通信链路。这使得物理上位于外部的设备,在网络逻辑上如同置身于内网之中,从而透明地访问内部服务器和数据库。

本文对比传统 VPN 与现代代理工具(如 Mihomo/Clash)的实现差异,并深入解析 TUN 模式的工作原理。

1. VPN:网络层隧道的标准解

VPN(Virtual Private Network)是解决跨网络访问的标准工业级方案。其核心在于通过 隧道技术 和 加密封装,在公网上延伸私有网络的边界。

1.1 工作原理

VPN 的运作分为三个阶段:

  1. 隧道建立:客户端与网关协商密钥,建立加密通道
  2. 封装(Encapsulation):将发往内网的原始数据包加密并包装在新的公网数据包头中
  3. 解封装(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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Mihomo(Clash Meta), 运行位置:您的家用设备
角色:客户端(代理规则引擎)
功能:
├── 读取您的脚本配置
├── 根据规则分流流量
├── 连接到远程代理服务器
└── 支持多种协议(VLESS/Trojan/VMess/Shadowsocks等)


# Trojan-Go,角色:服务端(单一协议代理服务器)
功能:
├── 监听端口(如8443)
├── 验证客户端密码
├── 转发流量到目标地址
└── 仅支持 Trojan 协议
运行位置:jump.liuvv.com 服务器

2.4 网络拓扑

1
2
3
4
5
6
7
8
9
10
11
"IP-CIDR,10.228.0.0/16,AWS-VPC",

name: "AWS-VPC",
type: "select",
proxies: ["AWS-US-West-2-Trojan"]


name: "AWS-US-West-2-Trojan",
type: "trojan",
server: "jump.liuvv.com",
...
1
2
你的家 → 公网代理服务器 → 私有网络
(jump.liuvv.com) (10.228.0.0/16)
  • jump.liuvv.com 是部署在公网的服务器
  • 这台服务器同时能访问私有网络(可能通过 VPC Peering、VPN 或内网路由)

实际部署示例:

1
2
3
4
5
6
7
8
9
AWS VPC (10.228.0.0/16)
├── EC2: jump.liuvv.com (公网IP + 内网IP 10.228.0.10)
│ └── 运行 V2Ray/Xray 服务器
└── 私有服务器 (10.228.1.100)
当你访问 10.228.1.100 时:

流量先到达 jump.liuvv.com(公网可达)
该服务器在 VPC 内网,可以直接访问 10.228.1.100
完成请求后返回数据

3. 深入解析 Mihomo TUN 模式

普通代理(HTTP/SOCKS5)是应用层代理,只能接管主动配置了代理的应用(如浏览器)。TUN 模式则接管操作系统层面的所有流量,实现类似 VPN 的 全局透明代理 。

3.1 流量接管流程

当 Mihomo 开启 TUN 模式时,它接管了操作系统的 “ 交通指挥权 “:

处理步骤:

  1. 创建虚拟网卡:通过内核 TUN 驱动创建虚拟网络接口(如 utun0),数据包处理在用户空间完成
  2. 修改路由表:将默认网关或特定网段的路由指向虚拟网卡
  3. 截获流量:操作系统将所有匹配的 IP 数据包发送给虚拟网卡
  4. 提取与处理:Mihomo 从虚拟网卡读取原始 IP 包,进行分析、分流、封装

3.2 系统代理和 TUN 模式

模式机制优势代价
系统代理设置 OS 环境变量兼容性好,资源消耗低漏网之鱼多,部分应用会忽略
TUN 模式网络层接管真全局代理,支持终端命令、游戏等不走代理的软件需管理员权限,CPU 占用较高

3.3 常见问题

  • 混淆概念:Trojan/V2Ray 是应用层代理协议,承载于 TCP/TLS 之上,设计目标是流量伪装与规避审查;WireGuard 是 VPN 协议,设计目标是创建点对点加密隧道,工作在网络层。两者都提供加密,但应用场景和实现层级不同。
  • 技术演进:sing-box 作为后起之秀,在 TUN 实现和路由能力上更为激进,支持 Reality 等新协议,正逐渐成为极客首选,但配置复杂度也更高。