笔记

笔记

设想

我在一台具有(例如)公共 IP 的 Windows 10 Pro N PC 上有一个小型网站:123.456.78 如果我从任何地方输入该 IP,该网站都可以正常打开。

现在,我还在 2 个不同的域名卖家处购买了 2 个域名,例如www.somewebsiteOne.comwww.somewebsiteTwo.org。并依赖于转发到www.somewebsiteTwo.ddns.net的DNS 服务123.456.78。在域名卖家中,我可以转发到www.somewebsiteTwo.orgwww.somewebsiteTwo.ddns.net我的目的是使用 Technitium 将对 DNS 服务器的依赖替换为我自己托管的开源 DNS 服务器。

为了验证我自己的 DNS 服务器是否正常工作,我执行以下操作:

  1. 在不同网络上的另一台计算机上打开 powershell。
  2. 输入:nslookup www.somewebsiteTwo.org 123.456.78
  3. 它确实返回了 IP 地址 123.456.78

问题

现在,如果我尝试在两个域名卖家中的任何一个中输入该 DNS 服务器的 IP 地址,我需要输入:

  • 主机名
  • IP地址

对于主机名,我可以输入类似的内容(这是一个转发到的www.somewebsiteTwo.ddns.netDNS 服务器 ,对于 IP 地址。打电话给其中一个后,他们向我解释说,他们使用主机名而不是 IP 地址来查找我的个人公共 DNS 服务器,而不是 IP 地址。www.somewebsiteTwo.org123.456.78123.456.78

这实际上意味着我需要一个 DNS 服务器将我的个人公共 DNS 服务器的某些主机名转发到我的 DNS 服务器的 IP 地址。这违背了我的意图。因此我有以下内容:

问题

我如何确定并使用指向我个人公共 DNS 服务器的有效主机名123.456.78

尝试

  • 我尝试输入我的电脑的主机名,例如 cmd 命令中返回的主机名hostname。但这不被视为有效的主机名。
  • 我尝试输入123.456.78但那不被视为有效的主机名。
  • 我尝试进入,http://123.456.78/但是没有成功。
  • IP 地址不能作为引用 DNS 服务器的主机名,因为:

用于 DNS 服务器的主机名以及注册和使用 DNS(子)域时使用的主机名必须是有效的完全限定 DNS 主机名,例如 ns1.example.com. 或 customer-5363.dsl-users.isp.example.net 。该协议不允许使用 IP 地址。如果您想使用 DNS 记录(例如 ns1.example.com)来注册域 example.com,您的注册商需要先设置正确的胶水记录

答案1

在与其中一家公司通话后,他们向我解释说,他们使用主机名而不是 IP 地址来查找我的个人公共 DNS 服务器,而不是 IP 地址。

这实际上意味着我需要一个 DNS 服务器将我的个人公共 DNS 服务器的某些主机名转发到我的 DNS 服务器的 IP 地址。这违背了我的初衷。

这并不完全正确。

确实,用于域名委托的 NS 记录仅有的采用主机名而不是原始地址。

但是,你实际上可以指定你自己域名下的主机名,这就是为什么会有 IP 地址字段:它们让你定义主机名并同时使用它。这实际上是支持消息中提到的“粘合记录”所指的内容,它允许这种“循环”。

(请注意,您也应该在自己的 DNS 服务器中添加完全相同的主机名定义 - 注册商处的粘合记录被视为副本,而您服务器上的记录则被视为权威版本。)


例如,当你输入 nameserver 时ns1.somewebsite.com,注册商会发布此 DNS 记录:

somewebsite.com. NS ns1.somewebsite.com.

由于名称服务器的主机名位于其托管的域下,因此这显然不会按原样工作,因为它会创建一个循环。所以你需要在相应的字段中输入服务器的 IP 地址,这允许注册商发布第二个 DNS 记录(“粘合”记录):

somewebsite.com. NS ns1.somewebsite.com.
ns1.somewebsite.com. A 12.34.56.78

每当解析器尝试查询您的域名的名称服务器时,来自粘合记录的 IP 地址将始终附加到相同的响应,从而避免循环问题。

答案2

在我的问题中,主机名只是一组任意字符,通常后面跟着ns1例如 ,如果您的网站是,您可以在自己的 DNS 服务器设置中创建,然后在您的注册器中输入“主机名”。您(通常)需要 2 个 DNS 服务器,因此,您可以创建另一个“主机名”并输入它。然后在 IP 中,您只需输入托管 DNS 服务器的 PC 的公共 IP 地址(您也在Technitium/DNS 设置的条目中输入了该地址)。ns2<website without the http://www.>swag.orgns1.swag.orgns1.swag.orgns2.swag.orgns1.swag.org

下面是通过图片来说明如何完成所有操作的示例。

已验证的设置以托管您自己的 DNS 服务器:

  1. 简而言之,您将这些设置放入您的 technitium 设置面板中,(your ip用您的计算机/主机/托管网站的设备的公共 IP 地址替换。(A ns1.<yourwebsite>“ ” 是一个粘合记录,它告诉将人们链接到您的网站的计算机,“当您正在寻找这个主机名/网站时,您可以查看这个 ip 来查找主机名/网站”,(但随后它会陷入无限循环,因此您告诉它好,停在这里,您在这个 ip 上找到了网站。)

您的 Technitium 主机上的 PC 上的 DNS 设置。

  1. 然后在您的域名注册商处创建自定义 DNS 记录,每个域名卖家的做法都不同。这是 namecheap 的示例。简而言之,您需要输入您的 DNS 服务器主机名(如果您输入的是ns1.<yourwebsite adres>technitium,请输入该主机名以及您计算机的公共 IP 地址。

在注册商处输入你的 DNS 服务器

  1. 您可以通过搜索检查您的 dns 服务器/glue 记录是否正确输入了 ip:ns1或者ns2(如果您输入了ns1.<yourwebsite>

验证您的 DNS 服务器是否输入正确

  1. 不要忘记在网站设置中选择您自己的自定义 DNS,否则您已经在本地 DNS 服务器中正确配置了所有内容,并告诉注册商嘿,在自定义 DNS,查看这个 IP 以获取我自己的 DNS 服务器,但最后注册商仍然在其自己的默认 DNS 服务器中查找(它找不到您的 IP,您需要为此付费)。

在注册商设置中选择您的个人/自定义 DNS 服务器

笔记

  1. 这些设置还不支持https://www.yourwebsite.something。为此,您需要一个 SSL 证书,您可以在 openssl 免费获取一个,而 Technitium 确实支持 https。但是我还没有实现它。
  2. 更详细、更详尽的说明可参见:https://github.com/at-0/DnsServer与其他人制作的开源 DNS 服务器 Technitium 一起,我只是对其进行了分叉并添加了说明。

相关内容