第 22 章 配置 DNS 服务器顺序
大多数应用程序使用 glibc 库的 getaddrinfo() 函数来通过 DNS 解析名称。默认情况下,glibc 将所有 DNS 请求发送到 /etc/resolv.conf 文件中指定的第一个 DNS 服务器。如果这个服务器没有回复,RHEL 会尝试此文件中的所有其他名称服务器。NetworkManager 可让您影响 /etc/resolv.conf 中的 DNS 服务器顺序。
22.1. NetworkManager 如何在 /etc/resolv.conf 中对 DNS 服务器进行排序 复制链接链接已复制到粘贴板!
NetworkManager 根据以下规则对 /etc/resolv.conf 文件中的 DNS 服务器进行排序:
- 如果只有一个连接配置集,NetworkManager 将使用那个连接中指定的 IPv4 和 IPv6 DNS 服务器顺序。
如果激活多个连接配置集,NetworkManager 会根据 DNS 优先级值对 DNS 服务器进行排序。如果您设置了 DNS 优先级,NetworkManager 的行为取决于
dns参数中设置的值。您可以在/etc/NetworkManager/NetworkManager.conf文件的[main]部分中设置此参数:dns=default或者如果dns参数没有设置:NetworkManager 根据每个连接中的
ipv4.dns-priority和ipv6.dns-priority参数对不同连接中的 DNS 服务器进行排序。如果没有设置值,或者您将
ipv4.dns-priority和ipv6.dns-priority设为0,则 NetworkManager 将使用全局默认值。请参阅 DNS 优先级参数的默认值。dns=dnsmasq或dns=systemd-resolved:当您使用这些设置中的一个时,NetworkManager 将
dnsmasq的127.0.0.1或127.0.0.53设为/etc/resolv.conf文件中的nameserver条目。dnsmasq和systemd-resolved服务将对 NetworkManager 连接中设置的搜索域的查询转发到该连接中指定的 DNS 服务器,并将对其他域的查询转发到具有默认路由的连接。当多个连接有相同的搜索域集时,dnsmasq和systemd-resolved将这个域的查询转发到在具有最低优先级值的连接中设置的 DNS 服务器。
DNS 优先级参数的默认值
NetworkManager 对连接使用以下默认值:
-
50用于 VPN 连接 -
100用于其他连接
有效的 DNS 优先级值:
您可以将全局默认值和特定于连接的 ipv4.dns-priority 和 ipv6.dns-priority 参数设为 -2147483647 和 2147483647 之间的值。
- 低的值具有更高的优先级。
- 负值具有一个特殊的效果,它会排除其他带有更大值的配置。例如,如果至少有一个连接具有负优先级值,NetworkManager 只使用在连接配置集中指定的具有最低优先级的 DNS 服务器。
如果多个连接具有相同的 DNS 优先级,NetworkManager 会按照以下顺序排列 DNS 的优先顺序:
- VPN 连接
- 带有活跃的默认路由的连接。活跃的默认路由是具有最低指标的默认路由。