跳转至

04 - 代理与 VPN :网络访问加速与隐私保护

本章核心: 理解代理和 VPN 的工作原理,掌握 Clash 等工具的配置和使用


📖 章节导航

前序章节: 03-服务器与 SSH.md 后续章节: 05-网络模式详解.md 快速参考: 13-网络工具箱.md 第 1 章 故障排查: 11-故障排查手册.md 第 3 章


📚 引言:为什么需要代理和 VPN

作为程序员或开发者,你可能经常遇到以下情况:

  • 🚫 访问限制:想访问 Google 、 GitHub 、 Stack Overflow 等网站,但无法打开
  • 🐌 访问速度慢:访问国外网站时加载缓慢,影响开发效率
  • 🔒 隐私担忧:担心上网行为被追踪,IP 地址泄露
  • 🌍 地理限制:某些服务只允许特定地区访问

代理和 VPN 就是解决这些问题的工具!

实际场景举例

Python
# 场景1: 访问GitHub下载代码
# 直接访问: 连接超时 ❌
# 使用代理: 秒速下载 ✅

# 场景2: 学习国外技术文档
# 直接访问: 无法打开 ❌
# 使用代理: 正常访问 ✅

# 场景3: 使用Google搜索技术问题
# 直接访问: 无法使用 ❌
# 使用代理: 正常搜索 ✅

本节学习目标

✅ 理解代理和 VPN 的工作原理 ✅ 掌握 Clash 代理工具的使用 ✅ 学会配置系统代理 ✅ 了解代理的安全与隐私问题 ✅ 能够解决常见的代理问题


🔄 代理服务器(Proxy)

什么是代理服务器

代理服务器是位于你和目标服务器之间的中间服务器。当你访问网站时,请求先发送到代理服务器,再由代理服务器转发给目标服务器。

Text Only
传统访问方式:
你的电脑 ───────────────────────> 目标网站
         (直接连接,IP暴露)

使用代理:
你的电脑 ───> 代理服务器 ───> 目标网站
              (隐藏你的IP)

工作原理

Text Only
┌─────────────┐                  ┌─────────────┐                  ┌─────────────┐
│   你的电脑   │                  │  代理服务器   │                  │  目标网站    │
│             │                  │             │                  │             │
│ IP: 1.2.3.4 │                  │ IP: 5.6.7.8 │                  │ IP: 9.9.9.9 │
│             │                  │             │                  │             │
│  请求:      │ ──────────────> │             │ ──────────────> │             │
│  GET /page  │  1. 你的请求    │  转发请求    │  2. 转发请求    │  处理请求    │
│             │                  │             │                  │             │
│             │ <────────────── │             │ <────────────── │             │
│  响应:      │  4. 返回响应    │  转发响应    │  3. 返回响应    │  返回数据    │
│  HTML内容   │                  │             │                  │             │
└─────────────┘                  └─────────────┘                  └─────────────┘

目标网站看到的是代理服务器的IP (5.6.7.8),而不是你的真实IP (1.2.3.4)

正向代理 vs 反向代理

正向代理(Forward Proxy)

正向代理代表客户端向服务器发起请求,隐藏客户端身份。

Text Only
客户端 ──> 正向代理 ──> 服务器
      代表客户端

应用场景:
- 访问受限网站
- 隐藏客户端IP
- 缓存加速
- 内容过滤

实际例子:

Bash
# 浏览器配置正向代理
代理地址: 127.0.0.1
端口: 7890

# 使用curl通过代理访问
curl -x http://127.0.0.1:7890 https://www.google.com

反向代理(Reverse Proxy)

反向代理代表服务器接收客户端请求,隐藏服务器身份。

Text Only
客户端 ──> 反向代理 ──> 服务器(集群)
      代表服务器

应用场景:
- 负载均衡
- 安全防护
- 缓存加速
- SSL终止

实际例子:

Nginx Configuration File
# Nginx反向代理配置
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;  # 转发到本地Node.js服务
        proxy_set_header Host $host;
    }
}

# 客户端访问 example.com
# 实际请求被转发到 127.0.0.1:3000

HTTP 代理 vs SOCKS 代理

HTTP 代理

HTTP 代理专门处理 HTTP/HTTPS 协议,工作在应用层。

Text Only
特点:
✅ 支持HTTP/HTTPS协议
✅ 可以缓存网页内容
✅ 支持内容过滤
❌ 只能代理HTTP流量

使用场景:
- 浏览器网页访问
- API请求代理

配置示例:

Python
import requests

# 使用HTTP代理
proxies = {
    'http': 'http://127.0.0.1:7890',
    'https': 'http://127.0.0.1:7890'
}

response = requests.get('https://www.google.com', proxies=proxies)
print(response.status_code)

SOCKS 代理

SOCKS 代理工作在会话层,可以代理任意 TCP/UDP 流量。

Text Only
特点:
✅ 支持所有TCP/UDP协议
✅ 不解析应用层协议
✅ 更灵活、更通用
❌ 不支持缓存

使用场景:
- SSH代理
- 游戏加速
- P2P下载

SOCKS 版本对比: | 版本 | 特点 | 支持协议 | |------|------|----------| | SOCKS4 | 只支持 TCP,不支持认证 | TCP | | SOCKS5 | 支持 TCP/UDP,支持认证 | TCP 、 UDP |

配置示例:

Python
import requests

# 使用SOCKS5代理(需要安装requests[socks])
proxies = {
    'http': 'socks5://127.0.0.1:7891',
    'https': 'socks5://127.0.0.1:7891'
}

response = requests.get('https://www.google.com', proxies=proxies)
print(response.status_code)

代理的应用场景

1. 缓存加速

代理服务器缓存常用资源,减少重复请求。

Text Only
第一次访问:
你的电脑 ──> 代理 ──> 目标网站
            └──> 缓存: index.html

第二次访问:
你的电脑 ──> 代理 ──> (从缓存返回)
            └──> 已缓存: index.html

实际应用: - 公司内部代理服务器缓存常用网站 - CDN(Content Delivery Network)可以视为带缓存与调度能力的分发体系,与常见反向代理有相通之处

2. 匿名访问

隐藏真实 IP 地址,保护隐私。

Text Only
不使用代理:
你的电脑(IP: 1.2.3.4) ──> 目标网站
                           看到你的真实IP

使用代理:
你的电脑(IP: 1.2.3.4) ──> 代理(IP: 5.6.7.8) ──> 目标网站
                                            看到代理IP

3. 内容过滤

代理服务器可以过滤特定内容。

Text Only
你的电脑 ──> 代理(过滤规则) ──> 目标网站
            - 拦截广告
            - 阻止恶意网站
            - 过滤成人内容

实际应用: - 公司网络限制访问娱乐网站 - 家长控制软件 - 广告拦截器


🔐 VPN(虚拟专用网络)

什么是 VPN

VPN(Virtual Private Network)通过在公共网络上建立加密隧道,创建安全的虚拟专用网络。

Text Only
不使用VPN:
你的电脑 ───────────────────────> 互联网
         (数据明文传输,可被监听)

使用VPN:
你的电脑 ──> VPN加密隧道 ──> VPN服务器 ──> 互联网
         (数据加密传输,安全)

VPN 工作原理

Text Only
┌─────────────┐                  ┌─────────────┐                  ┌─────────────┐
│   你的电脑   │                  │  VPN服务器   │                  │  目标网站    │
│             │                  │             │                  │             │
│ IP: 1.2.3.4 │                  │ IP: 5.6.7.8 │                  │ IP: 9.9.9.9 │
│             │                  │             │                  │             │
│  原始数据:   │                  │             │                  │             │
│  "Hello"    │                  │             │                  │             │
│      ↓      │                  │             │                  │             │
│  加密数据:   │ ──────────────> │             │                  │             │
│  "Xy7@#mK"  │  1. 加密隧道    │  解密数据    │  2. 转发请求    │  处理请求    │
│             │                  │  "Hello"    │                  │             │
│             │ <────────────── │             │ <────────────── │             │
│  解密数据:   │  4. 返回加密    │  加密响应    │  3. 返回响应    │  返回数据    │
│  "World"    │                  │  "AbC@9$z"  │                  │             │
└─────────────┘                  └─────────────┘                  └─────────────┘

整个传输过程都是加密的,即使被监听也无法解密

VPN vs 代理

特性 代理 VPN
工作层级 应用层 网络层/传输层
加密 通常不加密 全程加密
覆盖范围 只代理特定应用 系统级所有流量
速度 较快 较慢(加密开销)
配置 应用级配置 系统级配置
安全性 较低
适用场景 浏览器代理、 API 请求 远程办公、隐私保护
Text Only
代理:
浏览器 ──> 代理 ──> 互联网
其他应用 ──> 直接 ──> 互联网

VPN:
所有应用 ──> VPN隧道 ──> 互联网

VPN 协议类型

1. PPTP(Point-to-Point Tunneling Protocol)

Text Only
特点:
✅ 配置简单
✅ 速度快
❌ 安全性低(已被破解)
❌ 容易被防火墙拦截

适用场景:
- 临时使用
- 对安全性要求不高

2. L2TP/IPsec(Layer 2 Tunneling Protocol)

Text Only
特点:
✅ 安全性高(IPsec加密)
✅ 广泛支持
❌ 速度较慢(双重封装)
❌ 容易被防火墙拦截

适用场景:
- 企业VPN
- 需要高安全性

3. OpenVPN

Text Only
特点:
✅ 开源免费
✅ 安全性高
✅ 可配置性强
✅ 难以被检测
❌ 配置复杂
❌ 速度一般

适用场景:
- 个人使用
- 技术用户
- 需要高安全性

4. WireGuard

Text Only
特点:
✅ 代码简洁(实现规模相对较小,便于审计和维护)
✅ 速度快
✅ 安全性高
✅ 配置简单
❌ 相对较新
❌ 老旧系统或企业合规环境中,支持情况需要额外确认

适用场景:
- 很多新部署会优先评估
- 性能要求高
- 技术用户

VPN 的应用场景

1. 远程办公

Text Only
公司网络(内网) ──> VPN服务器 <─┐
员工在家 ──> VPN隧道 ──> ────┘

员工可以安全访问公司内网资源

实际应用: - 访问公司内部系统 - 连接公司数据库 - 使用公司内部工具

2. 隐私保护

Text Only
不使用VPN:
你的电脑 ──> ISP ──> 互联网
         (ISP可以看到你的所有流量)

使用VPN:
你的电脑 ──> VPN加密隧道 ──> VPN服务器 ──> 互联网
         (ISP只能看到加密流量,无法解密)

3. 绕过地理限制

Text Only
你在国内 ──> VPN服务器(美国) ──> Netflix(美国)
                                      (可以访问)

你在国内 ──> 直接 ──> Netflix(美国)
                         (无法访问,地理限制)

实际应用: - 访问国外流媒体(Netflix 、 YouTube) - 使用国外服务 - 获取地区性优惠


⚡ Clash 详解

Clash 是什么

Clash是一个基于规则的代理工具,支持多种代理协议,使用 Go 语言编写,跨平台支持。

Text Only
核心特点:
✅ 支持多种协议(Shadowsocks、V2Ray、Trojan等)
✅ 基于规则的智能分流
✅ 支持策略组
✅ 跨平台(Windows、macOS、Linux、Android、iOS)
✅ 开源免费

Clash 的核心概念

1. 代理节点(Proxy)

代理节点是实际的代理服务器配置。

YAML
proxies:
  - name: "节点1-日本"
    type: ss
    server: jp.example.com
    port: 8388
    cipher: aes-256-gcm
    password: "your-password"

  - name: "节点2-美国"
    type: vmess
    server: us.example.com
    port: 443
    uuid: "your-uuid"
    alterId: 0
    cipher: auto

2. 规则(Rules)

规则决定流量如何路由。

YAML
rules:
  # 域名规则
  - DOMAIN-SUFFIX,google.com,Proxy
  - DOMAIN-SUFFIX,github.com,Proxy

  # IP规则
  - IP-CIDR,1.1.1.1/32,Proxy

  # 关键字规则
  - DOMAIN-KEYWORD,google,Proxy

  # GEOIP规则
  - GEOIP,CN,Direct

  # 最终规则
  - MATCH,Direct

3. 策略组(Proxy Groups)

策略组允许选择多个代理节点,并设置选择策略。

YAML
proxy-groups:
  - name: "自动选择"
    type: url-test
    proxies:
      - "节点1-日本"
      - "节点2-美国"
    url: http://www.gstatic.com/generate_204
    interval: 300

  - name: "手动选择"
    type: select
    proxies:
      - "自动选择"
      - "节点1-日本"
      - "节点2-美国"
      - DIRECT

Clash 配置文件解析(config.YAML)

完整配置示例:

YAML
# Clash配置文件示例

# 混合端口(HTTP和SOCKS5共用)
mixed-port: 7890

# 允许局域网连接
allow-lan: true

# 日志级别
log-level: info

# 模式: Rule(规则)、Global(全局)、Direct(直连)
mode: Rule

# 外部控制接口
external-controller: 127.0.0.1:9090

# DNS配置
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - 8.8.8.8
    - 1.1.1.1

# 代理节点
proxies:
  - name: "日本-东京-01"
    type: ss
    server: jp1.example.com
    port: 8388
    cipher: aes-256-gcm
    password: "your-password"

  - name: "美国-洛杉矶-01"
    type: vmess
    server: us1.example.com
    port: 443
    uuid: "your-uuid"
    alterId: 0
    cipher: auto
    network: ws
    ws-opts:
      path: /path
      headers:
        Host: us1.example.com
    tls: true

# 策略组
proxy-groups:
  - name: "🚀 节点选择"
    type: select
    proxies:
      - "⚡ 自动选择"
      - "日本-东京-01"
      - "美国-洛杉矶-01"
      - DIRECT

  - name: "⚡ 自动选择"
    type: url-test
    proxies:
      - "日本-东京-01"
      - "美国-洛杉矶-01"
    url: http://www.gstatic.com/generate_204
    interval: 300

  - name: "🎯 全球直连"
    type: select
    proxies:
      - DIRECT
      - "🚀 节点选择"

  - name: "🛑 广告拦截"
    type: select
    proxies:
      - REJECT
      - DIRECT

# 规则
rules:
  # 局域网直连
  - IP-CIDR,192.168.0.0/16,🎯 全球直连
  - IP-CIDR,10.0.0.0/8,🎯 全球直连
  - IP-CIDR,172.16.0.0/12,🎯 全球直连
  - IP-CIDR,127.0.0.0/8,🎯 全球直连

  # 广告拦截
  - DOMAIN-SUFFIX,googleadservices.com,🛑 广告拦截
  - DOMAIN-SUFFIX,googlesyndication.com,🛑 广告拦截

  # 常用国外网站
  - DOMAIN-SUFFIX,google.com,🚀 节点选择
  - DOMAIN-SUFFIX,googleapis.com,🚀 节点选择
  - DOMAIN-SUFFIX,googleusercontent.com,🚀 节点选择
  - DOMAIN-SUFFIX,github.com,🚀 节点选择
  - DOMAIN-SUFFIX,githubusercontent.com,🚀 节点选择
  - DOMAIN-SUFFIX,youtube.com,🚀 节点选择
  - DOMAIN-SUFFIX,facebook.com,🚀 节点选择
  - DOMAIN-SUFFIX,twitter.com,🚀 节点选择

  # 国内网站直连
  - GEOIP,CN,🎯 全球直连

  # 默认规则
  - MATCH,🚀 节点选择

Clash 的 TUN 模式和规则模式

规则模式(Rule Mode)

规则模式根据规则表决定流量路由。

Text Only
┌─────────────┐
│   你的电脑   │
│             │
│  访问请求   │
│             │
└──────┬──────┘
┌─────────────────┐
│   Clash规则表   │
│                 │
│ google.com  ──> 代理
│ baidu.com   ──> 直连
│ github.com  ──> 代理
│                 │
└──────┬──────────┘
┌─────────────────┐
│   路由决策      │
│   (代理/直连)    │
└─────────────────┘

适用场景: - 浏览器代理 - 需要精细控制 - 应用级代理

TUN 模式(TUN Mode)

TUN 模式创建虚拟网卡,接管系统所有流量。

Text Only
不使用TUN:
应用1 ──> 系统网络 ──> 互联网
应用2 ──> 系统网络 ──> 互联网
应用3 ──> 系统网络 ──> 互联网

使用TUN:
应用1 ──> TUN虚拟网卡 ──> Clash ──> 互联网
应用2 ──> TUN虚拟网卡 ──> Clash ──> 互联网
应用3 ──> TUN虚拟网卡 ──> Clash ──> 互联网

适用场景: - 系统级代理 - 不支持代理的应用 - 命令行工具代理

配置示例:

YAML
# config.yaml
tun:
  enable: true
  stack: system
  dns-hijack:
    - any:53
  auto-route: true
  auto-detect-interface: true

📊 代理模式对比

全局代理 vs PAC 规则代理

全局代理(Global Proxy)

所有流量都通过代理服务器。

Text Only
全局代理:
你的电脑 ──> 代理服务器 ──> 互联网
(所有流量)

优点:
✅ 配置简单
✅ 不需要规则

缺点:
❌ 国内网站也走代理,速度慢
❌ 浪费代理流量
❌ 可能被国内网站检测

PAC 规则代理(PAC Proxy)

根据 PAC(Proxy Auto-Config)规则决定是否使用代理。

Text Only
PAC规则代理:
访问google.com ──> 代理
访问baidu.com ──> 直连
访问github.com ──> 代理
访问taobao.com ──> 直连

优点:
✅ 智能分流,速度快
✅ 节省代理流量
✅ 国内网站直连

缺点:
❌ 配置复杂
❌ 规则需要维护

PAC 文件示例:

JavaScript
function FindProxyForURL(url, host) {
    // 直连的域名
    var direct = [
        "*.baidu.com",
        "*.taobao.com",
        "*.qq.com"
    ];

    // 代理的域名
    var proxy = [
        "*.google.com",
        "*.github.com",
        "*.youtube.com"
    ];

    // 检查是否需要代理
    for (var i = 0; i < direct.length; i++) {
        if (shExpMatch(host, direct[i])) {
            return "DIRECT";
        }
    }

    for (var i = 0; i < proxy.length; i++) {
        if (shExpMatch(host, proxy[i])) {
            return "PROXY 127.0.0.1:7890";
        }
    }

    // 默认直连
    return "DIRECT";
}

直连、代理、拒绝的区别

模式 说明 使用场景
直连(DIRECT) 流量不经过代理,直接访问 国内网站、局域网
代理(PROXY) 流量通过代理服务器访问 国外网站、受限网站
拒绝(REJECT) 直接拒绝连接,不发送请求 广告、恶意网站
Text Only
访问示例:
访问 baidu.com     ──> DIRECT   ──> 直连
访问 google.com    ──> PROXY    ──> 代理
访问 ads.com       ──> REJECT   ──> 拒绝连接

如何选择合适的代理策略

根据网络环境选择

Text Only
国内网络:
- 国内网站: 直连
- 国外网站: 代理
- 局域网: 直连

国外网络:
- 所有网站: 直连(除非需要回国访问)
- 国内网站: 代理(回国节点)

根据应用类型选择

Text Only
浏览器:
- 使用PAC规则代理
- 智能分流

命令行工具:
- 使用环境变量
- export http_proxy=http://127.0.0.1:7890

游戏:
- 直连(延迟最低)
- 或使用游戏加速器

下载工具:
- 大文件下载: 代理
- 小文件下载: 直连

根据速度需求选择

Text Only
速度优先:
- 国内网站: 直连
- 国外网站: 选择延迟低的节点
- 使用自动选择策略组

稳定性优先:
- 使用手动选择策略组
- 固定使用稳定的节点
- 避免频繁切换

🛠️ 实战配置

配置系统代理(Windows)

方法 1: 通过设置界面

  1. 打开"设置" → "网络和 Internet" → "代理"
  2. 在"手动设置代理"中:
  3. 开启"使用代理服务器"
  4. 地址: 127.0.0.1
  5. 端口: 7890
  6. 点击"保存"
Text Only
Windows代理设置:
┌─────────────────────────────┐
│  使用代理服务器              │
│  ┌─────────────────────┐   │
│  │ 地址: 127.0.0.1     │   │
│  │ 端口: 7890          │   │
│  └─────────────────────┘   │
│                             │
│  [ ] 跳过本地地址的代理     │
│                             │
│  [保存]                     │
└─────────────────────────────┘

方法 2: 通过命令行

Text Only
# 设置代理
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d "127.0.0.1:7890" /f

# 取消代理
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f

方法 3: 通过 PowerShell

PowerShell
# 设置代理
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyServer -Value "127.0.0.1:7890"

# 取消代理
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value 0

配置系统代理(macOS)

方法 1: 通过系统设置

  1. 打开"系统设置" → "网络" → 选择网络连接
  2. 点击"详细信息" → "代理"
  3. 勾选"HTTP 代理"和"HTTPS 代理":
  4. 服务器: 127.0.0.1
  5. 端口: 7890
  6. 点击"好"
Text Only
macOS代理设置:
┌─────────────────────────────┐
│  代理                       │
│                             │
│  ☑ HTTP代理                 │
│     服务器: 127.0.0.1       │
│     端口: 7890              │
│                             │
│  ☑ HTTPS代理                │
│     服务器: 127.0.0.1       │
│     端口: 7890              │
│                             │
│  [好]                       │
└─────────────────────────────┘

方法 2: 通过命令行

Bash
# 设置代理
sudo networksetup -setwebproxy Wi-Fi 127.0.0.1 7890
sudo networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 7890

# 取消代理
sudo networksetup -setwebproxystate Wi-Fi off
sudo networksetup -setsecurewebproxystate Wi-Fi off

配置系统代理(Linux)

方法 1: 通过环境变量

Bash
# 临时设置(当前终端有效)
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891

# 永久设置(添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export http_proxy=http://127.0.0.1:7890' >> ~/.bashrc
echo 'export https_proxy=http://127.0.0.1:7890' >> ~/.bashrc
source ~/.bashrc

方法 2: 通过图形界面(GNOME)

Bash
# 使用gsettings设置代理
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host '127.0.0.1'
gsettings set org.gnome.system.proxy.http port 7890
gsettings set org.gnome.system.proxy.https host '127.0.0.1'
gsettings set org.gnome.system.proxy.https port 7890

使用 Clash for Windows

安装

  1. 下载 Clash for Windows: https://github.com/Fndroid/clash_for_windows_pkg/releases
  2. 解压并运行Clash for Windows.exe

配置订阅

  1. 启动 Clash for Windows
  2. 点击"配置文件(Profiles)" → "新建(New)"
  3. 输入订阅 URL,点击"下载"
  4. 选择配置文件,点击"选择(Select)"
Text Only
Clash for Windows界面:
┌─────────────────────────────────────┐
│  配置文件(Profiles)                  │
│                                     │
│  ┌─────────────────────────────┐   │
│  │ 配置1 [选择]                 │   │
│  │ 配置2                        │   │
│  │ 配置3                        │   │
│  └─────────────────────────────┘   │
│                                     │
│  [新建] [更新] [编辑]               │
└─────────────────────────────────────┘

启用系统代理

  1. 点击"常规(General)"选项卡
  2. 开启"系统代理(System Proxy)"
  3. 开启"允许局域网连接(Allow LAN)"
Text Only
常规设置:
┌─────────────────────────────────────┐
│  端口                               │
│  HTTP: 7890                         │
│  SOCKS5: 7891                       │
│                                     │
│  系统代理                           │
│  [开启]                             │
│                                     │
│  允许局域网连接                     │
│  [开启]                             │
└─────────────────────────────────────┘

选择代理节点

  1. 点击"代理(Proxies)"选项卡
  2. 选择策略组和节点
Text Only
代理设置:
┌─────────────────────────────────────┐
│  策略组                             │
│                                     │
│  🚀 节点选择                        │
│    ⚡ 自动选择 [日本-东京-01]       │
│    🎯 全球直连                      │
│                                     │
│  ⚡ 自动选择                        │
│    [日本-东京-01] 50ms             │
│    [美国-洛杉矶-01] 120ms          │
└─────────────────────────────────────┘

使用 Clash for Mac

安装

Bash
# 使用Homebrew安装
brew install --cask clashx

# 或下载安装包
# https://github.com/yichengchen/clashX/releases

配置

  1. 启动 ClashX
  2. 点击菜单栏图标 → "配置" → "管理配置文件"
  3. 添加订阅 URL 或手动导入配置文件

启用代理

  1. 点击菜单栏图标
  2. 选择"设置为系统代理"

配置 PAC 规则

方法 1: 使用 Clash 内置 PAC

Clash 会自动生成 PAC 规则,在浏览器中使用:

Text Only
PAC地址: http://127.0.0.1:9090/pac

方法 2: 自定义 PAC 文件

创建自定义 PAC 文件:

JavaScript
// custom.pac
function FindProxyForURL(url, host) {
    // 直连的域名列表
    var directHosts = [
        "*.baidu.com",
        "*.taobao.com",
        "*.qq.com",
        "*.163.com",
        "*.sina.com.cn"
    ];

    // 代理的域名列表
    var proxyHosts = [
        "*.google.com",
        "*.github.com",
        "*.youtube.com",
        "*.facebook.com",
        "*.twitter.com",
        "*.stackoverflow.com"
    ];

    // 检查是否需要直连
    for (var i = 0; i < directHosts.length; i++) {
        if (shExpMatch(host, directHosts[i])) {
            return "DIRECT";
        }
    }

    // 检查是否需要代理
    for (var i = 0; i < proxyHosts.length; i++) {
        if (shExpMatch(host, proxyHosts[i])) {
            return "PROXY 127.0.0.1:7890; SOCKS5 127.0.0.1:7891; DIRECT";
        }
    }

    // 局域网直连
    if (isPlainHostName(host) ||
        shExpMatch(host, "*.local") ||
        isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
        isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
        isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0")) {
        return "DIRECT";
    }

    // 默认直连
    return "DIRECT";
}

在浏览器中使用 PAC:

Text Only
Chrome:
设置 → 系统 → 打开代理设置 → 使用自动配置脚本
脚本地址: file:///path/to/custom.pac

Firefox:
设置 → 网络设置 → 自动代理配置URL
URL: file:///path/to/custom.pac

测试代理是否生效

方法 1: 查看 IP 地址

Bash
# 不使用代理
curl ipinfo.io

# 使用代理
curl -x http://127.0.0.1:7890 ipinfo.io

# 使用SOCKS5代理
curl -x socks5://127.0.0.1:7891 ipinfo.io

方法 2: 测试网站访问

Bash
# 测试访问Google
curl -I https://www.google.com

# 测试访问GitHub
curl -I https://github.com

# 测试访问国内网站
curl -I https://www.baidu.com

方法 3: 使用在线工具

访问以下网站查看 IP: - https://ipinfo.io - https://whatismyipaddress.com - https://ip.cn

Text Only
不使用代理:
IP: 1.2.3.4 (你的真实IP)
位置: 中国

使用代理:
IP: 5.6.7.8 (代理服务器IP)
位置: 美国/日本/其他

方法 4: 使用 Wireshark 抓包

  1. 启动 Wireshark
  2. 选择网卡
  3. 设置过滤器: ip.addr == 代理服务器IP
  4. 查看流量是否经过代理

🔒 安全与隐私

代理和 VPN 的安全性分析

代理的安全性

Text Only
HTTP代理:
❌ 数据明文传输,可被监听
❌ 代理服务器可以看到你的所有请求
❌ 恶意代理可以窃取数据
✅ 适合访问公开内容

HTTPS代理:
⚠️ HTTPS流量加密,代理无法解密
⚠️ 但代理可以看到访问的域名
✅ 相对安全

SOCKS代理:
⚠️ 代理服务器可以看到所有流量
❌ 如果不加密,数据可被监听
✅ 灵活性高

VPN 的安全性

Text Only
VPN:
✅ 所有流量加密
✅ VPN服务器无法解密(端到端加密)
✅ 防止ISP监听
✅ 防止公共WiFi窃听
⚠️ VPN提供商可以看到你的流量(除非端到端加密)
⚠️ VPN日志可能泄露隐私

如何选择可信的代理服务

评估标准

  1. 隐私政策
  2. 是否承诺不记录日志
  3. 日志保留时间
  4. 数据共享政策

  5. 安全性

  6. 加密协议强度
  7. 是否支持完美前向保密(PFS)
  8. 是否经过安全审计

  9. 透明度

  10. 开源代码
  11. 定期发布透明度报告
  12. 独立安全审计

  13. 可靠性

  14. 服务器稳定性
  15. 速度表现
  16. 客服支持

推荐的 VPN 服务

Text Only
开源免费:
- ProtonVPN(免费版)
- Windscribe(免费版)
- Mullvad VPN(注重隐私)

付费服务:
- ExpressVPN(速度快)
- NordVPN(功能全)
- Surfshark(性价比高)

自建代理服务器

Bash
# 使用VPS自建Shadowsocks服务器
# 1. 购买VPS(推荐国外)
# 2. 安装Shadowsocks

# Ubuntu/Debian
sudo apt update
sudo apt install shadowsocks-libev

# 配置shadowsocks
sudo nano /etc/shadowsocks-libev/config.json

{
    "server":"0.0.0.0",
    "server_port":8388,
    "password":"your-password",
    "timeout":60,
    "method":"aes-256-gcm"
}

# 启动服务
sudo systemctl start shadowsocks-libev
sudo systemctl enable shadowsocks-libev

DNS 泄露问题及预防

什么是 DNS 泄露

DNS 泄露是指 DNS 查询没有通过 VPN/代理,直接发送到 ISP 的 DNS 服务器,导致你的真实位置暴露。

Text Only
正常情况:
你的电脑 ──> VPN ──> VPN的DNS ──> 互联网
(所有流量都走VPN)

DNS泄露:
你的电脑 ──> VPN ──> 互联网
         └──> ISP的DNS(泄露!)

检测 DNS 泄露

访问以下网站检测: - https://dnsleaktest.com - https://ipleak.net - https://www.dnsleak.com

预防 DNS 泄露

  1. 使用 VPN 的 DNS 服务器
YAML
# Clash配置
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - 8.8.8.8
    - 1.1.1.1
  1. 强制 DNS 通过代理
Bash
# 修改DNS设置
# Windows: 设置 → 网络和Internet → 更改适配器选项
# 右键网络连接 → 属性 → Internet协议版本4(TCP/IPv4)
# 使用下面的DNS服务器地址: 8.8.8.8, 8.8.4.4

# macOS: 系统设置 → 网络 → 高级 → DNS
# 添加DNS服务器: 8.8.8.8

# Linux: 编辑 /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
  1. 使用 DNS over HTTPS/TLS
YAML
# Clash配置DoH
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.google/dns-query
    - https://cloudflare-dns.com/dns-query

日志和隐私保护

代理/VPN 日志类型

Text Only
连接日志:
- 连接时间
- 源IP地址
- 目标IP地址
- 使用的协议
- 流量大小

使用日志:
- 访问的网站
- 搜索关键词
- 下载的文件
- 上传的内容

错误日志:
- 连接失败
- 超时错误
- 认证错误

如何保护隐私

  1. 选择不记录日志的服务
Text Only
推荐:
- Mullvad VPN(不记录任何日志)
- ProtonVPN(不记录浏览日志)
- ExpressVPN(不记录活动日志)
  1. 使用匿名支付
Text Only
推荐支付方式:
- 加密货币(BTC、ETH)
- 礼品卡
- 现金(如果支持)
  1. 定期更换 IP
YAML
# Clash配置自动切换
proxy-groups:
  - name: "自动选择"
    type: url-test
    proxies:
      - "节点1"
      - "节点2"
      - "节点3"
    url: http://www.gstatic.com/generate_204
    interval: 300  # 每5分钟测试一次
  1. 使用隐私浏览器
Text Only
推荐浏览器:
- Tor Browser(最大隐私保护)
- Brave(注重隐私)
- Firefox(可配置隐私设置)

❓ 常见问题

Q1: 代理连接失败怎么办

问题诊断

Bash
# 1. 检查代理服务是否运行
# Windows
netstat -ano | findstr :7890

# Linux/Mac
netstat -tuln | grep :7890  # grep文本搜索:按模式匹配行
# 或
ss -tuln | grep :7890

# 2. 测试代理连接
curl -v -x http://127.0.0.1:7890 https://www.google.com

# 3. 查看代理日志
# Clash日志位置:
# Windows: %USERPROFILE%\.config\clash\logs\
# Mac: ~/.config/clash/logs/
# Linux: ~/.config/clash/logs/

常见原因及解决方法

原因 1: 代理服务未启动

Text Only
解决方法:
1. 启动Clash/代理软件
2. 检查服务状态
3. 重启代理软件

原因 2: 端口被占用

Bash
# 查找占用端口的进程
# Windows
netstat -ano | findstr :7890
taskkill /PID <进程ID> /F

# Linux/Mac
lsof -i :7890
kill -9 <进程ID>

原因 3: 防火墙阻止

Text Only
解决方法:
1. 添加防火墙例外
2. 允许代理软件通过防火墙
3. 关闭防火墙测试

原因 4: 代理节点失效

Text Only
解决方法:
1. 更新订阅
2. 切换到其他节点
3. 联系服务提供商

Q2: 为什么有些网站无法通过代理访问

常见原因

原因 1: 网站检测代理

Text Only
某些网站会检测代理IP并拒绝访问:
- 银行网站
- 支付网站
- 部分游戏网站

解决方法:
1. 使用住宅代理
2. 使用VPN替代代理
3. 直连访问

原因 2: 代理 IP 被封锁

Text Only
某些网站封锁了代理服务器的IP:
- Google
- Netflix
- Amazon

解决方法:
1. 切换到其他节点
2. 使用专用IP
3. 联系服务提供商

原因 3: DNS 解析问题

Text Only
DNS解析失败导致无法访问:
- DNS服务器配置错误
- DNS污染

解决方法:
1. 更换DNS服务器
2. 使用DNS over HTTPS
3. 清除DNS缓存

# 清除DNS缓存
# Windows
ipconfig /flushdns

# Mac
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

# Linux
sudo systemd-resolve --flush-caches

原因 4: SSL 证书问题

Text Only
HTTPS证书验证失败:
- 代理使用了自签名证书
- 证书过期

解决方法:
1. 更新代理软件
2. 禁用SSL验证(不推荐)
3. 使用系统代理而非手动代理

Q3: 如何判断流量是否走代理

方法 1: 查看 IP 地址

Bash
# 查看当前IP
curl ipinfo.io

# 预期结果:
# 不使用代理: 显示你的真实IP
# 使用代理: 显示代理服务器的IP

方法 2: 使用 traceroute

Bash
# Windows
tracert www.google.com

# Linux/Mac
traceroute www.google.com

# 查看路由路径
# 如果经过代理服务器,说明流量走代理

方法 3: 使用 Wireshark 抓包

Text Only
1. 启动Wireshark
2. 选择网卡
3. 开始抓包
4. 访问目标网站
5. 查看数据包目标IP

预期结果:
- 直接访问: 目标IP是网站服务器IP
- 代理访问: 目标IP是代理服务器IP

方法 4: 使用浏览器开发者工具

Text Only
1. 打开浏览器开发者工具(F12)
2. 切换到"网络(Network)"标签
3. 访问目标网站
4. 查看请求详情

预期结果:
- 查看请求头中是否有代理信息

Q4: 代理速度慢怎么办

诊断问题

Bash
# 1. 测试代理延迟
# 使用Clash的url-test功能
# 或手动测试

# 2. 测试直连速度
ping www.google.com

# 3. 测试代理速度
curl -o /dev/null -s -w "%{time_total}\n" -x http://127.0.0.1:7890 https://www.google.com

优化方法

方法 1: 切换到更快的节点

YAML
# Clash配置自动选择
proxy-groups:
  - name: "自动选择"
    type: url-test
    proxies:
      - "节点1"
      - "节点2"
      - "节点3"
    url: http://www.gstatic.com/generate_204
    interval: 300  # 每5分钟测试一次
    tolerance: 50  # 延迟差超过50ms才切换

方法 2: 使用更快的代理协议

Text Only
协议速度对比(从快到慢):
1. Shadowsocks
2. Trojan
3. V2Ray
4. OpenVPN

建议:
- 优先使用Shadowsocks
- 或使用Trojan

方法 3: 优化网络设置

Bash
# 1. 启用TCP快速打开
# Linux
echo 3 | sudo tee /proc/sys/net/ipv4/tcp_fastopen  # |管道:将前一命令的输出作为后一命令的输入

# 2. 调整TCP窗口大小
# Linux
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

方法 4: 评估边缘接入或 CDN 转发能力(仅适用于支持该拓扑的方案)

YAML
# 仅当服务端方案明确支持边缘接入时,再评估类似配置
proxies:
  - name: "CDN节点"
    type: ss
    server: cdn.example.com  # CDN域名
    port: 443
    cipher: aes-256-gcm
    password: "your-password"

方法 5: 减少代理规则

YAML
# 简化规则,提高匹配速度
rules:
  # 使用GEOIP规则代替大量域名规则
  - GEOIP,CN,Direct
  - MATCH,Proxy

📝 总结

核心知识点回顾

  1. 代理服务器
  2. 正向代理 vs 反向代理
  3. HTTP 代理 vs SOCKS 代理
  4. 应用场景: 缓存、匿名、过滤

  5. VPN

  6. 工作原理: 加密隧道
  7. 协议类型: PPTP 、 L2TP 、 OpenVPN 、 WireGuard
  8. 应用场景: 远程办公、隐私保护、绕过限制

  9. Clash

  10. 核心概念: 代理节点、规则、策略组
  11. 配置文件: config.YAML
  12. 工作模式: 规则模式、 TUN 模式

  13. 代理模式

  14. 全局代理 vs PAC 规则代理
  15. 直连、代理、拒绝的区别
  16. 根据场景选择合适的策略

  17. 实战配置

  18. 系统代理配置(Windows 、 macOS 、 Linux)
  19. Clash for Windows/Mac 使用
  20. PAC 规则配置
  21. 代理测试方法

  22. 安全与隐私

  23. 代理和 VPN 的安全性分析
  24. DNS 泄露及预防
  25. 日志和隐私保护

学习建议

📚 循序渐进: 1. 先理解代理和 VPN 的基本概念 2. 学会配置系统代理 3. 掌握 Clash 的基本使用 4. 学习规则配置和优化 5. 了解安全和隐私问题

🛠️ 动手实践: - 配置系统代理 - 安装和使用 Clash - 测试代理是否生效 - 优化代理速度 - 检测 DNS 泄露

📖 进阶学习: - 自建代理服务器 - 学习代理协议原理 - 深入理解网络安全 - 研究隐私保护技术

推荐资源

📖 文档: - Mihomo 文档(原 Clash Meta , Clash 已停止维护) - Shadowsocks 文档 — 官方 GitHub 仓库 - WireGuard 文档

🌐 在线资源: - DNS 泄露测试 - IP 检测工具 - Wireshark 官网

🎯 工具推荐: - Clash for Windows/Mac - V2RayN - Shadowsocks - WireGuard


记住: 代理和 VPN 是重要的网络工具,合理使用可以提升开发效率、保护隐私安全! 🚀

⚠️ 核验说明(2026-04-03):本页已完成当前目录下的人工复核,重点检查了代理、VPN、常见模式与排障建议的准确性。若文中涉及外部模型、API、版本号、价格或第三方产品名称,请以官方文档和实际运行环境为准。


最后更新日期: 2026-04-03