4.3 KiB
4.3 KiB
VPS流量转发架构说明
总览
这套架构基于Xray+Nginx SNI分流实现,完全基于443端口HTTPS流量伪装,实现三个核心功能:
- 反向代理内网服务到公网(无需公网IPv6/端口映射)
- 异地多VPS链路中转代理(mihomo客户端接入)
- 统一公网入口流量管理(所有流量走443端口,无额外端口暴露)
设备清单说明
| 设备 | IP/域名 | 说明 |
|---|---|---|
| 北京VPS | salmonstill.cn |
公网入口节点,Nginx+Xray服务部署在这里 |
| 东京VPS | tokyo.salmonstill.cn |
代理出口节点,Xray服务部署在这里 |
| 旁路由 | 192.168.1.199 |
内网反向代理节点,Xray桥接服务部署在这里 |
| NAS | 192.168.1.188 |
内网存储服务,部署了思源笔记、绿联云管理界面 |
| Windows台式机 | 192.168.1.177 |
内网办公设备,提供WSL SSH服务 |
核心组件说明
1. 北京VPS(公网入口节点)
Nginx Stream SNI分流层
配置文件:beijing-vps-stream.conf
根据SSL握手阶段的ServerName字段,将不同域名的流量转发到不同后端服务:
| 域名 | 后端服务 | 作用 |
|---|---|---|
www.apple.com |
Xray 9443端口 | 旁路由反向代理隧道 |
www.microsoft.com |
Xray 9444端口 | Mihomo客户端代理入口 |
drive.salmonstill.cn |
38653端口 | 绿联云NAS服务直接转发 |
| 其他域名 | Nginx Proxy Manager 8443端口 | 常规Web服务管理 |
Xray服务层
配置文件:beijing-vps-config.json
包含两个核心入站和一个出站:
- interconn入站(9443端口):VLESS+Reality协议,接收旁路由的反向代理桥接连接
- mihomo_in入站(9444端口):VLESS+Reality协议,接收外部Mihomo客户端的代理连接
- to_tokyo出站:VLESS+Reality协议,将代理流量转发到东京VPS出口
2. 旁路由(内网反向代理节点)
配置文件:旁路由-config.json
基于Xray反向代理桥接模式实现内网服务穿透:
- bridge桥接组件:和北京VPS的portal组件建立永久隧道,将公网过来的反向代理流量转发到内网
- 路由规则根据端口自动转发到对应内网服务:
端口 内网目标 服务 38653 192.168.1.188:9443 NAS管理界面 38654 192.168.1.188:5005 思源笔记 38655 192.168.1.177:22 WSL SSH服务 39132 127.0.0.1:39132 Minecraft游戏服务
3. 东京VPS(代理出口节点)
配置文件:tokyo-vps-config.json
极简配置的Xray出口节点:
- 入站:VLESS+Reality协议,接收北京VPS转发的代理请求
- 出站:直接freedom出口访问国际网络
流量路径说明
1. 内网服务反向代理访问路径(比如访问drive.salmonstill.cn)
用户 → 北京VPS 443端口 → Nginx匹配SNI `drive.salmonstill.cn` → 转发到38653端口 dokodemo-door入站
→ Xray路由转发到portal反向代理组件 → 走已经建立的隧道到旁路由bridge组件
→ 旁路由路由匹配端口38653 → 转发到内网NAS 192.168.1.188:9443 → 响应原路返回
2. Mihomo代理访问路径
Mihomo客户端 → 北京VPS 443端口 → Nginx匹配SNI `www.microsoft.com` → 转发到9444端口 mihomo_in入站
→ Xray路由转发到to_tokyo出站 → 加密传输到东京VPS 443端口 → 东京Xray入站接收请求
→ 直接访问国际网络 → 响应原路返回
架构优势
- 极致伪装:所有流量都走443端口HTTPS,不同流量通过SNI区分,完全和正常网站访问一致,无特征被封
- 零额外端口暴露:除了443端口没有任何公网开放端口,安全性拉满
- 高可用性:反向代理隧道永久在线,内网服务无需公网IP/端口映射即可访问
- 性能损耗低:Xray Reality协议性能优异,中转延迟增加<10ms
- 易扩展:新增内网服务只需要在旁路由添加对应的路由规则即可,无需修改公网配置
配置要点
- Reality公私钥配对:客户端的publicKey必须和对应服务端的privateKey严格匹配
- SNI一致性:客户端请求的ServerName必须和Nginx分流规则以及Xray Reality配置的serverNames完全一致
- 端口映射:Nginx分流的后端端口必须和Xray入站监听端口严格对应