DNS在第四个为什么解析失败了

问题

测试环境发现在linux的域名解析配置里面添加四个nameserver的时候,第四个dns没有生效

模拟

1
2
3
4
5
6
7
[root@node102 ~]# cat /etc/resolv.conf
options edns0 trust-ad
# Generated by NetworkManager
nameserver 192.168.5.28
nameserver 192.168.5.29
nameserver 192.168.5.30
nameserver 223.5.5.5

指定三个无效的DNS,然后最后一个使用正常的nameserver
然后ping www.baidu.com这个是无法解析的
然后改成

1
2
3
4
nameserver 192.168.5.28
nameserver 192.168.5.29
#nameserver 192.168.5.30
nameserver 223.5.5.5

这样就能正常解析了,这个是为什么?
是因为linux只支持最多3个DNS的配置,那么放在第四个就不生效了


代码写死了就是3个

1
2
3
RHEL 6/7 - Change MAXNS in /usr/include/resolv.h to allow more than 3 nameservers.
RHEL 8/9 - Change MAXNS in /usr/include/bits/types/res_state.h to allow more than 3 nameservers.
Recompile glibc (not supported; not recommended)

如果有需求必须超过3个dns的话,那么就需要修改相关的值,然后编译基础库glibc(不推荐动基础库),
但是通常不需要这么做,因为dns 3个应该是能够满足的,如果不满足的话,也可以通过上层的dns进行指定上级指定处理即可