我曾经有一台运行具有静态 IP 的 Ubuntu 17.04 服务器,我按照互联网页面上的某些说明在该机器上进行了名称服务器配置。
现在我不想在服务器上花钱,只想在家里的个人机器上设置名称服务器,这样可以节省我每月的服务器费用,而且比我之前的配置快得多。现在我想将域指向这个新 IP。由于 IP 地址经常更改,我创建了一个应用程序,它将检查我更新的公共 IP 并使用最新 IP 更新 DNS 提供商。我已经完成了 SSH 的端口转发和 Web 服务器的端口 80。
但我有以下一些疑问。
我可能会遇到什么问题?我应该在 named.conf.local 文件和 named.conf.options 等上使用什么 IP 地址?是否有可用于设置的文档或指南。
我不想使用No-IP或其他工具。
提前致谢。
答案1
我认为它对你不起作用。
如果 example.com 想要使用 ns1.example.com 作为其记录的名称服务器之一(供其他人用于查找 www.example.com 等),则域名注册商(godaddy、google、network solutions 等)需要添加所谓的“粘合记录”,以便域名可以引用自身。对于经常更改的 IP,这行不通。
即使你有 linode 或其他 VPS,你也无法以安全的方式从你的家庭连接运行主服务器 - 域名传输通常由允许提取副本的 IP 锁定 - 因此你必须更新你的 DNS 配置才能更新你的记录。
你说你不想做的事情是可行的——使用 noip 或其他动态 dns 服务。你可以这样做,然后为你的“真实”域设置 CNAME 记录,指向你的 noip 主机名,该主机名将与你的 IP 地址保持同步。
就我个人而言,由于电源问题、额外的热量、额外的噪音等原因,我 12 年前将我的服务器从家里搬到了 linode.com 帐户,从此不再回头,这也是我建议您做的事情……
答案2
有可能。有点。但不建议这么做。
我这么做了,而且很痛苦。
首先,我有一个 No-IP 记录,用于公共 IP。我们称之为foo.no-ip.com
。
的 NSexample.com
指向foo.no-ip.com
,还有第二个(外部)从属 NS,它只是复制主 NS。从属 DNS 通常免费包含在注册商中。
Bind9 被设置为 的权威 DNS 服务器example.com
,端口为 53 TCP和允许使用 UDP 进行绑定。通常 DNS 仅使用 UDP,但对于到从属 NS 的区域传输,则使用 TCP。
区域文件相当标准:
$TTL 60
;
$ORIGIN example.com.
example.com. IN SOA foo.no-ip.com. admin.example.com. (
2017012101 ; serial
1h ; refresh
1h ; retry
1h ; expire
1m ; default_ttl
)
@ IN NS foo.no-ip.com
@ IN NS slave-ns.example.org
@ 600 IN A 127.0.0.1
我并不建议在家中托管 DNS。选择提供动态 DNS 更新的提供商,例如,我相信谷歌就是这样做的。然后您可以使用该nsupdate
工具动态操作您的 NS 记录。
DNS 很棒,但有时也相当脆弱。
从技术上来说,使用胶水记录也可以做到这一点,但是当 IP 发生变化时,它们很容易出错,所以不是如果您的地址需要更改,建议您这样做。
如果你想和胶水记录,在您的区域文件中添加一条带有某个名称的记录,例如ns 600 IN A 1.2.3.4
指向您的公共 IP。指定ns.example.com
为 NS,并在您的注册商处创建一条粘合记录。不同供应商的执行方式不同。每当您更新外部 IP 时,您都必须更新粘合记录。