diff --git a/VPS流量转发架构说明.md b/VPS流量转发架构说明.md index 3bb731f..6351098 100644 --- a/VPS流量转发架构说明.md +++ b/VPS流量转发架构说明.md @@ -1,86 +1,508 @@ # VPS流量转发架构说明 + +--- + ## 总览 -这套架构基于Xray+Nginx SNI分流实现,完全基于443端口HTTPS流量伪装,实现三个核心功能: -1. 反向代理内网服务到公网(无需公网IPv6/端口映射) -2. 异地多VPS链路中转代理(mihomo客户端接入) -3. 统一公网入口流量管理(所有流量走443端口,无额外端口暴露) + +这套架构基于 **Xray + Nginx SNI 分流 + Mihomo 透明代理 + WireGuard**,实现: + +1. **反向代理内网服务到公网**(无需公网 IPv6/端口映射) +2. **异地多 VPS 链路中转代理**(Mihomo 客户端接入 → 东京出口) +3. **统一公网入口流量管理**(所有流量走 443 端口,无额外端口暴露) +4. **qBittorrent 透明代理 + 入站端口转发**(NAS PT 下载走北京 VPS 出口,支持 BT 入站连接) +5. **Minecraft 基岩版 UDP 转发**(独立 WireGuard 隧道 + socat 方案) --- -## 设备清单说明 -| 设备 | 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服务 | + +## 设备清单 + +| 设备 | IP / 域名 | 系统 / 型号 | 角色 | +|---|---|---|---| +| **北京 VPS** | `salmonstill.cn` / `49.232.242.90` | Ubuntu 22.04 | 公网入口节点,Nginx + Xray + socat + WireGuard | +| **东京 VPS** | `tokyo.salmonstill.cn` / `43.165.178.10` | - | 代理出口节点,Xray Reality 出站 | +| **旁路由** | `192.168.1.199` / WG: `10.0.0.2` | ImmortalWrt 24.10 (GL-MT2500) | 内网反向代理 + 透明代理核心 | +| **NAS** | `192.168.1.188` | 绿联云 UGOS | 内网存储服务(思源笔记、绿联云管理) | +| **qBittorrent** | `192.168.1.200` (macvlan) | Docker (linuxserver/qbittorrent) | PT 下载专用,独立 IP | +| **Windows 台式机** | `192.168.1.177` | Windows + WSL | 内网办公设备,SSH 服务 | --- + ## 核心组件说明 -### 1. 北京VPS(公网入口节点) -#### Nginx Stream SNI分流层 -配置文件:`beijing-vps-stream.conf` -根据SSL握手阶段的ServerName字段,将不同域名的流量转发到不同后端服务: -| 域名 | 后端服务 | 作用 | + +### 1. 北京 VPS(公网入口节点) + +#### 1.1 Nginx Stream SNI 分流层 + +**配置文件**: `beijing-vps-stream.conf` + +Nginx stream 模块监听 `443/tcp`(IPv4 + IPv6),通过 `ssl_preread` 在 SSL 握手阶段提取 ClientHello 中的 SNI 字段,按域名分流到不同后端: + +| SNI 域名 | 后端 | 端口 | 用途 | +|---|---|---|---| +| `www.apple.com` | upstream `xray` | :9443 | 旁路由反向代理隧道 | +| `www.microsoft.com` | upstream `mihomo` | :9444 | Mihomo 客户端代理入口 → 东京出口 | +| `news.apple.com` | upstream `xray_lan` | :9445 | 旁路由 Mihomo 北京直连代理 | +| `drive.salmonstill.cn` | upstream `nas` | :38653 | 绿联云 NAS 服务直接转发 | +| 其他域名 | upstream `npm` | :8443 | Nginx Proxy Manager 常规 Web 管理 | + +#### 1.2 Xray 服务层 + +**配置文件**: `xray-北京vps-config.json` + +**入站(共 15 个)**: + +**Reality 入站(3 个)** — 均监听 `127.0.0.1`,由 Nginx 转发过来: + +| Tag | 端口 | SNI | Reality target | 用途 | +|---|---|---|---|---| +| `interconn` | 9443 | `www.apple.com` | `www.apple.com:443` | 接收旁路由反向代理桥接 | +| `mihomo_in` | 9444 | `www.microsoft.com` | `www.microsoft.com:443` | 接收外部 Mihomo 代理流量 | +| `proxy_from_lan` | 9445 | `news.apple.com` | `www.apple.com:443` | 接收旁路由直连代理流量 | + +**dokodemo-door 入站(11 个)** — 监听 `0.0.0.0`,反向代理内网服务: + +| Tag | 端口 | 路由 | |---|---|---| -| `www.apple.com` | Xray 9443端口 | 旁路由反向代理隧道 | -| `www.microsoft.com` | Xray 9444端口 | Mihomo客户端代理入口 | -| `drive.salmonstill.cn` | 38653端口 | 绿联云NAS服务直接转发 | -| 其他域名 | Nginx Proxy Manager 8443端口 | 常规Web服务管理 | +| `external` | 38653 | → portal → NAS `1.188:9443` | +| `external_siyuan` | 38654 | → portal → NAS `1.188:5005` | +| `external_minecraft` | 39132 | → portal → 旁路由 `127.0.0.1:39132` | +| `external_wsl` | 38655 | → portal → Windows `1.177:22` | +| `external_nas_ssh` | 38656 | → portal → NAS `1.188:22` | +| `external_router_ssh` | 38657 | → portal → 旁路由 `1.199:22` | +| `external_qbit` | 51413 | → portal → qBittorrent `1.200:51413` | +| `external_router_web` | 39766 | → portal → 旁路由 `1.199:80` | +| `external_tmp` | 8501 | → portal → Windows `1.177:8501` | +| `external_3000` | 3000 | → portal → NAS `1.188:3000` | +| `external_222` | 222 | → portal → NAS `1.188:222` | -#### Xray服务层 -配置文件:`beijing-vps-config.json` -包含两个核心入站和一个出站: -- **interconn入站(9443端口)**:VLESS+Reality协议,接收旁路由的反向代理桥接连接 -- **mihomo_in入站(9444端口)**:VLESS+Reality协议,接收外部Mihomo客户端的代理连接 -- **to_tokyo出站**:VLESS+Reality协议,将代理流量转发到东京VPS出口 +**Mixed 入站(1 个)**: + +| Tag | 端口 | 用途 | +|---|---|---| +| `proxy_in` | 10809 | SOCKS5/HTTP 混合代理(→ 东京出口) | + +**组件 - Portal**: +```json +"reverse": { + "portals": [ + { "tag": "portal", "domain": "reverse-proxy.xray.internal" } + ] +} +``` +与旁路由 Bridge 建立永久反向隧道,所有 `external_*` 入站的流量通过 portal 送入隧道。 + +**出站(2 个)**: + +| Tag | 协议 | 用途 | +|---|---|---| +| `direct` | freedom | 北京 VPS 直连出网 | +| `to_tokyo` | VLESS+Reality → `us.salmonstill.cn:443` | 转发到东京 VPS 出口 | + +**路由规则**: +- 所有 `external_*` 入站 → `portal`(送入反向隧道) +- `interconn` → `portal`(隧道本身维持) +- `mihomo_in` + `proxy_in` → `to_tokyo`(到东京出口) +- `proxy_from_lan` → `direct`(北京直连) --- -### 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游戏服务 | + +### 2. 东京 VPS(代理出口节点) + +**配置文件**: `tokyo-vps-config.json` + +极简配置: + +```json +inbounds: [{ + port: 9443, + protocol: "vless", + streamSettings: { security: "reality", serverNames: ["www.microsoft.com"] } +}] +outbounds: [{ protocol: "freedom", tag: "direct" }] +``` + +**Nginx Stream 层** (`东京-vps-stream.conf`): +``` +www.microsoft.com → Xray :9443 +default → NPM :8443 +``` + +- 入站:VLESS+Reality,监听 `127.0.0.1:9443`,SNI=`www.microsoft.com` +- 出站:freedom 自由网络出口 +- **仅做流量出口转发,无其他逻辑** --- -### 3. 东京VPS(代理出口节点) -配置文件:`tokyo-vps-config.json` -极简配置的Xray出口节点: -- 入站:VLESS+Reality协议,接收北京VPS转发的代理请求 -- 出站:直接freedom出口访问国际网络 + +### 3. 旁路由(内网核心枢纽) + +#### 3.1 Xray 反向代理桥接 + +**配置文件**: `xray-旁路由-config.json` + +**组件 — Bridge**: +```json +"reverse": { + "bridges": [{ "tag": "bridge", "domain": "reverse-proxy.xray.internal" }] +} +``` +与北京 VPS 的 Portal 建立永久 TCP 隧道。来自公网的请求通过该隧道进入内网。 + +**入站(1 个)**: + +| Tag | 端口 | 协议 | +|---|---|---| +| `socks-lan` | 1080 | SOCKS5(备用) | + +**出站(12 个)** — 按端口/服务映射内网目标: + +| Tag | 目标 | 用途 | +|---|---|---| +| `to_nas` | `192.168.1.188:9443` | NAS 管理界面 | +| `to_siyuan` | `192.168.1.188:5005` | 思源笔记 | +| `to_wsl` | `192.168.1.177:22` | WSL SSH | +| `to_nas_ssh` | `192.168.1.188:22` | NAS SSH | +| `to_router_ssh` | `192.168.1.199:22` | 旁路由 SSH | +| `to_router_web` | `192.168.1.199:80` | 旁路由 Web 管理 | +| `to_minecraft` | `127.0.0.1:39132` | Minecraft 服务 | +| `to_tmp` | `192.168.1.177:8501` | 临时服务 | +| `to_3000` | `192.168.1.188:3000` | Web 服务 | +| `to_222` | `192.168.1.188:222` | 备用服务 | +| `to_qbit` | `192.168.1.200:51413` | qBittorrent 入站 | +| `interconn` | VLESS+Reality → `salmonstill.cn:443` (SNI=`www.apple.com`) | 与北京 VPS 的隧道连接 | +| `to_beijing_direct` | VLESS+Reality → `salmonstill.cn:443` (SNI=`news.apple.com`) | 北京直连代理 | +| `direct` | freedom | 直连 | + +**路由规则**(从 bridge 入站的流量按端口匹配): +- 38653 → `to_nas` +- 38654 → `to_siyuan` +- 38655 → `to_wsl` +- 38656 → `to_nas_ssh` +- 38657 → `to_router_ssh` +- 8501 → `to_tmp` +- 39766 → `to_router_web` +- 3000 → `to_3000` +- 222 → `to_222` +- 39132 → `to_minecraft` +- 51413 → `to_qbit` +- 默认 → `to_nas` +- socks-lan 入站 → `to_beijing_direct` + +#### 3.2 Mihomo TPROXY 透明代理 + +**配置文件**: `旁路由的mihomo config.yaml` + +专为 qBittorrent PT 流量设计的透明代理方案。 + +**TPROXY 端口**: `7893` + +**代理节点(2 个)**: +- `Xray-Real` — VLESS+Reality,SNI=`www.microsoft.com`,经北京到东京出口 +- `Beijing-Direct` — VLESS+Reality,SNI=`news.apple.com`,北京直连(`skip-cert-verify: true` — 因 Reality 返回的是 target `www.apple.com` 的证书) + +**策略组(11 个)**: +- 国内 → 直连 +- 国外 → `[Xray-Real, 直连]` +- Steam / Microsoft / AI / Stream Media / GitHub / Crypto → 按规则选 +- **PT-BT → `[Beijing-Direct, 直连]`**(核心策略) + +**关键路由规则**: +``` +SRC-IP-CIDR,192.168.1.200/32,PT-BT,no-resolve ← qBittorrent 全部走 PT-BT +DOMAIN-SUFFIX,salmonstill.cn,直连 +DOMAIN-SUFFIX,volces.com,直连 +DOMAIN-KEYWORD,raylink,直连 +IP-CIDR,49.232.242.90/32,直连 ← 北京 VPS 防死循环 +IP-CIDR,43.165.178.10/32,直连 ← 东京 VPS 防死循环 +``` + +**nftables TPROXY 劫持** (`/etc/nftables.d/50-mihomo-tproxy.nft`): +``` +ip saddr 192.168.1.200 meta mark set 1 tproxy to :7893 accept +``` +- 仅劫持来源 `192.168.1.200` 的流量 +- 排除本地/私有地址和 VPS IP(防死循环) + +**策略路由** (`/etc/rc.local`): +``` +ip rule add fwmark 1 table 100 +ip route add local 0.0.0.0/0 dev lo table 100 +``` + +**额外监听器**: +- `:7891` — 全局代理(强制走 Xray-Real → 东京出口) +- `:7892` — 强制直连 --- -## 流量路径说明 -### 1. 内网服务反向代理访问路径(比如访问drive.salmonstill.cn) + +### 4. qBittorrent PT 下载节点 + +#### 4.1 网络架构 + ``` -用户 → 北京VPS 443端口 → Nginx匹配SNI `drive.salmonstill.cn` → 转发到38653端口 dokodemo-door入站 -→ Xray路由转发到portal反向代理组件 → 走已经建立的隧道到旁路由bridge组件 -→ 旁路由路由匹配端口38653 → 转发到内网NAS 192.168.1.188:9443 → 响应原路返回 +qBittorrent (192.168.1.200, macvlan) + └── 网关: 192.168.1.199 (旁路由) ``` -### 2. Mihomo代理访问路径 +Docker macvlan 网络创建命令: +```bash +docker network create -d macvlan \ + --subnet=192.168.1.0/24 \ + --gateway=192.168.1.199 \ + --ip-range=192.168.1.200/32 \ + -o parent=eth0 \ + qbit_macvlan ``` -Mihomo客户端 → 北京VPS 443端口 → Nginx匹配SNI `www.microsoft.com` → 转发到9444端口 mihomo_in入站 -→ Xray路由转发到to_tokyo出站 → 加密传输到东京VPS 443端口 → 东京Xray入站接收请求 -→ 直接访问国际网络 → 响应原路返回 + +#### 4.2 流量路径 + +**出站(透明代理)**: +``` +qBittorrent → nftables TPROXY劫持 → Mihomo :7893 + → SRC-IP-CIDR 匹配 → PT-BT 策略组 → Beijing-Direct + → VLESS+Reality (SNI=news.apple.com) → 北京VPS :443 + → Nginx 分流 → proxy_from_lan :9445 → direct → 互联网 +``` + +**入站(端口转发)**: +``` +BT Peer → 北京VPS :51413 → external_qbit → portal + → 反向隧道 → bridge → to_qbit → 192.168.1.200:51413 +``` + +#### 4.3 qBittorrent 设置 + +| 设置 | 值 | +|---|---| +| 监听端口 | 51413 | +| UPnP/NAT-PMP | 禁用 | +| SOCKS5 代理 | 清空(不使用) | +| 连接协议 | **仅 TCP(关闭 μTP)** | +| DHT | 可选(建议开) | +| PEX | 可选(建议开) | + +> μTP(UDP) 必须关闭 — Xray portal 反向代理不支持 UDP。 + +#### 4.4 定时做种调度(crontab) + +```cron +0 1 * * * curl -s -X POST "http://192.168.1.200:8888/api/v2/torrents/start" --data "hashes=all" +0 7 * * * curl -s -X POST "http://192.168.1.200:8888/api/v2/torrents/stop" --data "hashes=all" +``` + +夜间 01:00-07:00 做种,白天暂停节省带宽。 + +--- + +### 5. Minecraft 基岩版 UDP 转发 + +**独立于 Xray 体系的另一套方案**,使用 WireGuard + socat 实现 UDP 转发。 + +#### 5.1 架构 + +``` +公网玩家 UDP :19132 → 北京VPS socat → WireGuard 隧道 + → 旁路由 10.0.0.2 → 端口转发 + SNAT → NAS 192.168.1.188:19132 + → Docker 容器 (itzg/minecraft-bedrock-server, host 网络) +``` + +#### 5.2 北京 VPS 配置 + +**WireGuard** (`/etc/wireguard/wg0.conf`): +``` +[Interface] +Address = 10.0.0.1/24 +ListenPort = 51820 +PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE + +[Peer] +PublicKey = 9jPlaUhx2Dc+C5ZqJx6Iu8GtNMig3cFIoqfHg8PZbCA= +AllowedIPs = 10.0.0.2/32 +PersistentKeepalive = 25 +``` + +**socat systemd service** (`/etc/systemd/system/mc-forward.service`): +``` +ExecStart=/usr/bin/socat UDP4-LISTEN:19132,fork,reuseaddr UDP4:10.0.0.2:19132 +``` + +**防火墙**: +``` +ufw allow 51820/udp # WireGuard +ufw allow 19132/udp # Minecraft +``` + +#### 5.3 旁路由配置 + +**WireGuard 接口**: +- IP: `10.0.0.2/24` +- Peer 端点: `salmonstill.cn:51820` +- AllowedIPs: `0.0.0.0/0`(**必须**,否则丢弃公网来源包) +- 防火墙区域: `wan` + +**端口转发**:UDP `wan:19132` → `lan:192.168.1.188:19132` + +**SNAT 规则**:目标 `1.188:19132` UDP → 源 IP 重写为 `192.168.1.199` +> 确保 NAS 回包发给旁路由而非主路由,避免非对称路由问题。 + +#### 5.4 NAS Docker 配置 + +```yaml +services: + bedrock: + image: itzg/minecraft-bedrock-server:2026.2.1 + container_name: mc-bedrock + network_mode: host + environment: + EULA: "TRUE" + VERSION: "1.26.14.1" + OPS: "2535472561115036" + volumes: + - /volume2/ProgramsV2/minecraft:/data + restart: unless-stopped ``` --- + +### 6. macOS 客户端配置 + +**配置文件**: `mac 的mihomo config.yaml` + +备用客户端配置,与旁路由的 Mihomo 共享相同架构理念: + +- 混合端口: 7890 +- 监听器: 7891(全局代理→东京出口)、7892(强制直连) +- 单节点: `Xray-Real` (VLESS+Reality, SNI=`www.microsoft.com`) +- 完整 rule-providers 规则集(广告、国内、GFW、流媒体、AI、GitHub、Steam 等) +- `subscribe.yaml` — 与 Mac 配置结构相同,作为通用订阅配置模板 +- `subscribe-7891-only.yaml` — 精简版,全局走 7891 代理代理,适合快速切换 + +--- + +## 流量路径总览 + +### 路径 1:内网服务反向代理访问 +``` +用户 → salmonstill.cn:443 → Nginx SNI 匹配 → dokodemo-door 入站 + → Xray portal → 反向隧道 → 旁路由 bridge + → 按端口匹配出站 → 内网目标 → 原路返回 +``` + +### 路径 2:代理翻墙(东京出口) +``` +Mihomo 客户端 → salmonstill.cn:443 → Nginx SNI `www.microsoft.com` + → mihomo_in :9444 → to_tokyo → 东京 VPS → freedom → 互联网 +``` + +### 路径 3:北京直连代理(qBittorrent) +``` +qBittorrent → nftables TPROXY → Mihomo :7893 + → PT-BT → Beijing-Direct → salmonstill.cn:443 + → Nginx SNI `news.apple.com` → proxy_from_lan :9445 → direct → 互联网 +``` + +### 路径 4:BT 入站 +``` +BT Peer → salmonstill.cn:51413 → external_qbit → portal + → 反向隧道 → bridge → to_qbit → 192.168.1.200:51413 +``` + +### 路径 5:Minecraft UDP +``` +公网玩家 → salmonstill.cn:19132 → socat → WireGuard 隧道 + → 旁路由 10.0.0.2 → 端口转发 + SNAT → NAS :19132 → Docker 容器 +``` + +--- + +## 关键配置要点 + +### Reality 密钥体系 + +| 位置 | 用途 | Public Key | Private Key | +|---|---|---|---| +| **北京 VPS**(3个入站共用) | interconn / mihomo_in / proxy_from_lan | `62y5gDjPrdeuePGl-D2IW4Cw9Kb8_bSBBTmArvL7Nhs`(客户端用)| `GGT9LfN_2JdQG68cwrULgUK-adfT6wIokLzWjaB0fXs` | +| **东京 VPS** | to_tokyo 出口 | 客户端 `to_tokyo` 配置中的 `password` | `iBlu3eH1VLf1S5Qw87m_1w0TGYUktDwHAzgpQ2aKuGI` | + +> Reality 客户端必须使用 `public-key`,服务端使用 `privateKey`,且 `serverNames` 必须与 Nginx 分流 SNI 严格一致。 + +### 防死循环 IP +以下 IP 在旁路由的 Mihomo 规则中必须直连: +- `49.232.242.90` — 北京 VPS +- `43.165.178.10` — 东京 VPS + +### skip-cert-verify +`Beijing-Direct` 节点必须设置 `skip-cert-verify: true`,因为 Reality 返回的是 target(`www.apple.com`)的证书,但 SNI 是 `news.apple.com`,TLS 的 SAN 校验会失败。 + +--- + +## 文件清单 + +| 文件 | 目标设备 | 部署路径 | +|---|---|---| +| `beijing-vps-stream.conf` | 北京 VPS | `/etc/nginx/stream.conf.d/` | +| `xray-北京vps-config.json` | 北京 VPS | `/usr/local/etc/xray/config.json` | +| `东京-vps-stream.conf` | 东京 VPS | `/etc/nginx/stream.conf.d/` | +| `tokyo-vps-config.json` | 东京 VPS | `/usr/local/etc/xray/config.json` | +| `旁路由的mihomo config.yaml` | 旁路由 | `/opt/mihomo/config.yaml` | +| `xray-旁路由-config.json` | 旁路由 | `/etc/xray/config.json` | +| `mac 的mihomo config.yaml` | macOS | 本地运行 | +| `subscribe.yaml` | 通用 | 订阅模板 | +| `subscribe-7891-only.yaml` | 通用 | 精简版模板 | +| 旁路由备份 `backup-*.tar.gz` | 旁路由 | ImmortalWrt 系统备份 | + +--- + ## 架构优势 -1. **极致伪装**:所有流量都走443端口HTTPS,不同流量通过SNI区分,完全和正常网站访问一致,无特征被封 -2. **零额外端口暴露**:除了443端口没有任何公网开放端口,安全性拉满 -3. **高可用性**:反向代理隧道永久在线,内网服务无需公网IP/端口映射即可访问 -4. **性能损耗低**:Xray Reality协议性能优异,中转延迟增加<10ms -5. **易扩展**:新增内网服务只需要在旁路由添加对应的路由规则即可,无需修改公网配置 + +1. **极致伪装**:所有流量走 443 端口 HTTPS,通过 SNI 区分,无特征被封 +2. **零额外端口暴露**:除 443 外无公网端口(Minecraft 19132 和 WireGuard 51820 除外) +3. **内网零暴露**:NAS/Windows/qBittorrent 无需公网 IP 和端口映射 +4. **高可用隧道**:Xray portal/bridge 反向代理永久在线 +5. **低延迟**:Xray Reality 协议性能优异,中转延迟增加 < 10ms +6. **易扩展**:新增内网服务只需在旁路由添加路由规则,无需改公网配置 --- -## 配置要点 -1. Reality公私钥配对:客户端的publicKey必须和对应服务端的privateKey严格匹配 -2. SNI一致性:客户端请求的ServerName必须和Nginx分流规则以及Xray Reality配置的serverNames完全一致 -3. 端口映射:Nginx分流的后端端口必须和Xray入站监听端口严格对应 + +## 部署顺序(标准流程) + +``` +1. 腾讯云防火墙开放所需端口(443, 51413/tcp, 51820/udp, 19132/udp) +2. 北京 VPS: 部署 Nginx stream 配置 → nginx -t && systemctl reload nginx +3. 北京 VPS: 部署 Xray 配置 → systemctl restart xray +4. 北京 VPS: 部署 WireGuard → wg-quick@wg0 +5. 北京 VPS: 部署 socat → systemctl start mc-forward +6. 东京 VPS: 部署 Nginx + Xray 配置 +7. 旁路由: 部署 Xray 配置 → /etc/init.d/xray restart +8. 旁路由: 部署 Mihomo 配置 → /etc/init.d/mihomo restart +9. 旁路由: 部署 nftables 规则 → fw4 reload +10. 旁路由: 配置 WireGuard 接口 + 端口转发 + SNAT(LuCI) +11. NAS: 创建 macvlan 网络 → 启动 qBittorrent 容器 +12. NAS: 启动 Minecraft 容器 +``` + +--- + +## 验证命令速查 + +```bash +# 北京 VPS 健康检查 +ss -tlnp | grep -E '944[345]|3865[3-7]|51413|10809' +systemctl status nginx xray wg-quick@wg0 mc-forward + +# 东京 VPS 健康检查 +ss -tlnp | grep 9443 +systemctl status nginx xray + +# 旁路由 +nft list chain inet mihomo_tproxy prerouting | grep 192.168 +ip rule show | grep "fwmark 1" +ss -tlnp | grep -E '789[0-3]|1080' +wg show + +# qBittorrent 连通性验证 +docker exec qbittorrent curl -s https://ip.sb # 应返回北京 VPS IP + +# Minecraft 连通性 +systemctl status mc-forward +tcpdump -i wg0 udp port 19132 -n +``` diff --git a/qbittorrent流量转发.md b/qbittorrent流量转发.md new file mode 100644 index 0000000..cb06c15 --- /dev/null +++ b/qbittorrent流量转发.md @@ -0,0 +1,426 @@ +# qBittorrent 透明代理 + BT 入站转发配置文档 + +## 架构总览 + +``` + 出站(透明代理) +qBittorrent(192.168.1.200) 互联网 + ↓ nftables TPROXY 劫持 ↑ + ↓ mihomo:7893 │ + ↓ SRC-IP-CIDR → PT-BT → Beijing-Direct │ + ↓ Reality(VLESS, SNI=news.apple.com) │ + ↓ 北京VPS:443 → Nginx分流 │ + ↓ proxy_from_lan:9445 → direct(freedom) ─────────────────┘ + + 入站(端口转发) +Peer → 北京VPS:51413 → external_qbit → portal + → bridge隧道 → 旁路由 → to_qbit → 192.168.1.200:51413 +``` + +--- + +## 设备清单 + +| 设备 | IP | 角色 | +|---|---|---| +| 北京VPS | `salmonstill.cn` / `49.232.242.90` | 公网出口 + 入站入口 | +| 旁路由 | `192.168.1.199` | TPROXY 透明代理 + Xray 桥接 | +| NAS | `192.168.1.188` | Docker 宿主机 | +| qBittorrent 容器 | `192.168.1.200` | macvlan 独立 IP,PT 专用 | + +--- + +## 第一部分:北京 VPS 配置 + +### 1.1 Nginx Stream SNI 分流 `beijing-vps-stream.conf` + +新增 `news.apple.com` SNI 映射(用于旁路由 Mihomo 直连代理): + +```nginx +stream { + map $ssl_preread_server_name $backend { + www.apple.com xray; # 旁路由反向代理隧道 + www.microsoft.com mihomo; # 外部客户端代理 → 东京出口 + news.apple.com xray_lan; # 旁路由 Mihomo 北京直连代理 + drive.salmonstill.cn nas; # 绿联云服务 + default npm; # Nginx Proxy Manager + } + upstream xray { server 127.0.0.1:9443; } + upstream mihomo { server 127.0.0.1:9444; } + upstream xray_lan { server 127.0.0.1:9445; } # 新增 + upstream nas { server 127.0.0.1:38653; } + upstream npm { server 127.0.0.1:8443; } + + server { + listen 443 reuseport; + listen [::]:443 reuseport; + ssl_preread on; + proxy_pass $backend; + } +} +``` + +### 1.2 Xray 配置 `xray-北京vps-config.json` + +#### 新增入站 `proxy_from_lan`(北京直连出口) + +```json +{ + "tag": "proxy_from_lan", + "listen": "127.0.0.1", + "port": 9445, + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "113e167a-a2be-4b46-9010-60020108626c", + "flow": "xtls-rprx-vision" + } + ], + "decryption": "none" + }, + "streamSettings": { + "network": "raw", + "security": "reality", + "realitySettings": { + "show": false, + "target": "www.apple.com:443", + "serverNames": ["news.apple.com"], + "privateKey": "GGT9LfN_2JdQG68cwrULgUK-adfT6wIokLzWjaB0fXs", + "shortIds": ["7c947a71b94f369e"] + } + } +} +``` + +> Reality 公私钥复用已有的 `interconn` 入站 keypair,`serverNames` 用新的 `news.apple.com` 与 Nginx 对应。 +> `target` 设为 `www.apple.com:443`,Reality 从此地址偷取真实 TLS 证书用于伪装。 + +#### 新增入站 `external_qbit`(BT 入站端口) + +```json +{ + "tag": "external_qbit", + "listen": "0.0.0.0", + "port": 51413, + "protocol": "dokodemo-door", + "settings": { + "address": "127.0.0.1", + "port": 51413, + "network": "tcp" + } +} +``` + +> 仅 TCP——Xray portal 反向代理对 UDP 支持不完善,BT 的 μTP(UDP) 走不了,需要在 qBittorrent 里关闭。 + +#### 新增路由规则 + +```json +{ "type": "field", "inboundTag": ["proxy_from_lan"], "outboundTag": "direct" }, +{ "type": "field", "inboundTag": ["external_qbit"], "outboundTag": "portal" } +``` + +### 1.3 腾讯云防火墙 + +新开端口: + +| 端口 | 协议 | 用途 | +|---|---|---| +| 51413 | TCP | BT 入站 | + +--- + +## 第二部分:旁路由 Mihomo 透明代理 + +### 2.1 配置 `旁路由的mihomo config.yaml` + +#### 关键设置 + +```yaml +# TPROXY 透明代理入口(替代 TUN 模式) +tproxy-port: 7893 +``` + +#### 北京直连代理节点 + +```yaml +proxies: + - name: Beijing-Direct + type: vless + server: salmonstill.cn + port: 443 + uuid: "113e167a-a2be-4b46-9010-60020108626c" + udp: true + flow: xtls-rprx-vision + packet-encoding: xudp + tls: true + servername: news.apple.com + skip-cert-verify: true # Reality 下必须跳过证书 SAN 校验 + client-fingerprint: chrome + reality-opts: + public-key: "62y5gDjPrdeuePGl-D2IW4C9wKb8_bSBBTmArvL7Nhs" + short-id: "7c947a71b94f369e" + network: tcp +``` + +> `skip-cert-verify: true` 必须加——Reality 返回的是 `www.apple.com` 的证书(来自 target),但 SNI 是 `news.apple.com`,Mihomo 的 TLS 验证会因为 SAN 不匹配而拒绝。 + +#### PT-BT 策略组 + +```yaml +proxy-groups: + - name: PT-BT + type: select + proxies: [Beijing-Direct, 直连] +``` + +#### qBittorrent 透明代理规则 + +```yaml +rules: + # 防死循环:北京 VPS 和东京 VPS 的 IP 必须直连 + - IP-CIDR,49.232.242.90/32,直连 + - IP-CIDR,43.165.178.10/32,直连 + # ... 其他防死循环规则 ... + - SRC-IP-CIDR,192.168.1.200/32,PT-BT,no-resolve # qBittorrent 全部流量走代理 +``` + +> `SRC-IP-CIDR` 匹配**来源 IP**,不是目的 IP。所有从 192.168.1.200 发出的流量都会被 PT-BT 策略组接管。 +> `no-resolve` 防止 DNS 解析阶段误触发。 + +--- + +## 第三部分:旁路由 nftables TPROXY 规则 + +### 3.1 规则文件 `/etc/nftables.d/50-mihomo-tproxy.nft` + +```nft +#!/usr/sbin/nft -f + +table inet mihomo_tproxy { + chain prerouting { + type filter hook prerouting priority mangle; policy accept; + + # 不劫持本地/私有地址 + ip daddr 127.0.0.0/8 return + ip daddr 10.0.0.0/8 return + ip daddr 172.16.0.0/12 return + ip daddr 192.168.0.0/16 return + ip daddr 224.0.0.0/4 return + + # 不劫持到北京/东京 VPS 的流量(防死循环) + ip daddr 49.232.242.90 return + ip daddr 43.165.178.10 return + + # 劫持 192.168.1.200 的全部流量到 TPROXY + ip saddr 192.168.1.200 meta mark set 1 tproxy to :7893 accept + } +} +``` + +> ImmortalWrt 使用 fw4(nftables),放在 `/etc/nftables.d/` 下会被自动加载。 + +### 3.2 策略路由 `/etc/rc.local` + +```bash +# 让被 fwmark=1 标记的包走本地回环(TPROXY 要求) +ip rule add fwmark 1 table 100 2>/dev/null +ip route add local 0.0.0.0/0 dev lo table 100 2>/dev/null + +# 加载 nftables 规则(如果 fw4 reload 没自动加载) +sleep 5 +nft add table inet mihomo_tproxy 2>/dev/null +nft -f /etc/nftables.d/50-mihomo-tproxy.nft + +exit 0 +``` + +### 3.3 验证 TPROXY + +```bash +# 确认 nftables 规则 +nft list chain inet mihomo_tproxy prerouting | grep 192.168 + +# 确认策略路由 +ip rule show | grep "fwmark 1" + +# 确认端口监听 +ss -tlnp | grep 7893 +``` + +--- + +## 第四部分:旁路由 Xray 51413 转发 + +### 4.1 配置 `xray-旁路由-config.json` + +#### 新增加出站 `to_qbit` + +```json +{ + "tag": "to_qbit", + "protocol": "freedom", + "settings": { + "redirect": "192.168.1.200:51413" + } +} +``` + +#### 新增路由规则 + +```json +{ + "type": "field", + "inboundTag": ["bridge"], + "port": "51413", + "outboundTag": "to_qbit" +} +``` + +> 放在 bridge 下——从北京 VPS 的 portal 通过反向隧道过来的 BT 入站流量,由 bridge 接收后按端口 51413 匹配到此规则,转发到 qBittorrent 容器。 + +--- + +## 第五部分:NAS qBittorrent Docker + +### 5.1 创建 macvlan 网络 + +```bash +docker network create -d macvlan \ + --subnet=192.168.1.0/24 \ + --gateway=192.168.1.199 \ + --ip-range=192.168.1.200/32 \ + -o parent=eth0 \ + qbit_macvlan +``` + +> `--gateway=192.168.1.199`:qBittorrent 的默认网关设为旁路由,确保流量经过 TPROXY。 +> `--ip-range=192.168.1.200/32`:固定 IP,对应 nftables 劫持规则。 + +### 5.2 启动容器 + +```bash +docker run -d \ + --name qbittorrent \ + --network qbit_macvlan \ + --ip 192.168.1.200 \ + -e WEBUI_PORT=8090 \ + -p 8090:8090 \ + -v /path/to/downloads:/downloads \ + lscr.io/linuxserver/qbittorrent:latest +``` + +### 5.3 qBittorrent 设置 + +| 设置项 | 值 | +|---|---| +| 监听端口 | `51413` | +| UPnP/NAT-PMP | **禁用** | +| SOCKS5 代理 | **清空(不使用)** | +| 连接协议 | **仅 TCP**(关闭 μTP) | +| DHT | 可选(建议开) | +| PEX | 可选(建议开) | + +> 关闭 μTP(UDP):Xray portal 反向代理不支持 UDP,BT 的 μTP 走 UDP 会导致入站失败。 + +### 5.4 定时做种调度(crontab) + +让 qBittorrent 只在夜间(01:00-07:00)做种,白天暂停以节省带宽: + +```bash +crontab -e +``` + +添加以下两行(在 NAS 或任意可访问 192.168.1.200 的设备上): + +``` +0 1 * * * curl -s -X POST "http://192.168.1.200:8888/api/v2/torrents/start" --data "hashes=all" +0 7 * * * curl -s -X POST "http://192.168.1.200:8888/api/v2/torrents/stop" --data "hashes=all" +``` + +| 时间 | 操作 | 含义 | +|---|---|---| +| 凌晨 01:00 | `/torrents/start` `hashes=all` | 启动全部种子开始做种 | +| 早上 07:00 | `/torrents/stop` `hashes=all` | 停止全部种子 | + +--- + +## 第六部分:部署顺序 + +``` +1. 腾讯云防火墙 → 开放 51413/tcp +2. scp beijing-vps-stream.conf → 北京VPS /etc/nginx/stream.conf.d/ +3. scp xray-北京vps-config.json → 北京VPS /usr/local/etc/xray/config.json +4. 北京VPS: nginx -t && systemctl reload nginx +5. 北京VPS: systemctl restart xray +6. scp 旁路由的mihomo config.yaml → 旁路由 /opt/mihomo/config.yaml +7. scp xray-旁路由-config.json → 旁路由 /etc/xray/config.json +8. 旁路由: 创建 nftables 规则文件 + rc.local 策略路由 +9. 旁路由: /etc/init.d/mihomo restart +10. 旁路由: /etc/init.d/xray restart +11. 旁路由: fw4 reload 或 nft -f /etc/nftables.d/50-mihomo-tproxy.nft +12. NAS: 创建 macvlan 网络 + 启动 qBittorrent 容器 +13. NAS: 配置 qBittorrent 监听端口 51413,关闭 μTP +``` + +--- + +## 第七部分:验证 + +### 7.1 TPROXY 透明代理出站 + +```bash +# 在 NAS 上执行,应返回北京 VPS 的公网 IP +docker exec qbittorrent curl https://ip.sb + +# 确认不是东京 VPS 的 IP +docker exec qbittorrent curl https://ifconfig.io +``` + +### 7.2 Mihomo 面板查看 + +浏览器打开 `http://192.168.1.199:9090` → 连接 → 应能看到大量通过 `Beijing-Direct` 的连接。 + +### 7.3 BT 入站验证 + +```bash +# 北京 VPS 上确认端口监听 +ss -tlnp | grep 51413 + +# 从外部测试端口可达 +nc -zv salmonstill.cn 51413 +``` + +### 7.4 端到端 BT 测试 + +下载一个热门 Ubuntu torrent 种子,观察: +- qBittorrent WebUI → 连接 → 应显示 DHT 节点数增长 +- 跟踪器页面 → 应显示 "Working" +- 下载速度应有上传来确认入站工作 + +--- + +## 第八部分:故障排查 + +| 现象 | 排查 | +|---|---| +| qBittorrent curl ip.sb 返回真实 IP | nftables 规则未生效,检查 `nft list chain inet mihomo_tproxy prerouting` | +| Beijing-Direct 连不上 | 确认 `servername: news.apple.com` + `skip-cert-verify: true` | +| 入站无上传 | 检查北京 VPS ufw/腾讯云安全组已放行 51413/tcp | +| xray 报错 `reverse-proxy.xray.internal` | portal/bridge 域名不匹配,两边必须一致 | +| 旁路由自身网络异常 | nftables 规则漏了 `ip daddr 192.168.0.0/16 return`,检查私有地址排除 | +| 下载有速度、无上传 | μTP 没关或 portal UDP 不支持,qBittorrent 设置仅 TCP | + +--- + +## 第九部分:文件清单 + +| 文件 | 位置 | 作用 | +|---|---|---| +| `beijing-vps-stream.conf` | 北京VPS `/etc/nginx/stream.conf.d/` | Nginx SNI分流(含 news.apple.com → 9445) | +| `xray-北京vps-config.json` | 北京VPS `/usr/local/etc/xray/config.json` | Xray 入站+路由(含 proxy_from_lan + external_qbit) | +| `旁路由的mihomo config.yaml` | 旁路由 `/opt/mihomo/config.yaml` | Mihomo TPROXY + Beijing-Direct + PT-BT 规则 | +| `xray-旁路由-config.json` | 旁路由 `/etc/xray/config.json` | Xray bridge + to_qbit(51413) + socks-lan(1080) | +| `/etc/nftables.d/50-mihomo-tproxy.nft` | 旁路由 | nftables TPROXY 劫持规则 | +| `/etc/rc.local` | 旁路由 | 策略路由 + nft 加载(持久化) | diff --git a/xray-北京vps-config.json b/xray-北京vps-config.json index 2c98bae..f638714 100644 --- a/xray-北京vps-config.json +++ b/xray-北京vps-config.json @@ -219,6 +219,17 @@ ] } } + }, + { + "tag": "external_qbit", + "listen": "0.0.0.0", + "port": 51413, + "protocol": "dokodemo-door", + "settings": { + "address": "127.0.0.1", + "port": 51413, + "network": "tcp" + } } ], "outbounds": [ @@ -330,6 +341,13 @@ ], "outboundTag": "portal" }, + { + "type": "field", + "inboundTag": [ + "external_qbit" + ], + "outboundTag": "portal" + }, { "type": "field", "inboundTag": [ diff --git a/xray-旁路由-config.json b/xray-旁路由-config.json index 4aa302b..9023dde 100644 --- a/xray-旁路由-config.json +++ b/xray-旁路由-config.json @@ -93,6 +93,13 @@ "redirect": "192.168.1.188:222" } }, + { + "tag": "to_qbit", + "protocol": "freedom", + "settings": { + "redirect": "192.168.1.200:51413" + } + }, { "tag": "interconn", "protocol": "vless", @@ -251,6 +258,14 @@ "port": "39132", "outboundTag": "to_minecraft" }, + { + "type": "field", + "inboundTag": [ + "bridge" + ], + "port": "51413", + "outboundTag": "to_qbit" + }, { "type": "field", "inboundTag": [ diff --git a/旁路由的mihomo config.yaml b/旁路由的mihomo config.yaml new file mode 100644 index 0000000..cff8e6c --- /dev/null +++ b/旁路由的mihomo config.yaml @@ -0,0 +1,335 @@ +# ======================== +# Clash-ALL 思路(单上游 Xray Reality 精简版) + 额外端口:7891 全局代理 + 7892 强制直连 +# ======================== + +mixed-port: 7890 +allow-lan: true +bind-address: '*' +mode: rule +log-level: info +external-controller: '127.0.0.1:9090' + +find-process-mode: off + +tproxy-port: 7893 + +dns: + enable: true + ipv6: false + prefer-h3: false + use-hosts: false + use-system-hosts: true + enhanced-mode: fake-ip + fake-ip-range: 198.18.0.1/16 + fake-ip-filter: + - geosite:private + - geosite:tracker + - geosite:cn + - geosite:apple@cn + - geosite:microsoft@cn + - geosite:microsoft + - '+.lan' + - '+.local' + - '+.volces.com' + - '+.salmonstill.cn' + - '+.raylink' # keyword 的话用这个兜底 + default-nameserver: + - 127.0.0.1 + - 223.5.5.5 + nameserver: + - https://9.9.9.9/dns-query + - https://149.112.112.112/dns-query + - https://94.140.14.14/dns-query + - https://94.140.15.15/dns-query + proxy-server-nameserver: + - https://dns.alidns.com/dns-query + - https://doh.pub/dns-query + direct-nameserver: + - https://dns.alidns.com/dns-query + - https://doh.pub/dns-query + respect-rules: false + +# ======================== +# 代理定义 +# ======================== +proxies: + - name: 直连 + type: direct + - name: 拒绝 + type: reject + + - name: Xray-Real + type: vless + server: 49.232.242.90 + port: 443 + uuid: "113e167a-a2be-4b46-9010-60020108626c" + udp: true + flow: xtls-rprx-vision + packet-encoding: xudp + tls: true + servername: www.microsoft.com + client-fingerprint: chrome + reality-opts: + public-key: "62y5gDjPrdeuePGl-D2IW4Cw9Kb8_bSBBTmArvL7Nhs" + short-id: "7c947a71b94f369e" + network: tcp + + - name: Beijing-Direct + type: vless + server: salmonstill.cn + port: 443 + uuid: "113e167a-a2be-4b46-9010-60020108626c" + udp: true + flow: xtls-rprx-vision + packet-encoding: xudp + tls: true + servername: news.apple.com + skip-cert-verify: true + client-fingerprint: chrome + reality-opts: + public-key: "62y5gDjPrdeuePGl-D2IW4Cw9Kb8_bSBBTmArvL7Nhs" + short-id: "7c947a71b94f369e" + network: tcp + +# ======================== +# 策略组 +# ======================== +proxy-groups: + - name: 国内 + type: select + proxies: [直连] + + - name: 国外 + type: select + proxies: [Xray-Real, 直连] + + - name: Steam-rule + type: select + proxies: [国内, 国外, 直连] + + - name: Microsoft-rule + type: select + proxies: [国内, 国外, 直连] + + - name: AI + type: select + proxies: [国外, 国内, 直连] + + - name: Stream Media + type: select + proxies: [国外, 国内, 直连] + + - name: GitHub + type: select + proxies: [国外, 国内, 直连] + + - name: Crypto + type: select + proxies: [国外, 国内, 直连] + + - name: Block + type: select + proxies: [直连, 拒绝] + + - name: 其他 + type: select + proxies: [国外, 国内, 直连, 拒绝] + + - name: PT-BT + type: select + proxies: [Beijing-Direct, 直连] + +# ======================== +# rule-providers +# ======================== +rule-providers: + Ads: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/category-ads-all.mrs + path: ./rule-providers/ads.mrs + proxy: 国外 + + Private_Domain: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/private.mrs + path: ./rule-providers/private_domain.mrs + proxy: 国外 + + Private_IP: + type: http + behavior: ipcidr + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/private.mrs + path: ./rule-providers/private_ip.mrs + proxy: 国外 + + China_Domain: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/cn.mrs + path: ./rule-providers/cn_domain.mrs + proxy: 国外 + + China_IP: + type: http + behavior: ipcidr + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/cn.mrs + path: ./rule-providers/cn_ip.mrs + proxy: 国外 + + Oracle: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/oracle.mrs + path: ./rule-providers/oracle.mrs + proxy: 国外 + + OpenAI: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/openai.mrs + path: ./rule-providers/openai.mrs + proxy: 国外 + + GitHub_Domain: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs + path: ./rule-providers/github.mrs + proxy: 国外 + + Netflix_Domain: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/netflix.mrs + path: ./rule-providers/netflix_domain.mrs + proxy: 国外 + + Netflix_IP: + type: http + behavior: ipcidr + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geoip/netflix.mrs + path: ./rule-providers/netflix_ip.mrs + proxy: 国外 + + Steam_CN: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/steam@cn.mrs + path: ./rule-providers/steam_cn.mrs + proxy: 国外 + + Steam: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/steam.mrs + path: ./rule-providers/steam.mrs + proxy: 国外 + + GFW: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/gfw.mrs + path: ./rule-providers/gfw.mrs + proxy: 国外 + + Geo_NoCN: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/geolocation-!cn.mrs + path: ./rule-providers/geo_nocn.mrs + proxy: 国外 + + Microsoft: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/microsoft.mrs + path: ./rule-providers/microsoft.mrs + proxy: 国外 + + Crypto: + type: http + behavior: domain + format: mrs + interval: 86400 + url: https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/category-cryptocurrency.mrs + path: ./rule-providers/crypto.mrs + proxy: 国外 + +# ======================== +# 多监听器部分 +# ======================== +listeners: + - name: global-mixed + type: mixed + port: 7891 + listen: 0.0.0.0 + udp: true + proxy: Xray-Real + + - name: direct-mixed + type: mixed + port: 7892 + listen: 0.0.0.0 + udp: true + proxy: 直连 + +# ======================== +# rules +# ======================== +rules: + - DOMAIN,vs18.bj2cu.u3.ucweb.com,拒绝 + - DOMAIN-SUFFIX,salmonstill.cn,直连 + - DOMAIN-SUFFIX,volces.com,直连 + - DOMAIN-KEYWORD,raylink,直连 + - IP-CIDR,49.232.242.90/32,直连 + - IP-CIDR,43.165.178.10/32,直连 + - RULE-SET,Ads,Block + - RULE-SET,Private_Domain,国内 + - RULE-SET,Private_IP,国内,no-resolve + - SRC-IP-CIDR,192.168.1.200/32,PT-BT,no-resolve + - RULE-SET,China_Domain,国内 + - RULE-SET,Oracle,国内 + - RULE-SET,China_IP,国内,no-resolve + - RULE-SET,OpenAI,AI + - RULE-SET,GitHub_Domain,GitHub + - RULE-SET,Netflix_Domain,Stream Media + - RULE-SET,Netflix_IP,Stream Media,no-resolve + - RULE-SET,Steam_CN,国内 + - RULE-SET,Steam,Steam-rule + - RULE-SET,Microsoft,Microsoft-rule + - RULE-SET,Crypto,Crypto + - RULE-SET,GFW,国外 + - RULE-SET,Geo_NoCN,国外 + - MATCH,其他 \ No newline at end of file