跳转至

第4章 常见代理协议详解

在了解了科学上网的基础原理后,本章将深入介绍主流的代理协议。这些协议是实现科学上网的核心技术,各有特点和适用场景。

4.1 Shadowsocks系列(SS/SSR)

4.1.1 Shadowsocks诞生背景

历史时刻:

  • 2012年:@clowwindy 在GitHub发布Shadowsocks
  • 设计理念:轻量、快速、安全、易部署
  • 核心思想:SOCKS5代理 + 流量加密

为什么叫Shadowsocks?

SOCKS协议 + 影子(Shadow) = Shadowsocks

Shadowsocks:在SOCKS代理的阴影下,隐藏真实流量

4.1.2 Shadowsocks工作原理

完整通信流程:

客户端                                                服务器
  │                                                     │
  │────────── ①本地应用发起SOCKS5请求 ──────────────────►│
  │        (如访问google.com)                           │
  │                                                     │
  │────────── ②SS客户端加密请求 ───────────────────────► │
  │          [加密(目标地址 + 数据)]                     │
  │          使用预设密码和加密算法                      │
  │                                                    │
  │                                                    │─── ③SS服务器解密
  │                                                    │    获取真实目标地址
  │                                                    │
  │                                                    │─── ④连接目标网站
  │                                                    │    (google.com)
  │                                                    │
  │◄────────── ⑤返回加密响应 ─────────────────────────── 
  │            [加密(网站返回数据)]                      │
  │                                                    │
  │─────── ⑥本地解密,返回给应用                         │

数据包结构:

Shadowsocks数据包格式:

┌────────────┬──────────────┬──────────┬─────────────┐
│ IV/Salt    │ 目标地址类型  │ 目标地址  │ 加密的数据   │
│ (随机)     │ (1字节)      │ (变长)   │             │
└────────────┴──────────────┴──────────┴─────────────┘

目标地址类型:
0x01 = IPv4地址 (4字节)
0x03 = 域名 (1字节长度 + 域名)
0x04 = IPv6地址 (16字节)

加密方式:
使用密码派生密钥
每个连接使用唯一的IV(初始化向量)

4.1.3 加密方法详解

支持的加密算法:

加密方法 密钥长度 安全性 速度 推荐度
aes-128-gcm 128位 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ✅ 推荐
aes-256-gcm 256位 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ✅ 推荐
chacha20-ietf-poly1305 256位 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ✅✅ 强烈推荐
aes-256-cfb 256位 ⭐⭐⭐ ⭐⭐⭐ ⚠️ 旧版本
rc4-md5 128位 ⭐⭐⭐⭐⭐ ❌ 已淘汰

AEAD加密方法(推荐):

AEAD = Authenticated Encryption with Associated Data
认证加密,防篡改

为什么推荐:
✓ 加密 + 认证,双重保护
✓ 防止中间人攻击
✓ 检测数据是否被篡改
✓ 现代密码学标准

推荐选择:
1. chacha20-ietf-poly1305 (移动端优先)
2. aes-256-gcm (桌面端优先,CPU支持AES-NI)
3. aes-128-gcm (性能和安全平衡)

4.1.4 ShadowsocksR (SSR)

SSR的增强功能:

ShadowsocksR是Shadowsocks的分支版本,增加了混淆和协议插件。

主要特性:

  1. 协议插件(Protocol)

    作用:改变数据包的协议特征
    
    常用协议:
    - origin:原版SS协议
    - auth_aes128_md5:增加认证
    - auth_aes128_sha1:更强的认证
    - auth_chain_a/b:抗重放攻击
    
    推荐:auth_aes128_sha1 或 auth_chain_a
    

  2. 混淆插件(Obfs)

    作用:伪装流量特征
    
    常用混淆:
    - plain:无混淆
    - http_simple:伪装成HTTP流量
    - http_post:伪装成HTTP POST请求
    - tls1.2_ticket_auth:伪装成TLS流量
    
    推荐:tls1.2_ticket_auth
    

SSR配置示例:

{
  "server": "example.com",
  "server_port": 8388,
  "password": "your_password",
  "method": "chacha20-ietf-poly1305",
  "protocol": "auth_aes128_sha1",
  "protocol_param": "",
  "obfs": "tls1.2_ticket_auth",
  "obfs_param": "cloudflare.com"
}

混淆参数说明:

obfs_param: "cloudflare.com"
伪装成访问cloudflare.com的TLS连接
防火墙看到:正常HTTPS流量
实际传输:代理数据

4.1.5 SS vs SSR对比

特性 Shadowsocks ShadowsocksR
开发者 clowwindy breakwa11
发布时间 2012年 2015年
协议纯净度 简洁 复杂(增加协议层)
混淆能力 基础 强(协议+混淆)
抗封锁
性能 优秀 良好(有额外开销)
维护状态 活跃 较少更新
推荐场景 一般环境 封锁严重地区

选择建议:

选择Shadowsocks:
✓ 网络环境较好
✓ 追求极致性能
✓ 使用AEAD加密方法
✓ 配合CDN等其他手段

选择ShadowsocksR:
✓ 网络封锁严重
✓ SS经常被断连
✓ 需要流量混淆
✓ 配合协议和混淆插件

4.1.6 实战配置案例

服务器端配置(以ss-rust为例):

{
  "server": "0.0.0.0",
  "server_port": 8388,
  "password": "myStrongPassword123!",
  "method": "chacha20-ietf-poly1305",
  "timeout": 300,
  "fast_open": true,
  "mode": "tcp_and_udp"
}

客户端配置:

{
  "server": "your-server-ip",
  "server_port": 8388,
  "local_address": "127.0.0.1",
  "local_port": 1080,
  "password": "myStrongPassword123!",
  "method": "chacha20-ietf-poly1305",
  "timeout": 300
}

启动命令:

# 服务器端
ss-server -c config.json

# 客户端
ss-local -c config.json

# 后台运行
nohup ss-server -c config.json > ss.log 2>&1 &

4.1.7 Shadowsocks插件系统

常用插件:

1. simple-obfs(简单混淆)

# 服务器端
ss-server -c config.json --plugin obfs-server --plugin-opts "obfs=tls"

# 客户端
ss-local -c config.json --plugin obfs-local --plugin-opts "obfs=tls;obfs-host=cloudflare.com"

2. v2ray-plugin(V2Ray混淆)

{
  "plugin": "v2ray-plugin",
  "plugin_opts": "server;tls;host=yoursite.com;path=/v2ray"
}

3. kcptun(KCP加速)

# 用于优化高丢包网络
# 将TCP流量转换为UDP,提高速度

4.2 V2Ray/Xray协议族

4.2.1 V2Ray项目简介

V2Ray的定位:

  • 不仅是代理工具,更是一个平台
  • 模块化设计,灵活组合
  • 支持多种协议和传输方式
  • 强大的路由功能

核心架构:

┌─────────────────────────────────────┐
│          V2Ray Core                 │
│                                     │
│  ┌────────┐  ┌────────┐  ┌────────┐ │
│  │  入站   │  │   路由  │  │ 出站   │ │
│  │ Inbound│─►│Routing │─►│Outbound│ │
│  └────────┘  └────────┘  └────────┘ │
│      ▲           │           │      │
│      │           ▼           ▼      │
│  ┌────────┐  ┌────────┐  ┌────────┐ │
│  │ 协议层  │  │ 规则库  │  │ 协议层  │  │
│  │ VMess  │  │ 域名/IP │  │ Freedom│ │
│  │ VLESS  │  │ GeoIP  │  │ VMess  │ │
│  │ Socks  │  │ 自定义  │  │ Socks  │ │
│  └────────┘  └────────┘  └────────┘ │
│                                     │
│  ┌──────────────────────────────┐   │
│  │   传输层 (StreamSettings)     │   │
│  │   TCP / WebSocket / HTTP/2   │   │
│  │   mKCP / QUIC / gRPC         │   │
│  └──────────────────────────────┘   │
└─────────────────────────────────────┘

Xray的关系:

V2Ray (原项目)
Project X (新团队)
Xray-core (性能增强版)

Xray特点:
✓ 完全兼容V2Ray配置
✓ 性能优化(更快)
✓ 新协议支持(VLESS、XTLS)
✓ 更活跃的开发

4.2.2 VMess协议

VMess特点:

  • V2Ray原创协议
  • 基于时间的动态认证
  • 强加密,支持多种加密方式
  • 内置混淆和伪装

VMess数据包结构:

┌──────────┬──────────┬──────────┬──────────┐
│ 认证信息  │ 指令部分  │ 数据部分  │ 校验和   │
└──────────┴──────────┴──────────┴──────────┘

认证信息:
- 时间戳 (Unix time)
- UUID (用户ID)
- 随机值
→ 防重放攻击

指令部分:
- 目标地址
- 端口
- 命令类型(TCP/UDP)

数据部分:
- 实际传输数据
- 使用AES加密

VMess配置示例:

{
  "inbounds": [{
    "port": 10086,
    "protocol": "vmess",
    "settings": {
      "clients": [{
        "id": "UUID-HERE",
        "alterId": 0
      }]
    },
    "streamSettings": {
      "network": "tcp"
    }
  }],
  "outbounds": [{
    "protocol": "freedom"
  }]
}

alterId参数说明:

alterId: 额外ID数量

alterId = 0 (推荐):
✓ 不生成额外ID
✓ 更安全(减少攻击面)
✓ 新版推荐设置

alterId = 64/100 (旧版):
✗ 生成额外ID混淆
✗ 已过时
✗ 可能有安全隐患

4.2.3 VLESS协议

VLESS设计理念:

  • VMess的轻量化版本
  • 去除加密层(由TLS负责)
  • 更少的协议开销
  • 更快的传输速度

⚠️ 重要提示:

警告:VMess协议直连模式在2025年面临更强的检测压力
建议:优先使用VLESS,特别是配合Reality技术
推荐:VLESS + Reality 被评为2025年最佳组合

VLESS vs VMess:

特性 VMess VLESS
加密 内置加密 依赖TLS
性能 良好 更优
协议开销 较多 极少
时间校验 严格(±90s)
复杂度 较高 简单
抗检测能力 ⭐⭐⭐ ⭐⭐⭐⭐⭐
推荐场景 不使用TLS时 配合TLS/Reality使用

VLESS配置示例:

{
  "inbounds": [{
    "port": 443,
    "protocol": "vless",
    "settings": {
      "clients": [{
        "id": "UUID-HERE",
        "level": 0
      }],
      "decryption": "none"
    },
    "streamSettings": {
      "network": "tcp",
      "security": "tls",
      "tlsSettings": {
        "certificates": [{
          "certificateFile": "/path/to/cert.pem",
          "keyFile": "/path/to/key.pem"
        }]
      }
    }
  }]
}

VLESS + XTLS:

XTLS = 极致的TLS优化

原理:
当内层已经是TLS加密时(如HTTPS)
外层TLS不再加密,直接转发
避免双重加密的性能损失
速度提升20%-40%

配置:
"security": "xtls",
"xtlsSettings": {
  "alpn": ["h2", "http/1.1"]
}

VLESS + Reality(推荐):

Reality = 新一代伪装技术

核心优势:
✓ 完美模仿真实TLS指纹
✓ 无需购买域名和证书
✓ 抗主动探测能力极强
✓ GFW难以通过TLS特征识别

工作原理:
1. 使用真实网站的TLS指纹
2. 客户端认证通过 → 建立代理连接
3. 认证失败 → 转发到真实网站
4. 防火墙无法区分真假流量

为什么是最佳选择:
• 能够有效抵抗基于TLS特征的检测
• GFW的检测技术不断升级,Reality应对能力最强
• 配置相对简单,性能优秀
• 适合需要高安全性和稳定性的用户

配置示例:
{
  "protocol": "vless",
  "settings": {
    "clients": [{
      "id": "UUID-HERE",
      "flow": "xtls-rprx-vision"
    }],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "tcp",
    "security": "reality",
    "realitySettings": {
      "dest": "www.microsoft.com:443",
      "serverNames": ["www.microsoft.com"],
      "privateKey": "YOUR_PRIVATE_KEY",
      "shortIds": [""]
    }
  }
}

推荐目标网站(dest):
- www.microsoft.com
- www.apple.com
- www.cloudflare.com
- www.amazon.com
选择访问量大、信誉好的网站

4.2.4 Trojan协议

Trojan设计哲学:

"最好的伪装就是不被发现"

核心思想:

不是创造新的混淆方法
而是完全模仿真实的HTTPS流量

Trojan服务器 = 真实的Web服务器
防火墙探测时:看到真实网站
真实用户连接:通过密码验证进入代理

结果:无法区分,无法封锁

Trojan工作流程:

客户端连接 ──► Trojan服务器
            验证密码hash
         ┌────────┴────────┐
         │                 │
    密码正确           密码错误
         │                 │
    建立代理连接      返回真实网站内容
         │                 │
    访问目标网站      (伪装成普通访问)
         │                 │
    ◄────┘                 │
                    防火墙无法识别

Trojan数据包格式:

┌─────────────┬──────┬──────────┬──────┬──────────┐
│ 密码SHA224  │ CRLF │ 目标地址  │ CRLF │ 数据     │
└─────────────┴──────┴──────────┴──────┴──────────┘
      56字节    2字节              2字节

外层:TLS加密
内层:Trojan协议

防火墙看到:标准TLS 1.2/1.3流量
实际传输:代理数据

Trojan配置示例:

{
  "run_type": "server",
  "local_addr": "0.0.0.0",
  "local_port": 443,
  "remote_addr": "127.0.0.1",
  "remote_port": 80,
  "password": [
    "your_password_here"
  ],
  "ssl": {
    "cert": "/path/to/fullchain.pem",
    "key": "/path/to/privkey.pem",
    "sni": "yoursite.com"
  }
}

Trojan-Go增强版:

Trojan-Go特性:
✓ 完全兼容原版Trojan
✓ 支持WebSocket
✓ 支持Shadowsocks混合
✓ CDN友好
✓ 多路复用(Mux)
✓ 更好的性能

4.2.5 传输方式详解

V2Ray支持多种传输方式(Transport),可灵活组合。

1. TCP传输

{
  "network": "tcp",
  "tcpSettings": {
    "header": {
      "type": "none"  // 或 "http" 伪装
    }
  }
}

特点:
 最简单、最直接
 延迟低
 容易被识别

2. WebSocket (WS)

{
  "network": "ws",
  "wsSettings": {
    "path": "/v2ray",
    "headers": {
      "Host": "yoursite.com"
    }
  }
}

特点:
 CDN友好(可过Cloudflare
 伪装成Web应用
 可配合Nginx
 性能略有损失

3. HTTP/2

{
  "network": "h2",
  "httpSettings": {
    "host": ["yoursite.com"],
    "path": "/v2ray"
  }
}

特点:
 多路复用
 流量特征像真实HTTPS
 性能优秀
 必须配合TLS

4. mKCP

{
  "network": "mkcp",
  "kcpSettings": {
    "mtu": 1350,
    "tti": 50,
    "uplinkCapacity": 12,
    "downlinkCapacity": 100,
    "congestion": true,
    "header": {
      "type": "wechat-video"  // 伪装成微信视频
    }
  }
}

特点:
 基于UDP
 高丢包环境表现好
 可伪装(wechat-video/dtls/wireguard)
 流量消耗大(约2-3倍)

5. QUIC

{
  "network": "quic",
  "quicSettings": {
    "security": "aes-128-gcm",
    "key": "your_key",
    "header": {
      "type": "dtls"
    }
  }
}

特点:
 0-RTT连接
 移动网络友好
 HTTP/3基础协议
 部分地区UDP受限

6. gRPC

{
  "network": "grpc",
  "grpcSettings": {
    "serviceName": "your_service_name",
    "multiMode": true
  }
}

特点:
 Google的RPC框架
 流量特征真实
 支持多路复用
 性能优秀

传输方式选择建议:

场景推荐:

常规使用:
TCP + TLS (简单稳定)

通过CDN:
WebSocket + TLS (Cloudflare友好)

高速传输:
gRPC + TLS 或 HTTP/2 + TLS

丢包环境:
mKCP (游戏、移动网络)

极致隐蔽:
WebSocket + TLS + CDN + 真实网站

4.2.6 Hysteria协议

Hysteria简介:

Hysteria是基于QUIC协议的高性能代理协议,专为不稳定网络环境优化。

核心特点:

基于QUIC:
✓ 0-RTT连接建立
✓ 多路复用
✓ 连接迁移(IP变化不断连)
✓ 拥塞控制优化

性能优势:
✓ 高丢包环境表现优异
✓ 大流量传输速度快
✓ 移动网络友好
✓ 适合视频流媒体

Hysteria vs 传统协议:

特性 Hysteria Shadowsocks VMess
传输协议 QUIC (UDP) TCP TCP
弱网表现 ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐
速度 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐
流量消耗 较高 正常 正常
抗检测 ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐

配置示例:

// 服务器配置
{
  "listen": ":443",
  "protocol": "udp",
  "cert": "/path/to/cert.pem",
  "key": "/path/to/key.pem",
  "up_mbps": 100,
  "down_mbps": 100,
  "auth": {
    "mode": "password",
    "config": {
      "password": "your_password"
    }
  }
}

// 客户端配置
{
  "server": "your-server.com:443",
  "protocol": "udp",
  "up_mbps": 50,
  "down_mbps": 100,
  "auth_str": "your_password",
  "socks5": {
    "listen": "127.0.0.1:1080"
  }
}

适用场景:

推荐使用:
✓ 网络不稳定(高丢包、高延迟)
✓ 大文件传输
✓ 4K视频流媒体
✓ 移动网络(4G/5G频繁切换)
✓ 游戏加速

注意事项:
⚠️ 长时间大流量可能被GFW针对
⚠️ 流量消耗约为正常的1.5-2倍
⚠️ 部分地区UDP受限
⚠️ 需要服务器支持高带宽

使用建议:

主力方案:VLESS + Reality(稳定隐蔽)
备用方案:Hysteria(速度优先)
组合策略:根据场景智能切换

场景切换:
- 日常浏览 → VLESS + Reality
- 视频下载 → Hysteria
- 游戏加速 → Hysteria
- 敏感时期 → VLESS + Reality

4.3 Clash内核与规则

4.3.1 Clash简介

Clash是一个基于规则的多协议代理客户端。

Clash家族:

Clash (原版)
  ├── Clash Premium (闭源增强版)
  │     ✓ TUN模式
  │     ✓ 规则增强
  │     ✓ 脚本支持
  └── Clash.Meta (开源增强版)
        ✓ 完全开源
        ✓ 更多协议支持
        ✓ 性能优化

支持的协议:

  • Shadowsocks / ShadowsocksR
  • VMess / VLESS
  • Trojan / Trojan-Go
  • Snell
  • SOCKS5 / HTTP(S)
  • WireGuard (Meta)

4.3.2 Clash配置文件结构

基本配置框架:

# Clash配置文件 (config.yaml)

# 端口配置
port: 7890              # HTTP代理端口
socks-port: 7891        # SOCKS5代理端口
mixed-port: 7892        # 混合端口
allow-lan: false        # 允许局域网连接
bind-address: "*"       # 绑定地址
mode: rule              # 运行模式: rule/global/direct
log-level: info         # 日志级别

# DNS配置
dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - 8.8.8.8
    - 1.1.1.1

# 代理节点
proxies:
  - name: "节点1"
    type: ss
    server: server1.com
    port: 8388
    cipher: chacha20-ietf-poly1305
    password: "password"

  - name: "节点2"
    type: vmess
    server: server2.com
    port: 443
    uuid: your-uuid
    alterId: 0
    cipher: auto
    tls: true

# 代理组
proxy-groups:
  - name: "🚀 代理选择"
    type: select
    proxies:
      - "♻️ 自动选择"
      - "节点1"
      - "节点2"

  - name: "♻️ 自动选择"
    type: url-test
    proxies:
      - "节点1"
      - "节点2"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

# 规则
rules:
  - DOMAIN-SUFFIX,google.com,🚀 代理选择
  - DOMAIN-KEYWORD,youtube,🚀 代理选择
  - GEOIP,CN,DIRECT
  - MATCH,🚀 代理选择

4.3.3 代理组类型详解

1. select(手动选择)

proxy-groups:
  - name: "🚀 节点选择"
    type: select
    proxies:
      - "香港节点"
      - "美国节点"
      - "日本节点"

用途:手动切换节点
场景:看不同地区Netflix、游戏切换

2. url-test(自动选择)

proxy-groups:
  - name: "♻️ 自动选择"
    type: url-test
    proxies:
      - "节点A"
      - "节点B"
      - "节点C"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
    tolerance: 150

原理:
定期测试所有节点延迟
自动选择最快的节点
延迟差<tolerance时不切换(避免频繁切换)

3. fallback(故障转移)

proxy-groups:
  - name: "🌐 故障转移"
    type: fallback
    proxies:
      - "主节点"
      - "备用节点1"
      - "备用节点2"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

原理:
按顺序测试节点
使用第一个可用的节点
主节点故障时自动切换到备用
主节点恢复后自动切回

4. load-balance(负载均衡)

proxy-groups:
  - name: "⚖️ 负载均衡"
    type: load-balance
    proxies:
      - "节点1"
      - "节点2"
      - "节点3"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
    strategy: consistent-hashing  # 或 round-robin

策略:
consistent-hashing: 同一域名总是走同一节点(保持会话)
round-robin: 轮流使用各节点(分散负载)

4.3.4 规则类型详解

规则语法:

规则类型,匹配内容,策略

示例:
DOMAIN-SUFFIX,google.com,Proxy

常用规则类型:

# 1. 域名规则
- DOMAIN,www.google.com,Proxy          # 完整匹配
- DOMAIN-SUFFIX,google.com,Proxy       # 后缀匹配(含子域名)
- DOMAIN-KEYWORD,google,Proxy          # 关键词匹配

# 2. IP规则
- IP-CIDR,192.168.0.0/16,DIRECT        # IP段
- IP-CIDR6,2001:db8::/32,DIRECT        # IPv6段
- GEOIP,CN,DIRECT                       # 地理位置(中国IP直连)

# 3. 端口规则
- DST-PORT,80,DIRECT                    # 目标端口
- SRC-PORT,7777,DIRECT                  # 源端口

# 4. 进程规则(Clash Premium)
- PROCESS-NAME,chrome.exe,Proxy         # Windows
- PROCESS-NAME,telegram,Proxy           # Linux/Mac

# 5. 规则集
- RULE-SET,google,Proxy                 # 引用规则集

# 6. 最终规则
- MATCH,Proxy                           # 兜底规则(匹配所有)

规则集(Rule Providers):

rule-providers:
  google:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./ruleset/google.yaml
    interval: 86400

rules:
  - RULE-SET,google,Proxy

4.3.5 实用配置案例

完整的分流配置:

proxy-groups:
  - name: "🚀 节点选择"
    type: select
    proxies:
      - "♻️ 自动选择"
      - "🇭🇰 香港节点"
      - "🇺🇸 美国节点"
      - "🇯🇵 日本节点"
      - "DIRECT"

  - name: "♻️ 自动选择"
    type: url-test
    use:
      - all
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  - name: "🎬 流媒体"
    type: select
    proxies:
      - "🇭🇰 香港节点"
      - "🇺🇸 美国节点"
      - "🇯🇵 日本节点"

  - name: "📲 Telegram"
    type: select
    proxies:
      - "🚀 节点选择"
      - "🇭🇰 香港节点"

  - name: "🍎 Apple"
    type: select
    proxies:
      - "DIRECT"
      - "🚀 节点选择"

  - name: "🎯 国内直连"
    type: select
    proxies:
      - "DIRECT"

rules:
  # 本地网络
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT

  # Telegram
  - DOMAIN-SUFFIX,t.me,📲 Telegram
  - DOMAIN-SUFFIX,telegram.org,📲 Telegram
  - IP-CIDR,91.108.0.0/16,📲 Telegram
  - IP-CIDR,149.154.160.0/20,📲 Telegram

  # 流媒体
  - DOMAIN-SUFFIX,netflix.com,🎬 流媒体
  - DOMAIN-SUFFIX,youtube.com,🎬 流媒体
  - DOMAIN-KEYWORD,disney,🎬 流媒体

  # Apple服务
  - DOMAIN-SUFFIX,apple.com,🍎 Apple
  - DOMAIN-SUFFIX,icloud.com,🍎 Apple

  # 国内直连
  - DOMAIN-SUFFIX,cn,🎯 国内直连
  - GEOIP,CN,🎯 国内直连

  # 兜底规则
  - MATCH,🚀 节点选择

4.4 WireGuard现代VPN

4.4.1 WireGuard优势

在第3章我们简要介绍了WireGuard,这里深入探讨其在科学上网中的应用。

性能对比(实测数据):

测试环境:1Gbps带宽,100ms延迟

OpenVPN (TCP):     ~200 Mbps
OpenVPN (UDP):     ~300 Mbps
IPsec/IKEv2:       ~450 Mbps
WireGuard:         ~950 Mbps

CPU占用:
OpenVPN:  15-20%
WireGuard: 3-5%

4.4.2 WireGuard配置实战

服务器配置 (wg0.conf):

[Interface]
# 服务器私钥
PrivateKey = SERVER_PRIVATE_KEY
# 服务器虚拟IP
Address = 10.0.0.1/24
# 监听端口
ListenPort = 51820
# 启动后执行的命令(配置NAT)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 客户端1
[Peer]
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32

# 客户端2
[Peer]
PublicKey = CLIENT2_PUBLIC_KEY
AllowedIPs = 10.0.0.3/32

客户端配置:

[Interface]
# 客户端私钥
PrivateKey = CLIENT_PRIVATE_KEY
# 客户端虚拟IP
Address = 10.0.0.2/24
# 客户端DNS
DNS = 1.1.1.1, 8.8.8.8

[Peer]
# 服务器公钥
PublicKey = SERVER_PUBLIC_KEY
# 服务器地址和端口
Endpoint = your-server-ip:51820
# 允许的IP(0.0.0.0/0表示全局流量)
AllowedIPs = 0.0.0.0/0
# 保持连接(NAT穿透)
PersistentKeepalive = 25

生成密钥对:

# 生成私钥
wg genkey > privatekey

# 从私钥生成公钥
cat privatekey | wg pubkey > publickey

# 查看密钥
cat privatekey
cat publickey

启动服务:

# 启动WireGuard
wg-quick up wg0

# 查看状态
wg show

# 停止
wg-quick down wg0

# 开机自启
systemctl enable wg-quick@wg0

4.4.3 分流配置(部分流量走WireGuard)

仅代理国外流量:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
DNS = 1.1.1.1
# 路由表编号
Table = 12345

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = your-server-ip:51820
# 仅代理国外IP
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
PersistentKeepalive = 25

# 添加自定义路由
PostUp = ip rule add table 12345
PostUp = ip route add default via 10.0.0.1 table 12345
PostDown = ip rule delete table 12345

4.4.4 WireGuard与科学上网

优势:

  • ✅ 速度快,延迟低
  • ✅ 电池友好(移动设备)
  • ✅ 自动重连(IP变化)
  • ✅ 代码简洁安全

劣势:

  • ❌ 流量特征明显(易识别为VPN)
  • ❌ 不支持混淆伪装
  • ❌ 在某些地区可能被封锁

适用场景:

推荐使用:
✓ 网络环境宽松地区
✓ 追求极致性能
✓ 移动设备(省电)
✓ 游戏加速(低延迟)

不推荐:
✗ GFW严格地区
✗ 需要高度隐蔽性
✗ ISP限制VPN协议

4.5 其他协议对比

4.5.1 协议综合对比

协议 速度 安全性 隐蔽性 配置难度 推荐度 备注
VLESS+Reality ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ✅✅✅ 最推荐 最佳选择
Trojan ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ✅✅ 强烈推荐 极致伪装
Hysteria ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ✅✅ 特定场景推荐 弱网环境优选
VLESS ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ✅✅ 强烈推荐 配合TLS使用
VMess ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ ⚠️ 易被检测
Shadowsocks ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⚠️ 直连易识别
ShadowsocksR ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐ 更新较少
WireGuard ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐ ⭐⭐ 特征明显

4.5.2 选择建议

新手入门:

推荐顺序:
1. 购买机场服务(支持Clash订阅)
2. 自建Trojan(一键脚本)
3. 自建VLESS + Reality(最佳隐蔽性)

⚠️ 重要提醒:
避免使用纯Shadowsocks或VMess直连
优先选择带混淆/伪装的方案

追求性能:

最佳组合:
VLESS + Reality + gRPC
Hysteria(高带宽场景)

性能排序:
1. Hysteria(弱网环境)
2. VLESS + XTLS(一般环境)
3. WireGuard(网络环境允许时)

追求隐蔽:

最佳方案:
首选:VLESS + Reality(无需域名证书)
次选:Trojan + 真实网站(需域名证书)
备选:VMess + WebSocket + TLS + CDN

隐蔽性排序:
1. VLESS + Reality ⭐⭐⭐⭐⭐
2. Trojan + 真实网站 ⭐⭐⭐⭐⭐
3. 其他协议 + 混淆 ⭐⭐⭐

综合方案:

主力协议:VLESS + Reality(日常使用)
备用协议:Hysteria(高速场景)
应急备份:Shadowsocks + 插件混淆
客户端:Clash Meta / sing-box(规则分流)

多协议策略:
- 平时:VLESS + Reality(稳定隐蔽)
- 看视频:Hysteria(高速传输)
- 敏感期:多协议轮换使用

4.5.3 协议组合策略

多协议部署:

单台VPS部署多个协议:

443端口:Trojan (HTTPS伪装)
Nginx反向代理
    ├─► /trojan → Trojan服务
    ├─► /vmess  → V2Ray VMess
    ├─► /vless  → V2Ray VLESS
    └─► /       → 真实网站

优势:
✓ 灵活切换
✓ 互为备份
✓ 资源利用最大化

本章小结

本章详细介绍了主流代理协议的原理和配置:

核心要点:

  1. Shadowsocks:轻量快速,适合入门
  2. V2Ray/Xray:功能强大,灵活组合
  3. Trojan:极致伪装,难以检测
  4. Clash:规则分流,智能代理
  5. WireGuard:现代VPN,性能卓越

协议选择原则:

  • 网络环境宽松 → WireGuard / Shadowsocks
  • 封锁严重地区 → Trojan / VMess+WS+TLS
  • 追求便利性 → 机场服务 + Clash
  • 技术爱好者 → 自建V2Ray/Xray

最佳实践:

客户端:Clash(规则管理)
主协议:Trojan / VLESS(隐蔽性)
备用:Shadowsocks(轻量备份)
传输:WebSocket + TLS + CDN(稳定性)

下一章我们将学习各平台客户端工具的具体使用方法。


实践任务:

  1. 尝试配置一个Shadowsocks服务器
  2. 理解Clash配置文件结构
  3. 对比不同协议的速度和稳定性
  4. 编写自己的分流规则

延伸阅读:

  • Shadowsocks协议规范
  • V2Ray配置指南
  • Trojan协议文档
  • WireGuard白皮书