CoreOS中NetworkManager的dns-search来源及移除方法咨询
问题场景
- 基础环境:宿主机操作系统为CentOS8,目标部署操作系统为rhcos-4.9.0-x86_64虚拟机,部署架构如下图:

IP地址为10.10.12.20的CoreOS虚拟机,指定dnsmasq服务器作为域名解析服务器,通过coreos-installer工具配合ignition文件完成RedHat CoreOS安装部署。 - dnsmasq服务配置(dnsmasq.conf):
interface=enp1s0 address=/.apps.blue.garagekr.com/10.10.12.12 #loadbalance host-record=bastion.blue.garagekr.com,10.10.12.12 dhcp-option=3,10.10.12.1 # Gateway dhcp-option=6,10.10.12.12 # Nameserver dhcp-range=10.10.12.0,static dhcp-authoritative host-record=master2.blue.garagekr.com,10.10.12.20 #reverse ptr-record=20.12.10.10.in-addr.arpa.,master2.blue.garagekr.com ...
- CoreOS安装操作:安装阶段通过nmtui工具仅配置IP地址、域名服务器、网关参数,执行安装命令如下:
sudo coreos-installer install --copy-network --ignition-url=http://10.10.12.12:8080/bootstrap.ign --insecure-ignition /dev/sda
异常现象
CoreOS安装流程无报错,但出现非预期的DNS搜索(dns-search)配置:全程未手动配置任何dns-search相关参数,检查NetworkManager的keyfile配置(路径为/etc/NetworkManager/system-connections),其中dns-search字段为空,相关配置如下:
- NetworkManager运行配置输出:
[root@master2 /]# NetworkManager --print-config # NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf (lib: 10-disable-default-plugins.conf, 20-client-id-from-mac.conf) (etc: 20-keyfiles.conf, sdn.conf) [main] # rc-manager=symlink # auth-polkit=true # dhcp=internal plugins=keyfile,ifcfg-rh [keyfile] path=/etc/NetworkManager/system-connections [logging] # backend=journal # audit=false [device] match-device=interface-name:br-int;interface-name:br-local;interface-name:br-nexthop,interface-name:ovn-k8s-*,interface-name:k8s-*;interface-name:tun0;interface-name:br0;driver:veth managed=0 [connection] ipv4.dhcp-client-id=mac # no-auto-default file "/var/lib/NetworkManager/no-auto-default.state"
- 网卡连接配置文件(
Wired connection 1.nmconnection)内容:
[root@master2 /]# ls /etc/NetworkManager/system-connections/ 'Wired connection 1.nmconnection' [root@master2 /]# cat /etc/NetworkManager/system-connections/Wired\ connection 1.nmconnection [connection] id=Wired connection 1 uuid=4eace183-cd66-3e30-9391-06813f952009 type=ethernet autoconnect-priority=-999 interface-name=enp1s0 permissions= timestamp=1655879214 [ethernet] mac-address-blacklist= [ipv4] address1=10.10.12.20/24,10.10.12.1 dns=10.10.12.12; dns-search= method=manual [ipv6] addr-gen-mode=stable-privacy dns-search= method=auto [proxy]
但检查/etc/resolv.conf文件,存在自动生成的dns-search配置:
[root@master2 /]# cat /etc/resolv.conf # Generated by NetworkManager search blue.garagekr.com nameserver 10.10.12.12
问题解答
1. 自动生成的dns-search域名来源
这个配置和Ignition配置无关,是NetworkManager的默认自动推导逻辑生成的:
- 你的dnsmasq中配置了10.10.12.20的PTR反向解析记录,指向
master2.blue.garagekr.com - RHCOS 4.9搭载的NetworkManager存在默认逻辑:当网卡使用静态IP配置、手动指定了DNS服务器,但没有显式配置dns-search参数时,会主动对本机IP发起反向DNS查询,将返回域名的父域(也就是本次场景中的
blue.garagekr.com)动态写入/etc/resolv.conf的search字段。 - 网卡配置文件里dns-search字段为空是正常现象,这个推导值是运行时生成的,不会回写持久化到nmconnection配置文件中。
2. 安装阶段移除该配置的可行方法
两种方案都可以在安装阶段直接生效,不需要安装后再进系统调整:
- 方案一:调整安装环境的网络配置后再复制
在安装前的临时环境用nmtui配完IP、网关、DNS后,直接编辑对应的网卡nmconnection文件,在[ipv4]段添加ignore-auto-dns=true参数,保留原有空的dns-search=配置,再执行带--copy-network参数的安装命令即可。安装后的系统会继承这个配置,不会自动推导search域。 - 方案二:通过Ignition写入全局NetworkManager配置
直接在使用的ignition配置中添加文件/etc/NetworkManager/conf.d/90-disable-auto-search.conf,内容如下:
系统首次启动时会优先加载这个配置,直接关闭自动推导DNS搜索域的逻辑。[connection] ipv4.ignore-auto-dns=true ipv4.dns-search= ipv6.ignore-auto-dns=true
注意:不要删除dnsmasq上配置的PTR反向解析记录,OpenShift集群正常运行依赖节点正反解析记录一致,删除PTR记录会导致后续集群部署、组件通信异常。
内容的提问来源于stack exchange,提问作者GRu. L
相关产品推荐
相关产品推荐

