我有兴趣运行自己的 DNS 服务器,以便轻松更新我的域的 A 记录。我知道将我的 Web 服务器和 DNS 服务器放在同一个域上会带来警告。
目前我的域名是通过 GoDaddy 注册的,我已经注册了两个子域名(ns1... 和 ns2...),并让它们都指向我的 IP 地址。我希望能够打开端口 53,这样对我的域名的所有请求都可以查询我的 IP:53,我将向其提供 A 记录。如果我过度简化了这个过程,请原谅,因为它确实很复杂,我仍在学习域名解析算法。
最终,我想使用 NodeJs 构建自己的 DNS 服务器,但当我按照上述初步步骤操作时,我发现即使我监听端口 53,如果我通过浏览器向我的域发出请求,也不会收到任何流量。我的路由器已正确配置,可将端口 53 上的请求转发到我的网络内服务器。
这可能是什么原因造成的?
编辑:我曾经在错误的地方(serverfault)发过这个问题一段时间,也得到了一些建议,但我仍然不太清楚。有人建议我需要更新我的 NS 记录以指向新的名称服务器,但我相当确定当我将名称服务器设置为我自己的名称服务器时,这已经隐式完成了。现在不是所有的记录都应该由我的名称服务器提供服务吗?NS 记录是否始终需要由注册商提供服务?
我收到的另一个建议是,名称服务器需要有解析到其 IP 地址的 A 记录。同样,GoDaddy 是需要提供此 A 记录的必要方吗?
我还被告知 DNS“大量缓存”,因此浏览器不会直接连接,而是要求操作系统进行 DNS 查找。 因此,在将我的域名服务器的变更通知 GoDaddy(使用我自己的)并尝试请求我的域名(通过我的浏览器)之后,我想知道 DNS 请求是否理论上会到达我的域名服务器 IP 的端口 53?
答案1
我很抱歉这么说 - 我认为你处理这个问题的方式是错误的(因为这篇文章太冗长了)。
解决这个问题的“更好”的方法是(1)设置名称服务器,(2)检查它们是否在本地应答,(3)检查它们是否从您的网络外部应答,然后(4)将域名指向它们。
请注意,您确实需要至少 2 个名称服务器,并且这些服务器应该位于不同的网络或高度可靠的网络上。您确实希望名称服务器具有不同的外部可访问 IP 地址 - 这通常是您无法通过家庭/消费者级连接实现的。
回答您的问题“这可能是什么原因造成的?”是困难的 - 但最有可能的是,如果您从 LAN 上的外部地址查询名称服务器,则您的路由器无法正确路由数据包。
您的域名服务器肯定需要 A 记录来解析它们 - 如果您的 DNS 记录是您要使用的子域,那就更难了 - 您需要“粘合记录”(尽管许多提供商都使这变得像在 DNS 服务器旁边输入 IP 地址一样简单)。修改 A 记录的位置取决于您的设置 - 如果域名是 example.com 而域名服务器是 dns1.example.com,则需要在 dns1.example.com 上进行设置。需要在域名的区域文件中修改 A 记录。
DNS 确实严重依赖缓存,但可能被大量缓存,也可能不被大量缓存。如果您查询的名称服务器最近收到了记录查询,并且您没有直接查询 GoDaddy 服务器(您不太可能这样做,因为它们只会回答它们拥有权限的域名),那么是的,它很可能被缓存了。(这是一个过于简单的说法,但可以得到正确的答案。)