利用NetworkManager来调整IPv4和IPv6DNS服务的执行顺序

在红帽企业 Linux 7/8操作系统中,我们希望DNS客户端首先使用IPv6 地址访问 DNS 服务器。如果它不响应,则DNS客户端应使用IPv4地址访问另一个DNS服务器。

按以下顺序执行DNS服务器的解析:

1,分配 IPv6 地址的 DNS 服务器。

2,分配 IPv4 地址的 DNS 服务器。

我们在日常运维工作中都可以知道,默认情况下NetworkManager 会根据如下规则来执行dns服务解析。

1,默认情况下只有一个/etc/resolv.con文件,将使用文件中的IPv4和IPv6DNS服务器的顺序来执行。

2,如果设置DNS优先级,则 NetworkManager的行为取决于参数中设置的值。

那我们的问题该如何解决呢?请各位同学跟着保哥往下看。

解决方案

我们可以调整将"ipv6.dns优先级"属性的值更改为低于ipv4.dns优先级的值,可以将IPv6名称服务器位于 resolv.conf 的顶部。

例如,在不更改优先级的情况下,IPv4 名称服务器位于顶部:

$ nmcli connection add type dummy ifname dummy1 \ip4 192.168.122.1/24 ip6 fd01::/64 \ipv4.dns 192.168.122.2 ipv6.dns fd01::2Connection dummy-dummy1 (69e14c3c-174c-4997-a79d-8f85bea43e74) successfully added.

请注意,您不能使用"nmcli 设备..."这里, 因为这样的临时更改不会保留在连接配置文件中, 并将由 "nmcli 连接..."下一步。

$ nmcli connection up dummy-dummy1Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)$ cat /etc/resolv.conf# Generated by NetworkManagernameserver 192.168.122.2nameserver fd01::2

现在,更改连接的 IPv6 DNS 优先级:

$ nmcli connection modify dummy-dummy1 ipv6.dns-priority 50 ipv4.dns-priority 100$ nmcli connection up dummy-dummy1Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)$ cat /etc/resolv.conf# Generated by NetworkManagernameserver fd01::2nameserver 192.168.122.2