修订后的答案:
主机本身不处理实际的完全限定域名(FQDN)。这是由DNS处理的。FQDN(完全限定域名)由DNS将名称转换为IP地址来处理。使用/etc/hosts
文件,您实际上是覆盖了DNS服务器。计算机首先查看/etc/hosts
文件,以查看是否为主机名定义了条目与IP地址的对应关系。在/etc/hosts
中的条目如下所示:
127.0.0.1 localhost
127.0.1.1 terrance-ubuntu.lan terrance-ubuntu
这些条目与发行版无关。所有操作系统都使用相同的格式来处理这些行。只是
hosts
文件的位置不同。在Linux中,它通常位于
/etc/
文件夹中,在Windows中它通常位于
C:\Windows\System32\drivers\etc\
文件夹中。
将这行代码分解开来,你可以看到我同时将terrance-ubuntu.lan
和terrance-ubuntu
赋值给了自己的FQDN(完全限定域名),以覆盖DNS设置,这样应用程序就知道不要离开我的计算机。同时,terrance-ubuntu
是主机名,同样也是为了让应用程序知道不要离开我的计算机或者127.0.0.1(localhost)。将我的系统主机名设为127.0.1.1
对其他计算机在网络上找到我的主机没有影响。如果DNS正常工作,它们将会将我的主机名视为10.0.0.100
。使用127.0.1.1
的原因是为了让我的应用程序更快地找到我的系统,因为它会知道我的系统并不在网络的其他地方。我的实际主机名带有.lan
,这个.lan
实际上是我通过路由器设置的域名,路由器也是我网络中的另一个DNS服务器。
现在,假设本地网络上的DNS服务没有为IP地址分配主机名或完全限定域名(FQDN),但是您知道本地网络上主机的IP地址。那么,您可以将该主机分配到您的
/etc/hosts
文件中,这样每次访问它时就不需要输入IP地址了。该主机可能是一个工具服务器、打印机或其他网络连接的系统。像往常一样将条目添加到
/etc/hosts
文件中。
我将以我的网络连接打印机为例。它的静态IP地址是10.0.0.253。但是我不知道它的名称。因此,我想将其命名为
hp_printer
。我将对该IP地址和主机名进行ping测试,然后将其添加到
/etc/hosts
文件中。
terrance@terrance-ubuntu:~$ ping -c 2 10.0.0.253
PING 10.0.0.253 (10.0.0.253) 56(84) bytes of data.
64 bytes from 10.0.0.253: icmp_seq=1 ttl=255 time=0.326 ms
64 bytes from 10.0.0.253: icmp_seq=2 ttl=255 time=0.334 ms
terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
ping: unknown host hp_printer
terrance@terrance-ubuntu:~$ sudo vi /etc/hosts
10.0.0.253 hp_printer.lan hp_printer
terrance@terrance-ubuntu:~$ ping -c 2 hp_printer
PING hp_printer.lan (10.0.0.253) 56(84) bytes of data.
64 bytes from hp_printer.lan (10.0.0.253): icmp_seq=1 ttl=255 time=0.334 ms
64 bytes from hp_printer.lan (10.0.0.253): icmp_seq=2 ttl=255 time=0.303 ms
现在,我也可以通过我给它命名的名称访问打印机设置的网页,而不是 IP 地址,这可能更容易记住:
![enter image description here](https://istack.dev59.com/5lRsA.webp)
你的
/etc/resolv.conf文件也被DNS用来帮助查找主机名。它是解析器的配置文件。它提供了搜索域,这样当你寻找主机时就不必一直指定完全限定域名(FQDN)。它还提供了本地网络的DNS或名称服务器的IP地址。下面的
search
行显示了我的域名
lan
。
terrance@terrance-ubuntu:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.1
search lan
希望这能更好地解释DNS和FQDN的工作原理。
/etc/hostname
的发行版中该怎么办呢? - anon