Linux DNS配置手册

发布时间 2023-09-01 10:06:18作者: xiaoyaozhe

Linux系统-部署-运维系列导航

关于DNS生效优先级

Linux系统中,域名解析相关的配置存在多个地方,经常使用的包括

1.本地hosts文件,/etc/hosts,指定将域名解析到特定IP

配置格式
ip 域名1 域名2 ...

 2.dns配置文件,/etc/resolv.conf,指定dns服务器,系统会连接dns服务器查询域名解析

配置格式
nameserver ip1
nameserver ip2
...

3.网卡配置,/etc/sysconfig/network-scripts/ifcfg-xxx

配置格式
DNS1=ip1
DNS2=ip2
...
默认情况下,域名解析时的生效优先级为 本地hosts > dns配置,该优先级可以通过 /etc/nsswitch.conf 中 hosts配置项修改,但建议不要修改,可能会影响系统其他功能。
nsswitch关于dns默认配置
hosts:      files dns myhostname

 

关于DNS文件配置与网卡DNS配置的关系

背景说明

网卡配置dns后,需要重启网络服务(service network restart 或 systemctl restart network 或 reboot重启系统),此操作将在一定条件下更新dns配置文件,最后操作系统始终从dns配置文件中获取dns服务器地址。
网卡配置中,与dns有关的配置项主要包括
  1. BOOTPROTO(dhcp自动,static静态)
  2. DNS1/2(具体dns服务器地址,不配置则为空)
  3. PEERDNS(yes/no,默认为yes,是否自动获取dns服务器地址)

配置验证

为了验证多项配置的相互关系,以下为CentOS7.9系统的验证结果

结果说明

  1. 静态模式下,PEERDNS无作用,网络服务第一次重启时,网卡配置中的DNS必定会覆盖resolv配置,即使无配置(即DNS为空)
  2. 静态模式下,第一次重启网络服务后,再次配置resolv文件,再次重启服务时,系统优先使用网卡配置的DNS,但如果网卡配置中DNS为空,则使用resolv配置,不再覆盖
  3. dhcp模式下,PEERDNS为no时,与静态模式下情况相同
  4. dhcp模式下,PEERDNS为yes或不配置时,系统将自动获取dhcp服务器中的dns配置,与网卡配置的dns信息一起,作为网卡的dns配置,后续情况与静态模式下相同

结论

  1. PEERDNS只在dhcp模式下生效,如果配置yes,将自动从dhcp服务器中获取dns信息,与网卡配置的dns信息合并
  2. 更改网卡配置后,第一次重启网络服务后必定使用合并的网卡dns信息覆盖resolv配置(即使为空)
  3. 多次配置resolv后重启网络服务,将从合并后的网卡dns信息与resolv配置中选择不为空的,其中网卡配置优先
 

生产环境建议

因为resolv配置的生效条件比较复杂,失效风险较高,在实际环境中,请优先使用网卡配置来指定DNS服务器,包括dhcp自动获取以及手动设置DNS1/2/.../n