<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/feeds/atom-style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.nbhd.cloud/</id>
    <title>椒言无忌</title>
    <updated>2026-11-03T06:08:02.242Z</updated>
    <generator>Astro-Theme-Retypeset with Feed for Node.js</generator>
    <author>
        <name>青椒</name>
        <uri>https://www.naplesblue.cc/</uri>
    </author>
    <link rel="alternate" href="https://www.naplesblue.cc/"/>
    <link rel="self" href="https://www.naplesblue.cc/atom.xml"/>
    <subtitle>记录网络与 DNS 的排查过程、链路构建和使用经验，也保留日常观察与随笔。</subtitle>
    <rights>Copyright © 2026 青椒</rights>
    <entry>
        <title type="html"><![CDATA[国内优化 + 分流，用 mosdns 打造抗污染纯净家用 DNS 服务]]></title>
        <id>https://www.nbhd.cloud/posts/lan-dns-optimization/</id>
        <link href="https://www.naplesblue.cc/posts/lan-dns-optimization/"/>
        <updated>2026-11-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[用 mosdns-x 管理家用 DNS 的国内解析、境外加密上游和区域分流。]]></summary>
        <content type="html"><![CDATA[<p>国内家用网络环境，最容易被忽视的点是DNS。现代DNS服务系统已经变得相当复杂，也可以说很智能。对一个域名的解析可以根据查询方的IP返回不同的结果，即所谓调优。</p>
<p>调优是好事，但也有坏事。</p>
<p>GFW 会把黑名单里的域名直接搭配一个随机IP，让你在国内访问不了。不仅如此，对境外域名的解析请求如果被误发给国内服务商，可能会被追踪到正在翻墙。这就是DNS泄露。</p>
<p>现在中美AI竞争激烈，DNS泄露不仅要考虑GFW，还要顾及使用某些敏感美国AI，比如Claude会出现的环境检测。必须把DNS服务做得天衣无缝才行。让国内域名用优化线路，让国外域名统统走VPS节点。</p>
<p>我在这套方案上折腾了好久，最后选择了 mosdns-x，一个小众的定制开源项目作为家里 DNS 解析的核心。</p>
<h3>为什么选 mosdns-x</h3>
<p>mosdns-x 是基于 mosdns v4 继续维护的开源分支。它可以把域名匹配、缓存、广告过滤和上游转发放在同一套配置里，还能根据查回来的结果决定下一步。比如国内 DNS 返回的地址命中了我配置的污染 IP 名单，就改问 Google。各个分组也可以设自己的备用上游。 <a href="https://github.com/pmkol/mosdns-x/wiki">mosdns-x 官方文档</a> · <a href="https://github.com/pmkol/mosdns-x/releases">更新记录</a></p>
<p>这次升级，家里已经跑过的规则和插件配置可以继续用。我先用独立端口验证新版，再让它接管原入口，OpenClash 继续查原来的地址。</p>
<p>架构说明：国内网站走宽带直连，解析交给国内上游，让 CDN 按家里的线路调度。境外域名用加密上游，防的是明文查询途中收到伪造答复。有些网站固定走日本节点，我给它们单独配了日本 DNS，按日本出口的线路选地址。</p>
<p>家里的设备照常用路由器提供的 DNS，分流和广告过滤都在 mosdns 里处理。</p>
<h2>一、家里的 DNS 查询先到哪里</h2>
<p><img src="/images/lan-dns-optimization/01-topology.png" alt="已上线的路由器 DNS 主链" /></p>
<p>家里的设备通过 DHCP 拿到路由器的 DNS 地址。查已经配置好的内网主机名，dnsmasq 可以直接回答。普通外部查询走这条路：</p>
<p><strong>设备 → OpenWrt 的 dnsmasq → OpenClash → mosdns-x → 上游 DNS</strong></p>
<p>中间经过 OpenClash，是因为这套配置用的是 redir-host。OpenClash 必须要拿到域名和 IP 对应关系，才能供后面的流量分流使用。OpenClash 会把DNS普通查询交给本机的 mosdns-x，缓存、广告过滤和上游选择都在那里处理。 <a href="https://wiki.metacubex.one/config/dns/">Mihomo DNS 配置</a></p>
<p>还有两类查询单独走。dnsmasq 保留少量指定域名的转发规则，比如代理节点的域名。代理节点和 DNS 上游的域名需要有单独的引导解析，避免出现还没连上节点，就要靠这个节点解析自身地址的情况。</p>
<h2>二、mosdns 的域名分流规则</h2>
<table>
<thead>
<tr>
<th>查询场景</th>
<th>mosdns 怎样选上游</th>
<th>解决什么问题</th>
</tr>
</thead>
<tbody>
<tr>
<td>家里直连的国内站</td>
<td>走国内 DNS</td>
<td>保留国内 DNS 和 CDN 面向家庭线路的地址调度</td>
</tr>
<tr>
<td>通用境外站</td>
<td>走通用加密上游</td>
<td>用 TLS 保护与上游之间的查询和答复，减少传输途中被篡改的机会</td>
</tr>
<tr>
<td>经日本节点访问的指定域名</td>
<td>优先问日本专用 DoT，约 1.5 秒未取得答复时启用通用远程上游</td>
<td>让候选地址更贴合日本出口的网络</td>
</tr>
</tbody>
</table>
<p>比如打开一个指定走日本节点的网站，mosdns 先向日本专用 DNS 查询，设备拿到 IP 后，OpenClash 再按流量规则把网站连接交给日本节点。DNS 分组和代理规则要配套。若还想从多个候选 IP 里测速挑一个，也该由实际连接网站的日本节点去测。 <a href="/posts/dns-upstream-through-proxy/">VPS 出口的 DNS 优化</a></p>
<p>名单之外的域名先问 Google。约 3 秒未取得答复时可以启用国内上游，答复里有中国 IP 也会再查国内上游。这条回落会用到国内明文 DNS。缓存、广告规则和其余分支的先后顺序见下图。 <a href="/files/lan-dns-optimization/configuration-notes.md">配置说明</a></p>
<p><img src="/images/lan-dns-optimization/02-query-flow.png" alt="mosdns-x 查询分流与回落路径" /></p>
<h2>三、为什么把上游规则收进 mosdns</h2>
<p>以前 dnsmasq 自己也有一份很长的国内域名转发表，命中就直接问公共 DNS。结果是，改了 mosdns 里的国内规则，这些查询还是走原来的路。把那批转发规则移走以后，普通外部查询才集中到一处选上游，内网名称仍然由 dnsmasq 处理。</p>
<h3>为什么不用 SmartDNS</h3>
<p>国内 DNS 和 CDN 已经能给出候选 IP。</p>
<p>在独立 DNS 主机上跑两套相同的 mosdns-x 策略，其中一套加 SmartDNS 测速。客户端分别用两套方案选出的 IP 访问同一批网站，保留原域名和 TLS 校验，白天、晚间各测一轮。事先定的保留条件是，至少 20% 的可比域名在两个时段都达标。达标要同时满足两条速度要求，首字节时间至少缩短 15%，也至少少 30 毫秒，失败率还得保持或下降。</p>
<p><img src="/images/lan-dns-optimization/03-smartdns-benefit.png" alt="加入 SmartDNS 测速后的 HTTPS 首字节收益" /></p>
<p>两轮共有 19 个域名可比。白天有 3 个达标，晚间有 1 个，两轮都达标的只有 1 个，占 5.3%。</p>
<p>SmartDNS 在国内使用收益很小，反而增加了系统复杂度。</p>
<h2>四、把 DNS 验收交给 AI</h2>
<p>有AI之后，DNS部署，mosdns-x配置文件改写，路由器规则修正，都可以交给AI来完成。Codex或者Claude Code能够在网络探查之后出具任务书，照样执行即可。</p>
<p>Claude 需要注意的是，改造 OpenClash 的配置要重启代理服务，中间断网可能会让 Claude 检测你在国内。最好用Codex。</p>
<p>优化之后，我让Codex做了验证。</p>
<ul>
<li>从内网设备发起查询。核对本地名称能否解析、广告规则是否生效，以及国内、境外、日本分组是否命中预期上游。日本分组还要核对网站连接的实际代理出口。</li>
<li>检查路由器有没有接管发往外部 53 端口的 UDP 和 TCP 查询。测试流量走物理网卡，避开客户端自己的 TUN。到路由器外网口确认哪些域名走了明文，并核对上游超时后的回落去向。</li>
<li>单独测客户端的 DoH 和 DoT 能否绕过本地规则。有公网 IPv6 的测试设备就补查 IPv6 下的接管和出口。</li>
</ul>
<p>目前运转良好，打开国内站速度飞快，境外站无DNS泄露。</p>
]]></content>
        <author>
            <name>青椒</name>
            <uri>https://www.naplesblue.cc/</uri>
        </author>
        <published>2026-11-03T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[给 VPS 跳板配好 DNS，让出口找到更快的 IP]]></title>
        <id>https://www.nbhd.cloud/posts/dns-upstream-through-proxy/</id>
        <link href="https://www.naplesblue.cc/posts/dns-upstream-through-proxy/"/>
        <updated>2026-10-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[围绕 VPS 出口做近地解析和目标 IP 优选，再用 SmartDNS Proxy 稳定访问远程 DNS。]]></summary>
        <content type="html"><![CDATA[<p>用 VPS 做跳板，挑好机房和线路之后，还有一件事值得做：给节点配好 DNS。</p>
<p>访问一个网站，电脑先连到 VPS，再由 VPS 去连接目标服务器。后一段连接快不快，和 DNS 返回了哪个 IP 有关系。</p>
<p>所以，走海外节点的域名，应该围绕那个节点做近地查询，再从候选地址里找出节点访问更快的 IP。东京 VPS 出口，要优化的是东京到目标网站这一段。</p>
<h2>在 VPS 上查询，也在 VPS 上测速</h2>
<p>同一个域名可以返回多个 IP。国内 DNS 给出的候选地址，东京 VPS 连过去可能要绕远。前半段线路再快，也会被后半段拖慢。</p>
<p>我的日本节点上已经有 DNS 服务，本地通过分组把部分域名交给它查询。</p>
<p>这里最容易配错的地方，是 DNS 在海外查了，IP 却在家里的路由器上测速。</p>
<p>业务连接最后由 VPS 发起，本地测到的是家里到目标 IP 的表现。因此，要在 VPS 上部署具备地址优选能力的 DNS，由它查询、测速并返回结果，本地前端负责转发对应域名的查询。</p>
<p>如果本地也用 SmartDNS，要关闭这部分转发域名的本地测速，避免把节点选好的地址再按家庭网络筛一遍。</p>
<p>验收时，检查应用是否使用了节点 DNS 选出的 IP，再比较实际访问速度。</p>
<h2>严查时，远程 DNS 也走代理</h2>
<p>IP 阻断也会影响 DNS。日本节点本机能正常解析，经可用代理可以完成 DoT 查询，但从家里直连，多个 TCP 端口都超时。</p>
<p>依赖它的域名分组因此开始解析失败。海外节点上的 DNS 还在运行，本地却无法把请求送过去，前面做的优化也就用不上了。</p>
<p>在严查的时候，访问远程 DNS 也通过可用代理，会更稳妥。SmartDNS 本身提供 Proxy 设置，可以给代理起一个名字，再让指定上游使用它。<a href="https://pymumu.github.io/smartdns/config/proxy/">SmartDNS 代理配置</a></p>
<p>我家的海外 DNS 分组配在 SmartDNS 中，可以直接给日本上游指定代理。</p>
<p>具体配置交给 Codex，说明要让哪些域名使用哪个 VPS 的 DNS、远程查询通过哪个可用代理，保留其他分组。完成后确认这些域名能正常解析，并由相应的 VPS 出口访问。</p>
]]></content>
        <author>
            <name>青椒</name>
            <uri>https://www.naplesblue.cc/</uri>
        </author>
        <published>2026-10-30T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026 GFW 阻断 Reality 协议自救指南]]></title>
        <id>https://www.nbhd.cloud/posts/reality-connectivity-investigation/</id>
        <link href="https://www.naplesblue.cc/posts/reality-connectivity-investigation/"/>
        <updated>2026-10-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[多台海外 VPS 失联后，从 IP 阻断排查、换 IP 成本到 CDN 自救，以及用 Codex 协助维护和迁移。]]></summary>
        <content type="html"><![CDATA[<p>这段时间一直在折腾海外 VPS。几台机器的 IP 接连被封，我想查清楚，到底是 REALITY 协议被针对，还是所在网段被连累了。</p>
<p>其中一台换过 IP，恢复了连接，过几天又不行了。继续换当然也是个办法，但搬瓦工换一次要 11 刀，DMIT 对能 ping 通的机器，不提供免费更换 IP 的选项，我没法跟 GFW 打消耗战。</p>
<p>阻断策略还没弄清楚，我先尝试用 CDN 自救。目前看，效果还不错。</p>
<h2>能 ping 通，TCP 却连不上</h2>
<p>这轮遇到的阻断有个特点：ICMP 没被拦，VPS 可以正常 ping 通，但 TCP 握手无法完成。SSH 连不上，REALITY 也连不上。拿到 <a href="https://tcp.ping.pe/">tcp.ping.pe</a> 测，大陆方向的连接同样失败。</p>
<p>这就比直接 ping 不通更容易让人误判。机器还活着，服务也可能正常，只看 ping 会以为网络没问题，接着去查端口、配置和代理软件。</p>
<h2>先用 CDN 把入口换掉</h2>
<p>我原来愿意直连 VPS，是因为选好的机房在自己的网络上速度和稳定性都不错。这次给它加了一条 CDN 备用入口。</p>
<p>直连时，电脑直接连接 VPS 的 IP；套上 CDN 后，电脑先连接 CDN 边缘，由 CDN 回到海外源站。</p>
<p>我新增的链路用 VLESS + TLS + XHTTP，支持经过 CDN。部署时保留原来的 REALITY 服务，两种入口可以切换使用。</p>
<p>四个入口都确认到达东京出口，实际上传和下载也都完成了。</p>
<p>推荐一下 Vultr，这家海外服务商虽然月费不菲，但 VPS 可以按小时收费，如果IP不通，随时可以开新机，直到找到合适的那台。东京和大阪的ntt线路白天还算稳定，延迟低，带宽够。如果套上CDN，速度可以接受。<a href="https://www.vultr.com/?ref=7203477">Vultr直达</a></p>
<h2>这些事，现在可以让 Codex 协助做</h2>
<p>比如这次的任务，可以这样交代：</p>
<blockquote>
<p>这台 VPS 能 ping 通，但大陆方向 SSH 和代理端口的 TCP 握手失败。帮我排查，并在保留原有 REALITY 服务的基础上，增加 XHTTP/CDN 入口。完成后确认实际出口和上传下载都正常。</p>
</blockquote>
<p>迁移 VPS 也类似。把旧机器上的服务、数据、域名和目标机器告诉它，让它协助迁移，在切换前确认新机器上的服务可用。</p>
<p>服务器上的排查和搬迁，已经不用每一步都自己敲命令了。</p>
]]></content>
        <author>
            <name>青椒</name>
            <uri>https://www.naplesblue.cc/</uri>
        </author>
        <published>2026-10-30T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[翻墙协议怎么选]]></title>
        <id>https://www.nbhd.cloud/posts/2025-fan-qiang-xie-yi-shen-du-dui-bi-ji-zhu-fen-xi-bao-gao/</id>
        <link href="https://www.naplesblue.cc/posts/2025-fan-qiang-xie-yi-shen-du-dui-bi-ji-zhu-fen-xi-bao-gao/"/>
        <updated>2026-10-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[直连先考虑 VLESS + REALITY，弱网下试 Hysteria 2；IP 被阻断时换入口。把协议选择、线路质量和服务访问分开判断。]]></summary>
        <content type="html"><![CDATA[<p>自建代理，直连优先考虑 <strong>VLESS + REALITY</strong>；线路丢包明显、UDP 可用时，再试 <strong>Hysteria 2</strong>。如果 VPS 的 IP 已经被阻断，先解决入口问题，继续换协议通常使不上力。</p>
<table>
<thead>
<tr>
<th>遇到的问题</th>
<th>优先考虑</th>
<th>判断依据</th>
</tr>
</thead>
<tbody>
<tr>
<td>搭一条日常直连线路</td>
<td>VLESS + REALITY</td>
<td>不用自备域名和证书，兼顾伪装与传输效率</td>
</tr>
<tr>
<td>线路丢包，下载跑不起来</td>
<td>Hysteria 2</td>
<td>利用 QUIC 和拥塞控制改善弱网传输，前提是 UDP 通畅</td>
</tr>
<tr>
<td>服务器 IP 方向连接失败</td>
<td>换 IP、换节点，或增加 CDN 入口</td>
<td>改变实际连接的地址，绕开失效的直连路径</td>
</tr>
</tbody>
</table>
<h2>REALITY 适合做直连的起点</h2>
<p><a href="https://github.com/XTLS/REALITY">VLESS + REALITY</a> 这套组合里，VLESS 负责代理通信，REALITY 负责传输安全与伪装。它能把未通过认证的连接转给目标网站，让外部探测看到真实网站的响应，自己不用另外购买域名、申请证书。</p>
<p>REALITY 和经常一起出现的 Vision 分工不同。REALITY 处理外层握手与伪装，<a href="https://github.com/XTLS/Xray-core/discussions/1295">Vision</a> 则对内部 TLS 握手等流量特征做处理，并减少重复加密的开销。</p>
<h2>Hysteria 2 主要解决弱网传输</h2>
<p><a href="https://v2.hysteria.network/docs/developers/Protocol/">Hysteria 2</a> 基于 QUIC，通过 UDP 承载通信。它值得尝试的场景是：连接能建立，但延迟高、丢包多，TCP 下载速度迟迟上不去。</p>
<p>这里要看的是自己的网络能否顺畅传 UDP。UDP 被限速或丢弃时，换成 Hysteria 2 很难改善体验；UDP 通畅时，它的拥塞控制才有发挥空间。</p>
<p>还有一个容易误解的地方：带宽参数填得更大，不等于速度更快。Hysteria 的 <a href="https://hysteria.network/docs/advanced/Full-Server-Config/#congestion-control-details">Brutal 拥塞控制</a>会按设定的速率发送，超过线路承受能力会增加拥塞、浪费流量。部署时让 AI 按实际带宽配置，再比较真实下载和长连接表现，比照抄一个大数字有用。</p>
<h2>IP 被阻断，要换访问路径</h2>
<p>这段时间几台海外 VPS 的 IP 接连失联，机器能 ping 通，TCP 握手却无法完成。SSH 和 REALITY 一起连不上，继续调整代理参数解决不了入口不通的问题。</p>
<p>我目前尝试的办法是保留 REALITY 直连，再加一条 <strong>VLESS + TLS + XHTTP，经 CDN 回源</strong>的入口。电脑先连接 CDN 边缘，再由 CDN 连接海外 VPS，实际访问路径变了。目前效果还不错，具体过程写在<a href="/posts/reality-connectivity-investigation/">这篇自救记录</a>里。</p>
<p><a href="https://github.com/XTLS/Xray-core/discussions/4113">XHTTP</a> 是传输方式，可以配合 TLS 穿过支持相应传输模式的 CDN。它不是在原来的 REALITY 连接前面直接加一个 CDN 开关，需要单独部署入口。</p>
<p>备用方案也要看它能避开什么故障。同一个 IP 上再开几个依赖直连 TCP 的端口，遇到该 IP 的 TCP 阻断时仍会一起失效。换节点或增加 CDN 路径，才给切换留下了余地。</p>
<h2>其他协议，按已有条件取舍</h2>
<p><a href="https://trojan-gfw.github.io/trojan/protocol">Trojan</a> 用真实的 TLS 连接承载代理流量，通常需要域名和证书。手上已有可用的 Trojan，继续使用即可；它的价值是部署思路直接、客户端支持成熟。</p>
<p><a href="https://github.com/klzgrad/naiveproxy">NaiveProxy</a> 的特点是复用 Chromium 网络栈，配合填充等机制，让通信行为更接近浏览器。愿意维护对应服务端和客户端时，可以把它作为另一种伪装思路；无需为了凑齐协议清单再部署一套。</p>
<p><strong>VMess</strong> 已经能满足需求的，也不必只为协议名字更新而迁移。真正值得更换的理由，是连接、速度或维护出了具体问题。</p>
<h2>sing-box 和 Xray-core 怎么选</h2>
<p>主要用 REALITY 直连，或准备加 XHTTP + CDN 入口，可以优先选 <a href="https://github.com/XTLS/Xray-core">Xray-core</a>。REALITY 和 XHTTP 都出自 Xray 项目，相关功能的更新和配置资料也集中在这里。</p>
<p>希望把 REALITY、Hysteria 2、DNS 和分流规则放在同一套配置里管理，可以选 <a href="https://sing-box.sagernet.org/">sing-box</a>。对新手来说，先选适合自己手机、电脑的客户端，再让 AI 按客户端支持的方案完成部署，日常使用会省心一些。</p>
]]></content>
        <author>
            <name>青椒</name>
            <uri>https://www.naplesblue.cc/</uri>
        </author>
        <published>2025-05-29T03:14:37.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[被迫放弃 Halo，重回 Ghost]]></title>
        <id>https://www.nbhd.cloud/posts/coming-soon/</id>
        <link href="https://www.naplesblue.cc/posts/coming-soon/"/>
        <updated>2025-05-09T02:58:41.000Z</updated>
        <summary type="html"><![CDATA[之前转移到 Halo，是因为 Halo 有好看的主题，中文输入也比较方便。但在服务器上运行 Halo，考虑不周，沿用了 H2 数据库。当我发...]]></summary>
        <content type="html"><![CDATA[<p>之前转移到 Halo，是因为 Halo 有好看的主题，中文输入也比较方便。但在服务器上运行 Halo，考虑不周，沿用了 H2 数据库。当我发现 xray 的日志占满整个磁盘，Halo 已经无法访问的时候，为时已晚。H2 数据库在这种情况下，被 Halo 重写。</p>
<p>好在我很懒，在博客上没写过几篇文章。既然找不回来那十几篇文章，索性算了。</p>
<p>Ghost 的功能更强大，缺点是没有我喜欢的主题。我很不耐烦一定要在页面上镶嵌图片。也许这次不得不更新一下想法，用 midjourney 解决这个问题。</p>
]]></content>
        <author>
            <name>青椒</name>
            <uri>https://www.naplesblue.cc/</uri>
        </author>
        <published>2025-05-08T15:20:10.000Z</published>
    </entry>
</feed>