为什么我应该使用FQDN代替服务器的IP地址?


29

在使用服务器的过程中,我遇到了配置文件,您应该在其中输入外部服务器的地址。我已经看到一些人直接使用服务器的IP地址,但是我听到了很多建议使用主机名完全限定域名(FQDN)代替。为什么要使用主机名而不是直接IP地址?

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


5
如果您具有动态IP,则更改DNS记录可能会更容易。为什么要使用本地DNS服务器?为什么不让所有机器都具有可公开解析的IP?IP的另一个缺点是,即使它们不是动态的,它们也可能仍取决于物理位置,这使得迁移到其他位置变得更加困难。基本上,这听起来像是在问为什么发明了DNS。这个问题在其他地方已被多次回答。
Janus Troelsen

1
始终建议(例如在RFC中)建议在应用程序级别仅处理主机名。但是,除非使用IP,否则某些应用程序甚至无法使用。尽管如此,我本人还是经常通过IP而不是主机名来联系我的设备,但是这种恶习肯定会在我们完全迁移到IPv6时终止:)
Hagen von Eitzen

当然,由于外部服务器将使用SSL保护所有通信,并且SSL证书将为FQDN签名,如果您使用IP地址,则应用程序将无法验证正确的服务器。对?:|
TessellatingHeckler

1
@HagenvonEitzen确保您永远不会输入::1?:-)
CVn

Answers:


54

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

使用FQDN代替IP地址意味着,如果要将服务迁移到具有其他IP地址的服务器,则只需更改DNS中的记录,而不必尝试查找使用该IP地址的任何地方。 。

当您有多个由多个人配置的服务器和服务时,此功能特别有用。


1
尤其是如果该IP地址的知识也来自外部,例如客户,合作伙伴或供应商都在使用它。想象一下,如果我们所有人都去了一个我们称为stackoverflow.com的IP,而不是stackoverflow.com,那么他们需要更改IP吗?他们将如何告诉站点的每个可能的用户IP更改了?因此命名。
布兰登

@Brandon就像他们现在决定从stackoverflow.com更改为heapunderflow.com一样。域名的原始好处是让人们记住stackoverflow.com而不是151.101.1.69。当然,如今,它还允许虚拟主机,与其父母相关的子域以及由此产生的其他好处。
安赫尔

2
我认为此答案的核心是组织拥有其FQDN;但可能不拥有其IP地址。
Pieter Geerkens '16

1
尝试通过IP与FQDN运行HTTPS / Kerberos。
阿隆

这实际上是DNS的目的。
与莫妮卡(Monica)进行的轻度比赛

40

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英寸A 172.217.0.174
google.com。299英寸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 IN 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。

雅虎用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。

一个IP地址可能更好的示例是,当您有两台机器之间具有直接链接(无交换机)且具有专用网络地址(例如192.168.1.1和192.168.1.2),并且它们正在使用它进行高可用性通信时或DRBD或其他非常特定的服务。在这种情况下,在DNS中进行设置可能没有任何意义。这样做没有必要,会增加复杂性,性能问题并可能导致故障点。

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

另一个是引用名称服务器(例如/etc/resolv.conf中的名称服务器)。由于没有名称服务器,因此无法解决任何问题。


这是一个很好的答案,但也可能还应说明有关虚拟服务的信息。IP⟷FQDN是多对多映射,而不是多对一映射。
蓬松的

谢谢,并同意。如果您要使用DNS,DNS对于基于名称的虚拟主机非常有用。
Ryan Babchishin

是的,这就是我所指的。
蓬松的

真正使DNS正确的好答案-书签以供将来参考。我的一个小麻烦是您的评论“路由表出于各种原因记录了IP地址”。您提到的各种原因是什么?路由表别无选择,只能使用IP,因为路由发生在Internet层,而DNS使用应用程序层,因此必然依赖于路由。
gardenhead '16

@gardenhead谢谢。路由是正确的,我只是不想参与其中。原谅我的话语选择。
Ryan Babchishin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.