我该如何理解`/etc/resolv.conf`的格式?

我该如何理解`/etc/resolv.conf`的格式?

我该如何理解 的格式/etc/resolv.conf

$ cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
search fios-router.home

/etc/resolve.conf 的联机帮助页说

不同的配置选项是:

   nameserver Name server IP address

          Internet address of a name server that the resolver should
          query...

那么这是否nameserver 127.0.0.53意味着我的本地计算机正在运行 IP 地址为 127.0.0.53 的 DNS 服务器?怎样才能知道它的流程呢?

   domain Local domain name.

          Most queries for names within this domain can use short names
          relative to the local domain.  If set to '.', the root domain
          is considered.  If no domain entry is present, the domain is
          determined from the local hostname returned by gethostname(2);
          the domain part is taken to be everything after the first '.'.
          Finally, if the hostname does not contain a domain part, the
          root domain is assumed.

这部分的意思是什么?上面只是提到了可以设置哪些值,并没有解释/etc/resolv.conf中这部分的含义。为什么我的/etc/resolv.conf没有这部分?

   search Search list for host-name lookup.

          The search list is normally determined from the local domain
          name; by default, it contains only the local domain name.

这部分的意思是什么?我的 /etc/resolv.conf 中的内容是什么search fios-router.home意思?

谢谢。

答案1

/etc/resolv.conf是主要的配置文件DNS客户端,因此它的存在并不意味着您正在运行 DNS服务器

其主要目的是列出 DNS 服务器的 IP 地址,在您的情况下:

名称服务器 127.0.0.53

  • 类型条目nameserver告诉主机要使用哪个 DNS 服务器。
  • 类型条目domain(如果存在)告诉系统它位于哪个域。这允许通过其主机名进行寻址。 (针对评论补充:主机名是计算机在网络中的名称。在许多系统上,您可以在命令提示符中看到主机名;如果没有,可以使用命令找到它hostname。)
  • 类型条目search(如果存在)将允许来自不同域的计算机通过各自的主机名相互寻址。

如今,该文件通常由NetworkManager(例如,在我的系统上,该文件以注释“由 NetworkManager 生成”开头)或systemd-resolved.

systemd-resolved

是一项为本地应用程序提供网络名称解析的系统服务。它实现了缓存和验证 DNS/DNSSEC 存根解析器,以及 LLMNR 和多播 DNS 解析器和响应器。

还根据systemd-resolved 的联机帮助页,该地址127.0.0.53是“本地 DNS 存根侦听器”。在相关的 Stack Exchange 站点上,有人询问如何更改此设置,因为该文件是/etc/resolv.conf自动生成的。参见示例

答案2

是的,第一部分表明您的系统期望名称服务器正在侦听localhost,在本例中,具体为127.0.0.53

第二部分是搜索路径,附加到所有不以句点 ( .) 结尾的搜索。例如,如果您运行,ssh blahDNS 将首先尝试查找blah,然后尝试查找blah.fios-router.home

答案3

search fios-router.home部分是最后一个可解析的域,即您的路由器(iirc Verizon)。

127.0.0.53 是名称服务器的 IP 地址,因此您的假设是正确的。

答案4

resolv.conf是将主机名解析为 IP 地址的标准方法的一部分。它是解析器库的一部分。

有多种方法可以解析主机名:

  • 文件(特别是/etc/hosts:)
  • 域名服务器
  • NIS、NIS+ 或 yp

它们的使用顺序在 中/etc/nsswitch.conf。这通常说

hosts:      files dns

这意味着解析器库首先查找/etc/hosts,如果在那里找不到它,将使用 DNS。

现在 DNS 将查询 DNS 服务器。哪一个是由 决定的/etc/resolv.conf。此外,还有许多其他参数可用于帮助 DNS 解析,其中search(首先为主机尝试此域)可能是最常用的。

相关内容