为什么我应该使用 FQDN 而不是服务器的 IP 地址?

为什么我应该使用 FQDN 而不是服务器的 IP 地址?

在我使用服务器的工作中,我遇到过在配置文件中输入外部服务器地址的情况。我见过有人直接使用服务器的 IP 地址,但我听到过许多建议使用主机名完全限定域名(FQDN)。为什么我应该使用主机名而不是直接 IP 地址?

因为如果您使用主机名,那么您将需要一个本地 DNS 服务器,该服务器将每个主机名链接到 IP 地址。使用主机名或 IP 地址有什么缺点?

答案1

使用 IP 地址可确保您不依赖 DNS 服务器。它还具有防止通过 DNS 欺骗进行攻击的好处。

使用 FQDN 而不是 IP 地址意味着,如果您要将服务迁移到具有不同 IP 地址的服务器,您只需更改 DNS 中的记录,而不必尝试查找使用该 IP 地址的所有地方。

当您拥有由多个个人配置的多个服务器和服务时,这尤其有用。

答案2

DNS 不仅仅是 FQDN = IP

DNS 的重要之处在于它提供的不仅仅是 A 记录(主机名 = IP)。DNS 提供不同类型的记录,例如 MX、CNAME、TXT 等……有时某些软件可能需要这些记录。它允许多个地址记录、IPv4 + IPv6 记录、动态地址、负载平衡、基于地理位置的解析、故障转移/冗余等……DNS 会告诉您事物是什么(www.google.com 是 google 的网络服务,172.217.4.110?那是什么?)它允许您更改这些设置/记录并让客户端获取它们,而无需对所有客户端进行更改。DNS 可以做复杂的事情。

与直接 IP 地址相比,使用 DNS 通常具有明显的优势。

FQDN 可能是一项要求

有些东西(例如使用基于名称的虚拟主机或负载平衡器等的 Web 服务器)绝对需要您通过 FQDN 或主机名来寻址。它们会根据您连接的 FQDN 来确定如何响应您的请求。通过 IP 连接可能根本不起作用。

SSL 证书是基于域名颁发的,因此如果没有 DNS,您可能无法(正常)使用某些启用 SSL 的服务。

这是对 google.com 域名的挖掘查询,可让您了解 DNS 的复杂性

google.com.299 IN A 172.217.0.174
google.com.299 IN AAAA 2607:f8b0:400b:807::200e
google.com。599 IN MX 10 aspmx.l.google.com。
google.com。599 IN MX 40 alt3.aspmx.l.google.com。
google.com。59 在 SOA ns2.google.com。dns-admin.google.com。126990955 900 900 1800 60
google.com。599 IN MX 30 alt2.aspmx.l.google.com。
google.com。21599 IN NS ns2.google.com。
google.com。599 IN MX 20 alt1.aspmx.l.google.com。
google.com。599 IN MX 50 alt4.aspmx.l.google.com。
google.com。21599 IN NS ns1.google.com。
google.com。3599 IN TXT“v=spf1 include:_spf.google.com ~all”
google.com。21599 IN CAA 0 问题“symantec.com”
google.com。21599 IN NS ns3.google.com。
google.com。21599 IN NS ns4.google.com。

Yahoo 回应了 3 个 IP 地址

$ 主机-ta yahoo.ca
yahoo.ca 的地址是 77.238.184.24
yahoo.ca 的地址是 74.6.50.24
yahoo.ca 的地址是 98.137.236.24

使用 IP 地址的优势

对我来说,这通常是因为 DNS 可能以某种方式妨碍或不可用。一般来说,我会使用 DNS 来处理大多数事情。

举个例子,如果两台机器之间有直接连接(没有交换机),并且有私有网络地址(例如 192.168.1.1 和 192.168.1.2),并且它们使用私有网络地址进行高可用性通信或 DRBD 或其他非常具体的服务,那么 IP 地址可能会更好。在这种情况下,在 DNS 中设置可能没有任何意义。这没有必要,会增加复杂性、性能问题,并可能引入故障点。

另一个例子是路由。路由表会出于各种原因记录 IP 地址。

另一个是引用名称服务器(例如在 /etc/resolv.conf 中)。因为没有名称服务器,您无法解析任何内容。

相关内容