所以我明白主机名应该(至less在Debian系统中)设置在/etc/hostname 。 要获取FQDN(通过hostname -f ),系统通过/etc/hosts从主机名中findIP,然后返回该行中的第一个条目。
所以如果主机名是server1并且在/etc/hosts :
192.0.2.1 server1.example.com server1
它将返回server1.example.com 。 所以这是如何在许多网站desribed。 但我在想:为什么不把主机名分配给回送地址? 就像你用localhost做的那样:
127.0.0.1 server1.example.com server1 localhost
使用这种方法,您不必知道外部IP地址。 此外,可能使用FQDN的应用程序将直接在系统上发出请求,而不是通过networking。
那么,为什么不这样做呢? 为什么在互联网上使用外部IP地址的大多数例子?
这可能是一个坏主意,有几个原因
如果你有一个IP(并与其他主机通信),强烈build议将主机名放在外部已知的IP前面。
有些协议可以说“告诉另一个人你的主机名和它的IP地址”“好吧,其他人,我是foo.localnetwork(127.0.0.1)”。 另外一个人会收到这个包,在IP级别是外部IP,但是在协议级别上是127.0.0.1 IP,所以如果协议需要使用广告信息而不是IP级别的(例如,SIP可能会造成这个问题…)
另外一些服务只绑定在与主机名关联的ip接口上,因此这些服务只能通过回送设备与主机进行通信,而不需要其他人。
至less在新的Ubuntu发行版上,这是默认的。
这是我的
127.0.0.1 localhost.localdomain localhost 127.0.1.1 sprinkler.internal.lan sprinkler
这在任何情况下都没有问题,实际上有一些操作不需要工作DNS的好处。
我个人倾向于添加更多的条目,如本地apt回购,一些build设者等。