了解主机名和/ etc / hosts


13

在/ etc / hostname中,我有myname

在/ etc / hosts中,我有:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

我对什么是主机名及其用途有一个模糊的理解。

这些更精确的问题可以帮助我更好地理解它:

  1. 在上面的示例中,我的主机名到底是什么?myname或者是其他东西?如果我改用myname.domain.comin /etc/hostname,那么我的真实主机名是什么?

  2. 在此示例中,命令hostname返回myname,而命令hostname -f返回localhost.localdomain。我想到的/etc/hosts只是名称和IP地址之间的映射。它似乎在这里起到了另一个作用。什么是fqdn?它的作用是什么?如何获取?为什么呢localhost.localdomain

  3. 如果我改而myname.domain.com进去/etc/hostnamehostname -f会回来的myname.domain.com。为什么?

  4. 在这些文件中,为什么fqdn不以点结尾?

  5. hostname -ddnsmydomain等价的吗?

  6. 在什么情况下可以使用主机名(myname),何时必须使用我的fqdn(localhost.localdomain)?

Answers:


9
  1. /etc/hostname包含计算机名称,本地运行的应用程序知道该名称。/etc/hosts和DNS将名称与IP地址相关联。myname可以将其映射到机器可以访问的任何IP地址,但是将其映射127.0.0.1是不美观的。
  2. 不是/etc/hosts,但/bin/hostname与一起发挥另一功能-f
  3. 因为/etc/hosts可以覆盖常识。谨慎编辑它,不要在进行临时补丁和实验后在其中留下垃圾。
  4. 两种样式(⋯ .TLD.和⋯ .TLD)都是可以接受的。前者是明确的,而后者是无处不在的。
  5. 不知道是什么dnsmydomain,但不太可能。从/etc/hosts技术上说,寻找内容并不是“ DNS”。
  6. 记住要点1.主机名–适用于本地运行的应用程序;也适用于诸如SMB(samba)之类的特殊网络协议。FQDN(如果不是伪造品或占位符,例如localhost.localdomain)–用于从外部访问机器。FQDN在使用时必须是可解析的。

1
如果我的IP是动态(DHCP)并且不时更改怎么办?我应该myname在/ etc / hosts中使用哪个地址?
user156516 '18

3

我绝对讨厌有人告诉我阅读手册,但是在这种情况下,请务必查看手册页中的主机名,如果没有,大多数问题都应该回答。它写得比我可能解释的要好得多。

为了提供一些帮助,您遇到的一些问题摘录如下:-您的主机名就是您在/ etc / hosts中看到的名称。-返回的FQDN基于解析程序返回的内容,因此为什么您会看到/ etc / hosts中返回的值,因为解析程序先检查主机文件,然后再执行任何必要的DNS查询。

我不相信主机名手册页中涉及到的内容(基于我自己对手册页的重新读取)是为什么文件中的条目不以点号结尾的原因。

在处理DNS记录时会使用该约定。主机名和主机文件实际上不是DNS记录。如果您正在绑定中配置这些条目以供DNS查找解析,则可以使用点(请查看此优质资源:http : //www.zytrax.com/books/dns/apa/dot.html)。

另外,请记住,所有这些值都不是从系统广播的。因此,如果您希望另一个系统基于FQDN进行访问,则该系统基于该另一个系统上的主机文件,或者缺少基于外部系统在FQDN上进行的DNS查找的主机条目,以使其能够解析回FQDN。系统。


有关最后一个点的相关信息/etc/hostsserverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith

3

在回答

如果我的IP是动态(DHCP)并且不时更改怎么办?我应该在/ etc / hosts中使用哪个地址作为我的名字?

首先,让我指出,/ etc / hosts是名称到其安装主机的地址映射的静态定义,并且仅由该主机用于将名称转换为IP地址。

因此,要考虑2个观点-主机“ myname”和其他所有人。

对于该“ myhost”主机,请使用“ localhost”(在/ etc / hosts中定义为127.0.0.1)引用当前主机,或者将“ myname”添加到定义localhost的/ etc / hosts行中,以便“ myname” '总是映射到本地主机。像这样:

127.0.0.1本地主机myname

然后,无论接口获得什么IP地址都无所谓,您将始终拥有一个可以正常工作的地址(一个额外的好处是,您无需点击硬件即可从“我的名字”变为“我的名字”)。

现在,要在“ myhost”具有动态IP地址时允许其他主机找到“ myhost”,您必须使用DNS,并且说DNS服务器必须处理DHCP分配的映射。(好吧,我可以想到其他解决方案,但是想到的一切都属于“超越愚蠢”类别,恕我直言。好吧,好吧,您可以对主机做一些事情,让IT告诉DNS它在哪里,但这是一个值得在这里完全不同的问题/答案流的问题,恕我直言)


2

/ etc / hostname/ etc / hosts很简单,但也不是那么简单...

如何快速设置Debian /etc/hostname/etc/hosts

1)编辑/ etc / hostname

有2种有效的方法来进行设置。

要么做到:

  • machine,即此处理器的一个简单的单词名称。
    例如,“ joe”可能是您自己选择的计算机名称。
    请注意,这将需要/ etc / hosts中的别名,下面将进一步描述。

要么

  • machine.domain.net,即完全合格的域名(FQDN)。
    例如“ joe.xyz.com”。
    (这是假设您有一个DNS主机“ A”记录,该记录从joe.xyz.com指向您的joe的IP地址,即在名为joe的计算机上。通常,您在购买域名时设置该记录。片刻。)

一旦在/ etc /主机名设置,那么下一步是让这些命令hostname --all-fqdndnsdomainname工作正常,按照这个顺序,如下所示:

2)编辑/ etc / hosts

在其中有一个用于该主机的FQDN的行,例如'machine.domain.net',并以该计算机的IP地址(可能来自动态IP地址服务器)为前缀,如下所示:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • 首先,请注意,大小写在这里无关紧要提示:但是,设置上限可以使我们在下一步中注意到事情的来历。所以,我有资本Ĵ OE。

  • 还要注意,为了简单hostname(即/ etc / hostname ='machine')正确生成FQDN,在/ etc / hosts中必须存在一个名为'machine' 的别名。这就是别名joe在那的原因。(顺便说一句,即使您不使用该别名也可以。)否则,该别名是不需要的,也不使用。

  • 还要注意,“ domain.net”必须是可解析的,即在DNS中必须存在一个A记录。这就是所谓的“ 可解析的 ”(即DNS解析器)。

3)现在,通过运行以下命令,将这些新设置从/ etc / hostname和/ etc / hosts安装到内核中:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4)测试主机名

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

要么

$ hostname
joe.xyz.com

提示:

  • 请注意,这不是/ etc / hostname当前的名称,就像您现在再次对其进行编辑一样,而是/etc/init.d/hostname.sh脚本先前读取的内容,可能是重新引导的结果。

  • 还要注意,'j'是小写字母,因此这表明它来自/ etc / hostname,而不是/ etc / hosts。

5)测试FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6)测试DNS域名

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

现在,这应该使设置Web和电子邮件服务器更加容易。

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.