docs(ci): W3/W4 落地记录——git 局域网直达 24ms + 华为防私接 DHCP 偏差

W3/W4 标记完成。W4 按计划(DSM 443 反代改 HTTPS+导入 ali LE 证书)。
W3 改方案:原定 NAS 接管 DHCP 被华为 Q2S 防私接 DHCP 挡死→放弃,改成
NAS 装 Synology DNS Server(git/nas/win 单主机主区+转发其余)+仅 runner mac
家里 Wi-Fi 手动 DNS=.200。§8 记完整过程/偏差/坑(mDNSResponder 负缓存需 flush)。
真相源 baize domains.yaml 家内分光 note;NAS 運維归 ~/code/nas。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FEVUXAbFT6bF1Qw27RHWoD
This commit is contained in:
wangjia
2026-09-07 22:19:19 +08:00
parent c152c2aadf
commit d094a53d7e
+22 -2
View File
@@ -155,8 +155,8 @@
<tr><th>#</th><th>工作项</th><th>动谁</th><th>状态</th></tr>
<tr><td>W1</td><td>pangolin 把 git 纳入 private-split</td><td>pangolin1 <code>server.env</code></td><td><span class="tag ok">已完成</span></td></tr>
<tr><td>W2</td><td>ali 外网入口(git nginx 443→frp→NAS,开放)</td><td>ali</td><td><span class="tag ok">已就绪</span></td></tr>
<tr><td>W3</td><td>家内<b>分光 DNS</b>git/nas/win → 192.168.3.200 / .88</td><td>NAS DNS Server+ DHCP 下发</td><td><span class="tag ok">可行·待建</span></td></tr>
<tr><td>W4</td><td>NAS <b>443 TLS 反代</b> git → gitea:3000+证书)</td><td>NASDSM 反向代理)</td><td><span class="tag ok">可行·待建</span></td></tr>
<tr><td>W3</td><td>家内<b>分光 DNS</b>git/nas/win → 192.168.3.200 / .88</td><td>NAS群晖 DNS Server+ <s>DHCP 下发</s>→仅 runner mac 手动 DNS</td><td><span class="tag ok">已完成 2026-09-07(改法,见 §8</span></td></tr>
<tr><td>W4</td><td>NAS <b>443 TLS 反代</b> git → gitea:3000+证书)</td><td>NASDSM 反向代理 + 导入 ali LE 证书</td><td><span class="tag ok">已完成 2026-09-07</span></td></tr>
<tr><td>W5</td><td>runner 收口:1 个用户级 mac runner 走<b>域名</b>;退役 id=3;删 relay</td><td>dev maclaunchd+ gitea</td><td><span class="tag ok">已完成 2026-09-07</span></td></tr>
<tr><td>W6</td><td>验证 + 回写 baize 台账</td><td></td><td><span class="tag warn">待做</span></td></tr>
</table>
@@ -257,6 +257,26 @@ lsof -i :13000 <span class="c"># 空(relay 已死)</
</table>
<p class="small">相关台账:<code>~/code/baize/data/hosts.yaml</code> <code>ci_runners</code> 段(relay_note、mac runner state+ <code>domains.yaml</code>nas/win/git「家内覆盖 待做」)。W3/W5 落地后回写。</p>
<h2>8 · W3/W4 执行记录(2026-09-07,实际落地与偏差)</h2>
<div class="card ok">
<h3>✅ 结果:git 在家从隧道回环 ~1.8s → <b>局域网直达 24ms</b></h3>
<p><code>curl https://git.51yanmei.com/api/v1/version</code> 从 runner mac 经 pangolin<code>http=200 ip=192.168.3.200 time=0.025s</code>,证书受信。runner 重启后 <code>declare successfully</code>、无 <code>no such host</code></p>
</div>
<h3>W4NAS 443 反代)— 按计划</h3>
<ul>
<li>DSM 反向代理原有 <code>git.51yanmei.com</code> 条目从 <b>HTTP:80 改 HTTPS:443</b>,目的地仍 <code>localhost:3000</code></li>
<li>证书:把 ali 上 <code>/etc/letsencrypt/live/git.51yanmei.com/</code> 的 LE 证书(cert/privkey/chain)导入 DSM,绑到该反代服务。(我这边拉私钥被安全闸拦,改由用户在自己终端拉取 + DSM GUI 导入。)</li>
</ul>
<h3>W3(家内分光 DNS)— <span class="tag warn">改了方案</span></h3>
<p>原计划「NAS 接管 DHCP、下发 .200 当 DNS」<b>失败</b>——根因:家里网关是 <b>华为 Q2S 路由器,带防私接 DHCP</b>,把 NAS(dnsmasq,绑 :67 正常)发出的 DHCP 应答全丢,客户端永远拿不到 NAS 租约(华为 DHCP 关掉后 mac 也 DISCOVER 不到 NAS→一度 No-IP,靠重开华为 DHCP 兜底恢复)。NAS 不是路由器、改不了这个。</p>
<p>改成的可行方案:</p>
<ol class="steps">
<li>NAS 装 <b>Synology DNS Server</b><code>synopkg install_from_server DNSServer</code>):给 <code>git/nas/win.51yanmei.com</code> 各建<b>单主机主区</b>(只对这三名字权威→私网 IP+ <code>named.options.user.conf</code><code>forwarders{223.5.5.5;119.29.29.29}</code> 转发其余。故 <code>pay/jiu/api</code> 等兄弟子域照常公网。</li>
<li><b>只给 runner mac 的家里 Wi-Fi 手动指 DNS=<code>192.168.3.200</code></b>(macOS 按网络记,出门用别的网 DNS、不受影响)。别的家里设备不动(它们不需要 git 覆盖)。NAS 的 DhcpServer 已停,华为继续当 DHCP。</li>
<li>⚠ 改 DNS 后 mDNSResponder 负缓存旧失败(<code>dig</code> 通但 <code>curl</code> no-such-host)→ <code>sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder</code>runner 再 <code>launchctl kickstart -k</code> 重启。</li>
</ol>
<p class="small"><b>已知/待办</b>:① 只有 runner mac 走直达(本就够用,它才是 CI 需要的),非全网分光。② DNS=.200 仅设在家里 Wi-Fi;若 mac 换网上不了网就删这条。③ NAS DhcpServer 已 <code>stop</code>,如需永久别开机自启可在 DSM「DHCP Server」取消勾选。④ 台账真相源:baize <code>domains.yaml</code>『家内分光』note;NAS 详细運維归 <code>~/code/nas</code></p>
<hr>
<p class="small">关联:<a href="private-dest-acl-design.html">私有服务 ACL 设计</a> · <a href="private-dest-acl-plan.html">私有服务 ACL 实现计划</a> · <a href="control-plane-tls-tunnel.html">控制面 TLSTunnel 前置)</a> · <a href="index.html">← 文档索引</a></p>