返回

文章详情

我自己建立了根DNS,以便停止租用域名

Hacker News2026年8月16日 13:07

2026年8月16日,安东尼·“chovy”·埃廷格撰写。本文的写作方式:根据我自己的笔记起草,然后由我编辑。回到我的博客文章我厌倦了租用域名我所有的想法在存在之前都要花费每年十二美元。不是主机费用——而是域名。我支付给注册商,注册商支付给注册局,注册局根据与ICANN的合同运营顶级域名,在这一系列链条的末端我得到一个我不拥有且永远不会拥有的文本字符串。我只是租用它。如果在垃圾邮件文件夹中错过续订通知,那么那些从未听说过我的项目的人就会拥有我的命名空间,并想要四位数的价格才能收回它。将这个数乘以我主目录中那些未完成的东西的数量,这就如同我在为自己的想象力缴纳订阅费。因此我停止支付,开始构建栈的另一端。它叫做Moshpit。它是一个根。不是注册商,不是转售商,不是其他人顶级域名的封装——而是一个拥有自己根和解析器的实际名称权限,你现在可以声明任何内容:app.moshcode.sh/pit你实际上获得了什么命名空间只有一层深,先到先得。你声明一个后缀——.eggs,.hacker,.rank,无论什么没人登记的——从那一刻起,属于它的每一个名字都是你可以铸造的。不是每个一个美元,而是免费的。scrambled.eggs,over-easy.eggs,在凌晨两点多因为你感觉可以而产生的其他四百个名字。持有后缀就是拥有权;在其下的名称只是你写的行。你也可以将一个后缀指向另一个。将.agentic别名到.agent,整个命名空间随之而来——foo.agentic解析为foo.agent——而任何你特别排除的名称将保持原样。这是实际DNS根在任何价格下无法为你做到的。写这篇文章时,注册局有5679个后缀被声明。我持有其中大多数,这取决于你感觉有多宽容,这可能是土地掠夺或自助融资,我已经将那些我保留的列出,标价几美元,这样它们就不会永远停留在我的账户中。任何没有被声明的名称仍然是免费的,仍然是先到先得。关于如何解析,老实说这里是大多数“替代DNS”项目遮遮掩掩的地方,所以让我直言不讳:一个Moshpit后缀不在公共DNS根中,因此在你启用解析器之前没有什么可以解析它。没有任何魔法。你的笔记本向一个根服务器询问.eggs,得到的答复是没有这样的东西存在,因为就十三个根服务器而言,这是正确的。因此你运行桥接:sudo moshcode dns enable这会安装一个本地解析器,它从注册局回答Moshpit的名称,并转发所有其他查找请求。你的github.com仍然会去它一直去的地方。这里还有一个DNS-over-HTTPS端点在https://dns.moshcode.sh/dns-query,符合标准RFC 8484,支持GET和POST形式,如果你更愿意让客户端指向它,而不是改变你的系统解析器。它是自选的且保持自选的。它不在安装程序中,它不会在升级时发生,也没有其他命令作为副作用开启它。该规则的存在是因为我曾经让某个东西自动启用它,并将一台其解析器在未被询问的情况下被重写的机器交给同事,这是让某人的早晨变得糟糕的绝佳方式。重写计算机解析名称的方式是人故意输入的,或根本不输入。权衡我不会隐瞒生活在公共根之外有真实的成本,你在移动任何重要的东西之前应该知道它们:没有公共CA会向你发放证书。不管是Let's Encrypt,还是任何人——它们只能验证DNS根中的名称,而你的不在其中。因此,它是在80端口上的http://。在Caddy中,你必须明确定义方案,否则它会试图获取证书,并永远失败。这里有一个本地CA和一个固定TLS代理,以便为这些名称提供真实的HTTPS,这是一个需要单独撰写的完整帖子。目标是IPv6或主机名。IPv4文字是故意拒绝的:一个小盒子上的A记录通常是租用的或在NAT后面,它在没有告知任何人的情况下失效。一个看上去活着的死名字比没有名字更糟。DNS承载着一个地址,而不是端口。无论你希望怎样,浏览器都访问80。如果你的东西住在3000端口,把一个web服务器放在它前面。建立网站把你的服务器IPv6地址放在名称的目标字段中——仅地址。然后在80端口上提供名称。没有任何代理,也没有任何重定向;浏览器直接连接到你的机器,带着Host: seo.rank,所以你的web服务器需要一个对此作出响应的区块。http://seo.rank { root * /var/www/seo.rank file_server }或者在nginx中:server { listen [::]:80; server_name seo.rank; root /var/www/seo.rank; }然后检查你的工作:moshcode dns resolve seo.rank curl -6 http://seo.rank/如果你不想输入以上任何内容,moshcode template install bun-caddy-sqlite会写入Caddyfile、systemd单元和一个已经正确定义的Bun + SQLite服务。moshcode template list显示其余的内容。没有服务器吗?这个名字仍然可以

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡