我对 DNS 如何工作有几个疑问。
我是否能够将 A 记录连接到我想要的任何 IP 地址(例如 Google 的 IP)?
我其实不知道这一点,对此感到非常惊讶。我只认为您可以重定向到您拥有的网站,或者只能将您的域名转发到实际目标链接。如果这是真的,那么 CNAME 记录也一定是一样的,对吗?
换句话说,我可以点击我自己的域名并显示 Google 的网站,但不显示 Google 域名的名称而是显示我自己的域名?
我是否可以将多个记录连接到一个域,例如 A 记录、txt 记录或 AAAA 记录和 CNAME 记录?
txt 记录实际上是如何工作的,您是否真的只需在浏览器中输入 url 然后文本就会弹出到屏幕上,还是您必须发出特殊的获取请求或其他什么?
答案1
我是否能够将 A 记录连接到我想要的任何 IP 地址(例如 Google 的 IP)?
是的。这实际上不是“所有权”的问题,而是域名所有者和服务器运营商之间的协议问题。
如果你指向的服务器还没有同意提供您想要的域名 – DNS 条目将起作用,但 Web 服务器只会回复错误页面。(这对于 Web 或电子邮件很重要,因为服务器知道正在请求哪个域名 – 或者任何基于 TLS 的内容,因为服务器必须拥有正确的证书。)
但一般来说,付费网络托管就是这样运作的,例如 - 通常您不拥有 IP 地址,而对于“共享”计划,您不拥有有关服务器的任何内容,但您仍将 A/AAAA 记录指向它,因为它已配置为识别域并为其执行一些有用的操作。
我其实不知道这一点,对此感到非常惊讶。我只认为您可以重定向到您拥有的网站,或者只能将您的域名转发到实际目标链接。如果这是真的,那么 CNAME 记录也一定是一样的,对吗?
也是的。与上述相同,所有权并不重要,唯一重要的是服务器是否配置为执行您想要的操作(同样,当讨论具体涉及网站时,目标服务器将知道它被访问的域 - 并且它可能只是回应“不,我没有配置为服务该域”)。
一般来说,DNS 根本不关心“网站”或“链接”——它只关心域名和 IP 地址。但即便如此,DNS 记录也是单向的;您可以将任何内容指向任何内容。
换句话说,我可以点击我自己的域名并显示 Google 的网站,但不显示 Google 域名的名称而是显示我自己的域名?
它将与一些网络服务器。使用 Google – 可能不行。
再次强调,如上所述:网络服务器知道它们被调用的域是什么(它包含在每个 HTTP 请求中)。较大的网络主机依靠因为他们在同一个 IP 地址上为不同的域名提供许多网站服务。
因此,如果您只是为自己的域创建指向此类 Web 服务器的 A 记录,它将找不到匹配的“虚拟主机”配置,并且通常会提供通用错误页面而不是您想要的网站。但对于只有一个“默认”虚拟主机的小型 Web 服务器,它确实可以工作。
它也不适用于 HTTPS 或任何其他基于 TLS 的协议。即使在最简单的情况下,服务器也必须提供对所访问域有效的证书,否则浏览器将显示“证书不匹配”错误页面。
但对于许多其他(非网络)服务来说,它会工作正常,服务器甚至不会注意到。例如,SSH 或 FTP 根本不报告主机名。
我是否可以将多个记录连接到一个域,例如 A 记录、txt 记录或 AAAA 记录和 CNAME 记录?
一般来说是的,每个服务只会查看它想要的记录类型而忽略其余的,因此您可以拥有任意记录类型的组合(无论是否有意义) - 除了少数例外。
例如,A+AAAA 非常常见 - 这就是您托管双栈 IPv4+IPv6 服务的方式,同一台服务器同时拥有这两种地址类型。在域根目录下,您通常会在那些 A+AAAA 记录旁边放置用于邮件的 MX(以及用于内部 DNS 操作的 NS+SOA)。
有一些记录类型,例如 SSHFP,原意是要与地址记录一起使用,许多类型具有“描述性”用途,可以放置在任何地方(TXT,HINFO,RP,LOC ......)。
(我认为这就是存在不同记录类型的全部意义所在。)
然而,一个很大的例外是 CNAME,它通常不允许与其他记录类型一起使用。名称可以是别名或者不是,但不能同时存在。(这就是为什么您通常不能将 CNAME 放在域根目录下的原因——因为那里已经有 SOA 和 NS。)
txt 记录实际上是如何工作的,您是否真的只需在浏览器中输入 url 然后文本就会弹出到屏幕上,还是您必须发出特殊的获取请求或其他什么?
不,网络浏览器根本不与 TXT 记录交互。它们有其他用途。
(DNS 作为一个整体早于网络几年后,许多记录都用于 HTTP 以外的目的。Web 浏览器只是使用许多其他服务已经在使用的相同通用 A/AAAA 记录。)
虽然 TXT 记录没有 URL,但你可以使用以下工具直接发出 DNS 请求来查看此类记录的内容:“dig”、“host”或“nslookup”。例如,在 Windows 上您可以运行nslookup -q=txt example.com
或Resolve-DnsName -Type TXT example.com
,而在 Linux 或 macOS 上,host -t txt example.com
则dig example.com txt
最好运行 或 。
(在字面 example.com 上实际上有两个 TXT 记录 - 以“v=spf1”开头的记录用于执行 SPF 检查的邮件服务器,另一个可能用于 DigiCert 的域验证。如今大多数 TXT 用途都是用于自动请求,但有时您仍然可以找到供系统管理员读取的 TXT 记录。)