代理协议与网络穿透

七月 18, 2025 [network] #proxy #vless #xray #cloudflare #sing-box #nginx

代理协议与网络穿透

代理协议对比

基础代理协议

协议特点现状
Shadowsocks经典加密代理极易被识别封禁
VMess + WebSocket伪装 HTTP 流量端口被封频繁
VLESS + Vision消除 TLS in TLS 特征须配合有效证书域名
VLESS + Vision + REALITY偷取大厂 TLS 证书当前最稳定

TLS 伪装协议演进

XTLS 核心技术

协议安全评估

Cloudflare 代理

支持的端口

HTTP 端口:80, 8080, 8880, 2052, 2082, 2086, 2095

HTTPS 端口:443, 2053, 2083, 2087, 2096, 8443

仅 80 和 443 支持缓存、Cloudflare Apps、中国网络等全部功能。通过 WAF 规则可阻止非 80/443 端口的流量。

Cloudflare IP 段

173.245.48.0/20, 103.21.244.0/22, 103.22.200.0/22, 103.31.4.0/22
141.101.64.0/18, 108.162.192.0/18, 190.93.240.0/20, 188.114.96.0/20
197.234.240.0/22, 198.41.128.0/17, 162.158.0.0/15, 104.16.0.0/13
104.24.0.0/14, 172.64.0.0/13, 131.0.72.0/22

CF Worker VLESS proxyIP 原理

CF Worker 不能直接访问 Cloudflare 自家的 IP 地址(官方确认)。当远程 TCP 无数据返回时触发 retry(),通过 proxyIP("神奇的 IP")中转数据包到 CF 目的 IP。

这不是每次转发都用,只作 failsafe。非 Cloudflare 部署的网站(如 AWS Cloudfront、Google)可直接访问,不经过 proxyIP。

proxyIP 的隐患:安全性(数据转给第三方)、速度受限于单个 IP、可用性不确定。

反代 CF IP

链路:用户 → 自己的 VPS → Cloudflare CDN → 源站

通过 iptables 将 VPS 端口转发到 Cloudflare 对应端口,实现加速的同时享受 CF 的防护功能。

# 使用 arloor 的 iptables 转发脚本
# 原理:将 VPS 的 80 端口流量转发到 Cloudflare CDN IP:80

sing-box / Xray / v2ray 部署

服务端安装

# sing-box
bash <(wget -qO- https://github.com/233boy/sing-box/raw/main/install.sh)

# Xray
bash <(wget -qO- https://github.com/233boy/xray/raw/main/install.sh)

面板管理

# 3x-ui(Xray 管理面板)
bash <(curl -Ls https://raw.githubusercontent.com/MHSanaei/3x-ui/refs/tags/v2.6.0/install.sh)
x-ui  # TUI 配置界面

订阅转换

sing-box 不直接兼容大多数机场的订阅格式,需 sing-box-subscribe 转换:

<URL>/url=<subscription_url>/&file=<sing-box_template_url>

Clash API 兼容

sing-box 兼容 Clash API,可使用 metacubexd dashboard:

{
  "experimental": {
    "clash_api": {
      "external_controller": "0.0.0.0:9090",
      "external_ui": "metacubexd",
      "default_mode": "rule"
    }
  }
}

客户端软件

透明网关

在网关上运行 sing-box,其他机器将网关指向该机器即可智能分流。注意:

Nginx 代理配置

proxy_set_header Host

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;

推荐使用 $host 避免 Host 头部丢失的情况。

X-Forwarded-For

X-Forwarded-For: client, proxy1, proxy2

每经过一层代理,将请求来源 IP 追加到右侧。最左边的 IP 是原始客户端。该字段易被伪造,应谨慎使用。

工具与参考