From 26f84bda60cb5e9ee9cc51198cef7ef7275bbf89 Mon Sep 17 00:00:00 2001 From: hellcat Date: Wed, 14 Oct 2026 10:20:51 +0800 Subject: [PATCH] Document accepted gateway domains, proxy boundaries and SSH verification --- docs/maintenance/GATEWAY_ADMIN_PROXY.md | 41 +++++++++++++++++++------ docs/maintenance/README.md | 1 + docs/maintenance/STATUS.md | 10 ++++++ 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/docs/maintenance/GATEWAY_ADMIN_PROXY.md b/docs/maintenance/GATEWAY_ADMIN_PROXY.md index eca1820..b21ed31 100644 --- a/docs/maintenance/GATEWAY_ADMIN_PROXY.md +++ b/docs/maintenance/GATEWAY_ADMIN_PROXY.md @@ -2,18 +2,25 @@ 用户指定日期:2026-10-13。范围为两套既有网关管理容器的新域名,以及白色机的新版/旧版域名区域映射和两机场主站入口。源码与配置生成工具在 `scripts/gateway-admin-proxy/`;跨项目域名映射的唯一登记正文在 CoDocs `20-基础设施/访问与反代.md`。 -## 当前阶段:配置准备,未完成上线验收 +## 当前状态:已部署并完成指定入口验收 -- 两条新管理 A 记录已在 Namecheap 保存:getway-fuc.gemcook.net、getway-dpl.gemcook.net 指向 gateway-01;原记录和 NS 保留。 -- 新 CF 账户可访问。tomshell.online、tomtojapan.online 的根 A 与泛域 CNAME 均指向白色机、橙云,本轮已读取页面确认。 -- 两个新区域的 Cloudflare Origin CA 证书均已签发,覆盖各自根域和一级泛域,有效至 2041-10-09。私钥在白色机独立目录生成,没有发送到 CF 或写入 Git。证书安装与 Full (strict) 复验尚未完成。 -- 映射/请求头逻辑通过 81 项真实 Nginx 的回环集成检查,没有访问线上源站。服务器部署、后台登录和旧入口回归尚未完成。 -- 旧 tomshell.com.de 的根证书已过期,旧泛域匹配用的是仅覆盖 umami 的证书。Hostinger 已可访问;用户批准的 `_acme-challenge` CNAME 已保存并经权威 DNS 确认,指向 `old-com-de.acme.tomshell.online`。限定一个区域、白色机 IPv4 的 CF DNS 编辑令牌尚未成功创建;不关闭证书校验替代。 +2026-10-13 完成 DNS、HTTPS、独立续期和浏览器验收;2026-10-14 完成日志隐私收尾及 SSH 核验。两机运维目录均为 `/opt/gateway-admin-proxy/provision`,已推送并检出运维提交 `8ed9e195b84019f39c3ee9d9999bfd03efed5062`(根仓库实现提交 `4ad89b196cc5f03486ad9feea39a40c988a5608a`)。最终文档另随根仓库提交,不改变此运维版本。 -后续每一阶段按实际结果替换本节,不把配置生成、DNS 保存或证书签发当成业务上线完成。 +- Namecheap 两条管理 A 指向 gateway-01,权威 DNS 与页面已确认;原邮件记录和 NS 保留。 +- 两个新 CF 区域的根域/泛域解析到白色机且橙云,Full (strict) 已保存复核。各自 CF Origin CA 证书已安装,根域和一级泛域有效至 2041-10-09;私钥只在白色机生成、保存。 +- gateway-01 两个管理源域使用隔离的公开 LE 证书;旧 tomshell.com.de 使用根域加一级泛域的公开 LE 证书,两者有效至 2027-01-11。旧 `fu.tomshell.com.de` 的过期入站证书指针已更新,上游与专用入口保留。 +- 已批准的 Hostinger ACME CNAME 与仅 tomshell.online DNS 编辑、仅白色机 IPv4 可用的 CF 令牌已配置。两套隔离续期 dry-run 通过;两个证书定时器和白色机官方 CF IP 同步定时器 active,信任列表含官方 22 段。 +- 两个新管理入口均使用原有效账号完成登录、设置页切换和退出,没有保存业务配置。临时凭据复制获得具体批准,服务器和本机临时副本均已删除。 +- dpl 主站浏览器确认 DP-LINK.NET 品牌及 API/静态资源;fuc 登录页确认“登录—福云”及资源。只重写 URL 域名,保留品牌文案。两个新区域均无 Cache Rule/缓存响应覆盖,管理响应 private/no-store、CF DYNAMIC;未新增 BIC/WAF 例外。 +- 真实 Nginx 回环检查 93 个断言通过;最终重载后管理登录页、两主站入口复验成功,两机 `nginx -t`、受管文件哈希通过。四个原网关容器的启动时间和重启计数与本轮开始前相同。 +- 白色机实际 SSH 登录成功,IPv4/IPv6 TCP 22 监听,SSH active;UFW inactive、INPUT ACCEPT。本轮没有修改 SSH、防火墙或安全组。 + +验收范围不含业务用户登录、购买/支付、全站操作、多地区或所有泛域子站;未重新执行订阅/节点全链路测试。截图与忽略的执行产物在 `codex/output/gateway-admin-domain-20261013/`。 ## 用户指定的边界 +2026-10-13 用户追加确认:gemcook.net 同时承担邮件业务,属于保护资源。此次仅新增两个 getway 子域 A;原 NS、MX、SPF、DKIM、DMARC 和邮件子域记录不变,不迁移 DNS 托管,不以网站根站配置覆盖邮件用途。用户已明确将 gemcook.net 根站延后,本轮完成指定的子域区域即可。DNS 保留/读取不代表实发邮件验收,任务没有发测试邮件。 + | 用途 | 源站标识 | 白色机入口标识 | | --- | --- | --- | | fuc 网关管理 | getway-fuc.gemcook.net | getway-fuc.tomshell.online | @@ -25,7 +32,9 @@ 主域名映射不会自行完成子域 DNS、证书或 Nginx 匹配。本次泛映射按同一前缀对应源站,拒绝不属于指定区域和多级子域的转发;多级主机需额外证书和登记。现有专用匹配优先保留作为兼容入口,不能把已有 TTC、Git、日语服务或旧网关入口送往错误上游。 -gemcook.net 根域本次 DNS 查询没有 A/AAAA,根反代配置不能据此声称有可访问的根站点。泛映射也不证明任意源站子域已经部署;逐实际入口验收。 +gemcook.net 根域本次 DNS 查询没有 A/AAAA,根站按用户确认延期。diaodu.us 根域和 nasa.diaodu.us 在 source Nginx 中没有对应 HTTPS vhost/证书,返回默认 Gitea 单主机证书,严格代理因名称不匹配返回 502;用户明确本轮不新建这两个源站。不能关闭 TLS 校验、猜 IP 或指向 master/Gitea 代替。泛映射不证明任意源站子域已经部署;逐实际入口验收。 + +旧专用入口的有限回归:fu、dpl、Gitea、TTC 返回 200;master 根路径返回既有 Laravel 404,未验收其管理路由。这些专用入口优先于新通用泛映射;原证书和其他配置不一并替换。 本地访问只经登记的白色机入口,包含资源、重定向、API 和 WebSocket。没有通过源站 IP、Host 覆盖、hosts 或另一机器代抓取补本地验证。 @@ -35,8 +44,12 @@ gemcook.net 根域本次 DNS 查询没有 A/AAAA,根反代配置不能据此 旧管理入口的私有路径在服务器运行时从既有容器配置提取,并与旧 vhost 比对,不写入 Git、CoDocs 或本文。源站只信任白色机传来的清洗后 X-Forwarded-For;直接请求的伪造标头不受信任。新增源域名证书使用独立 Certbot 目录和续期钩子,仅检查并重载宿主 Nginx,不运行原订阅网关的全局证书钩子。 +注意旧 SubSieve 管理账号:持久化 JSON 中的有效配置优先于 Docker ADMIN_USER/ADMIN_PASS 环境变量。本轮首次按环境变量登录被拒,随后只读核对有效配置并以现有账号验收成功;没有重置账号。以后取配置沿实际加载顺序核对,不把环境变量当作唯一事实。fuc 的既有私有管理路径仍须保留在 URL 上,dpl 从根路径进入。 + 白色机新橙云 vhost 单独引入官方 CF IP 信任文件,再向上游发送清洗后的真实 IP。新代理保留严格上游证书校验、路径、查询参数、WebSocket;Origin/Referer 只在与当前请求主机一致时转换,跨站值保留,避免放宽 CSRF 判断。Cookie、重定向和正文资源域名按实际入口复核;不盲目移除 CSP、CORS 或其他安全标头。 +新生成 vhost 的访问日志只记失败状态、主机、上游状态和耗时,路径、查询参数、客户端 IP 不进入 `/var/log/nginx/gateway-admin-proxy.health.log`;错误日志为独立文件、crit 级别。原订阅过滤/安全日志和保留的旧专用 vhost 未批量调整,不能据此宣称全部历史日志都无敏感信息。 + Cloudflare Origin CA 只适用于两个保持橙云的代理区域。用户浏览器使用 CF 边缘的公开可信证书;关闭橙云后直连白色机会不受浏览器信任。旧 com.de 不依赖此证书,须用公开可信证书。源站 CA 到期日须登记,不能假称它由 Certbot 自动续期。 ## 隔离证书与运维入口 @@ -45,7 +58,7 @@ Cloudflare Origin CA 只适用于两个保持橙云的代理区域。用户浏 - 白色机:`install-origin-cert.py` 校验公开证书 SAN、有效期和服务器本地私钥公钥匹配,再安装两个 CF 源站证书;`white-proxy-cloudflare-ips.timer` 只更新新橙云站点引用的官方 IP 信任文件。 - 旧 com.de:`issue-white-legacy.sh` 使用隔离目录 `/etc/white-proxy-letsencrypt`;`legacy-dns-hook.py` 只接受旧根域/一级泛域的 ACME 挑战,仅写委托目标 TXT,确认权威 DNS 传播后再继续,清理只删除自身创建且内容未改变的 ID。`white-proxy-cert.timer` 每日检查。 - DNS 私有配置仅在白色机:`/etc/white-proxy-dns/config.json` 保存 zone_id/target,`cf-token` 保存令牌,均 root 所有、0600;Git 和普通文档不得保存令牌。CF 权限本身是整个 tomshell.online 区域 DNS 编辑,并非单 TXT 权限,另有白色机 IPv4 限制。用户于本轮明确批准创建与保存这一凭据。 -- 旧 com.de 证书续期依赖该 CNAME、CF 令牌和白色机出口 IP。变更这些资源先更新私有配置,再验证续期;不能删除其他 TXT、改变 NS 或创建无限制账户令牌。正式上线后必须执行隔离 `certbot renew --dry-run --no-directory-hooks` 验证自动续期。 +- 旧 com.de 证书续期依赖该 CNAME、CF 令牌和白色机出口 IP。变更这些资源先更新私有配置,再验证续期;不能删除其他 TXT、改变 NS 或创建无限制账户令牌。两套隔离续期已以 `certbot renew --dry-run --no-directory-hooks --no-random-sleep-on-renew` 验证,部署钩子只检查/重载 Nginx;挑战 TXT 已清理。证书服务超时分别 15/30 分钟,timer 自带错峰,Certbot 不再额外随机长等待。 ## Git 发布与回退 @@ -54,3 +67,13 @@ Cloudflare Origin CA 只适用于两个保持橙云的代理区域。用户浏 deploy.py 只管理列出的独立 Nginx 文件;原文件有精确备份与前后哈希,手工修改的管理文件或未被接管的同名文件会阻止覆盖。旧泛域配置只有在公开可信泛域证书到位并提供当前文件精确哈希时才撤回;保留原精确 master 匹配和其他专用配置。Nginx 检查/重载失败自动恢复本次文件并重新校验,不能操作原 Compose 的 down/update 或重启原容器。 回退时先核对当前哈希仍为本轮结果,按服务器私有备份仅恢复本轮文件。新证书账户、目录、定时器与旧实例隔离;撤销新域名入口不能撤销原订阅域名。回退或尚未完成的项目同任务同步 CoDocs、本文和 STATUS。 + +本次关键恢复点在两机 `/root/codex-backups/gateway-admin-proxy/`: + +- gateway HTTPS 初装:`20261013-121013-829807-gateway`;最终日志调整:`20261014-021439-027004-gateway`。 +- 白色机旧泛域撤回/旧 fu 证书更换前:`20261013-125258-241302-white`;最终日志调整:`20261014-021430-957452-white`。 +- `preflight-20261013/` 保留变更前配置哈希和容器启动记录。每个部署备份有 manifest.json、原文件/模式;目录 root 私有。最后恢复点只是前一阶段,完整撤销须选择对应初装/旧泛域阶段,不能盲目回退所有共享配置。 + +后续受管脚本更新:只提交本任务 → `git subtree split -q --prefix=scripts/gateway-admin-proxy --branch ops/gateway-admin-proxy` → 推送 main 与 ops 分支 → 使用已推送提交的 Git bundle fetch → 两机在干净运维目录检出明确 SHA → 执行 `python3 deploy.py gateway --stage https` / `python3 deploy.py white --stage https`。旧文件已接管后仍按 state.json 哈希阻止覆盖并行修改;首次接管须提供当前旧 master/fu 的精确哈希。不要修改 SSH/防火墙以解决 Web 反代问题。 + +域名前缀更换须同步 DNS、SAN 覆盖、Host/SNI、白色机登记及实际登录/资源验收。此处新主站/后台区域没有全区绕过缓存,不能把此前独立订阅区域的调优直接照搬;管理会话和 API 的 private/no-store 应继续验收。 diff --git a/docs/maintenance/README.md b/docs/maintenance/README.md index 99f5721..3194dd2 100644 --- a/docs/maintenance/README.md +++ b/docs/maintenance/README.md @@ -22,6 +22,7 @@ | STATUS.md | 最近验证基线、已知限制与待验收项目 | | CLOUD_FLARE_AUDIT.md | 两机场 Cloudflare 审查、已部署调优、域名轮换与回退及可选未实施项 | | NODE_ONBOARDING.md | 共享资源隔离、订阅网关与新增节点流程及待验收状态 | +| GATEWAY_ADMIN_PROXY.md | 两网关管理域名、白色机新旧区域反代、独立证书续期、恢复和验收边界 | 这些说明用于辅助 AI 接手,不代表 AI 会在聊天结束后自动持续运行。应用定时任务在服务器执行,AI 维护任务需要会话或明确配置的自动化来启动。 diff --git a/docs/maintenance/STATUS.md b/docs/maintenance/STATUS.md index cd0e435..e85df59 100644 --- a/docs/maintenance/STATUS.md +++ b/docs/maintenance/STATUS.md @@ -2,6 +2,16 @@ 文档核对日期:2026-10-11。以下区分本会话检查结果与用户验收确认,不承诺服务器一直保持此状态。 +## 2026-10-13/14 管理入口与白色机区域反代 + +指定的两网关管理源域名及白色机新旧区域映射、两个主站入口已部署。两机精确运维 Git 版本为 `8ed9e195b84019f39c3ee9d9999bfd03efed5062`,先提交/推送再 Git fetch/检出;最终受管配置哈希、Nginx 语法与重载通过。两管理入口以既有有效账号完成登录、设置页切换及退出,未保存业务配置;两主站浏览器品牌/登录页、API/资源验收通过。真实 Nginx 回环检查 93 个断言通过。恢复点、证书与日后更新方法见 [管理反代专题](GATEWAY_ADMIN_PROXY.md),跨项目完整映射只在 CoDocs 反代表维护。 + +两个新 CF 区域保持橙云、Full (strict),Origin CA 根域/一级泛域证书已安装;旧 com.de 和两新管理源域使用隔离公开 LE 证书,签发与续期 dry-run 通过。两证书 timer 和新橙云官方 IP 同步 timer active,CF 信任文件 22 段。新生成 vhost 只记录失败状态/主机/耗时,避免查询令牌进日志;原专用入口/订阅安全日志未批量改变。CF 令牌仅存白色机 root 私有文件,批准的管理验收临时凭据副本均已删除。 + +受保护资源:gemcook.net 仅新增两个 getway A,原 NS、MX、SPF、DKIM、DMARC 和邮件记录保留,未发测试邮件。四个原网关容器的启动时间/重启计数与本轮开始前相同;未改用户、套餐、订阅上游或业务代码。2026-10-14 实际 SSH 登录白色机成功,IPv4/IPv6 22 监听、SSH active,UFW inactive、INPUT ACCEPT;本轮没有改 SSH、防火墙或安全组。此结果不抹掉下文 2026-10-11 首次签发曾重启旧订阅网关的事故。 + +用户明确延期:gemcook.net 无根站 A/AAAA;diaodu.us 根域与 nasa 无匹配源站 HTTPS vhost/证书,严格代理仍为 502,本轮不新建、不关闭证书校验或借用 master/Gitea。旧 fu/dpl/Gitea/TTC 仅做根页 200 回归,master 根页既有 Laravel 404;不代表全部管理路由业务验收。业务用户登录、购买/支付、全站、多地区以及订阅/节点全链路未在本轮重测,既有本机节点连通跳过决定保留。 + ## 最新代码基线 - 邮件页签实现版本 13117587c86aa49dafad3467b04d90469f4de2ab;本地提交推送、生产 Git fast-forward 完成。