首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux解析DNS的顺序是什么?

问Linux解析DNS的顺序是什么?
EN

Unix & Linux用户
提问于 2023-03-05 09:12:58
回答 1查看 226关注 0票数 0

Linux解析DNS的顺序是什么?我是读/etc/nsswitch.conf,然后读hosts,然后去/etc/resolv.conf DNS,然后去网络连接DNS吗?

我对DNS知之甚少,如果有任何能帮助我理解的答案,我将不胜感激

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2023-03-05 10:44:49

Linux解析DNS的顺序是非常可配置的。

首先阅读hosts:行中的/etc/nsswitch.conf。该行上的关键字指定使用各种源的顺序。

可用的关键字集取决于您的Linux发行版。最经典的例子是:

  • files告诉系统读取/etc/hosts
  • dns告诉系统使用/etc/resolv.conf中指定的DNS服务器。(使用systemd-resolved的新系统可能最终会使其过时。)
  • nis或nisplus指的是NIS/NIS+系统的集中管理主机表(实际上已过时)
  • compat与files类似,但也允许在/etc/nsswitch.conf存在之前使用旧的NIS扩展语法。(实际上已过时)

现代系统可能增加了新的关键字,例如:

  • resolve告诉系统使用systemd-resolved。如果存在此关键字,请使用resolvectl命令查看实际的DNS服务器设置。如果dns关键字也不存在,则/etc/resolv.conf文件可能被completely忽略。
  • mdns4_minimal、mdns6_minimal或mdns_minimal告诉系统试图通过分别使用IPv4、IPv6或两者将mDNS数据包发送到适当的多播地址来解析表单shortname.local的短主机名或长名称。IPv4的多播地址为224.0.0.251,IPv6为ff02::fb,目标端口为5353/UDP。如果同一网络中的其他系统配置了avahi-daemon或另一个mDNS响应程序,则可能允许您在本地网段中使用主机名,而无需在每个系统上设置真正的DNS服务器或维护/etc/hosts文件。
  • myhostname允许系统始终成功地解析自己的主机名,即使没有配置/etc/hosts或DNS服务器,也不存在网络连接。
  • mymachines允许系统自动解析使用systemd-machined.service设置的虚拟机的主机名。

可能还有其他关键字,因为/etc/nsswitch.conf系统可以通过提供实现名称服务交换API (命名为libnss_.so* )的共享库来扩展。

如果您在/etc/resolv.conf中看到行DNS,这也是systemd-resolved正在使用的一个标志,您应该使用resolvectl来检查实际的DNS设置。

大多数程序使用C标准库(通常是glibc)的主机名解析函数,但有些程序要么非常老,要么专为DNS诊断而设计,它们将直接读取/etc/resolv.conf。

通过在resolve中使用关键字/etc/nsswitch.conf,C标准库的主机名解析函数被直接路由到systemd-resolved,而/etc/resolv.conf中的nameserver 127.0.0.53也将任何旧的/诊断程序重定向到使用本地systemd-resolved。

dns关键字和/etc/resolv.conf被考虑替换,因为它们并不真正支持特定于连接的DNS服务器的概念:它们有一个内置的假设,即所有DNS服务器都知道所有相同的事情,所以如果一个DNS服务器说什么东西不存在,他们假设没有理由向另一个DNS服务器征求第二个意见。

systemd-resolved允许配置特定于连接的DNS服务器,还允许将有关特定域的查询定向到特定于连接的DNS服务器。

(从技术上讲,如果DNS服务器响应“您要求的记录不存在”,则它是一个有效的答案,而不是错误--尽管它可能不是您想要的答案。只有“我无法回答这个问题”或“我不能告诉你”这样的回答才是错误的。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/738701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档