代理协议与网络穿透
七月 18, 2025 [network] #proxy #vless #xray #cloudflare #sing-box #nginx代理协议与网络穿透
代理协议对比
基础代理协议
| 协议 | 特点 | 现状 |
|---|---|---|
| Shadowsocks | 经典加密代理 | 极易被识别封禁 |
| VMess + WebSocket | 伪装 HTTP 流量 | 端口被封频繁 |
| VLESS + Vision | 消除 TLS in TLS 特征 | 须配合有效证书域名 |
| VLESS + Vision + REALITY | 偷取大厂 TLS 证书 | 当前最稳定 |
TLS 伪装协议演进
- shadow-tls:偷白名单域名证书,仅支持 TLS 1.3,不处理 TLS in TLS 特征
- restls:支持 TLS 1.2/1.3,处理 TLS in TLS 特征
- REALITY:使用 ECDHE 算法,即使客户端配置泄露也不影响数据安全。ShadowTLS 使用对称 PSK,配置泄露可能导致流量解密
- anytls:消除 TLS in TLS 特征,支持自定义填充包数量和长度
XTLS 核心技术
- XTLS splice:将内层 TLS 数据直接嵌入外层 TLS 流,减少重复加解密,降低 CPU 开销
- VISION:模拟时延与消息交换顺序,抹平 多层TLS 握手的不自然时序特征
- REALITY:在 TLS 握手阶段返回真网站的证书,使连接与普通 HTTPS 访问外观一致
- XHTTP:在应用层进一步伪装,上行拆分为多个 POST 请求,下行伪装为流式下载或 SSE,消除"稳定长时间加密流"的特征
协议安全评估
- SS 节点搭建后次日即可能被封 IP
- VMess+WS 易被封端口(非封 IP)
- VLESS+Vision 目前稳定,需关注域名是否被阻断
- VLESS+Vision+REALITY 堪称最稳方案
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"
}
}
}
客户端软件
- mihomo / clash verge — Clash 系客户端
- v2rayN — Windows 客户端
- v2raya — 透明代理
- hiddify-app — sing-box 前端
透明网关
在网关上运行 sing-box,其他机器将网关指向该机器即可智能分流。注意:
- 其他机器的 DNS 必须是公网 DNS
- 或配置特定入站端口接管 DNS 请求
Nginx 代理配置
proxy_set_header Host
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
$proxy_host:upstream 服务器的 IP/域名(默认值)$host:客户端请求头中的 Host,缺失时取虚拟主机名(推荐)$http_host:客户端请求头中的 Host,缺失时为空
推荐使用 $host 避免 Host 头部丢失的情况。
X-Forwarded-For
X-Forwarded-For: client, proxy1, proxy2
每经过一层代理,将请求来源 IP 追加到右侧。最左边的 IP 是原始客户端。该字段易被伪造,应谨慎使用。
工具与参考
- Cloudflare 优选 IP:
CloudflareSpeedTest、better-cloudflare-ip - CF 中转 IP 获取:
zip.baipiao.eu.org、电报@cf_push - IP 纯净度查询:
scamalytics.com - 在线测速:
speedtest.net - FOFA 搜索 CF IP:
server="cloudflare" && country="US" && port="443"