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