Alibaba Cloud Linux 3中,网络管理服务NetworkManager和systemd-resolved通过读取/etc/resolv.conf
配置文件实现域名到IP地址的解析。默认由NetworkManager服务自动管理此配置文件,systemd-resolved只读取而不更新此配置文件。如果您需要在/etc/resolv.conf
中自定义DNS配置,则必须禁用NetworkManager自动管理该配置文件。本文将介绍两种网络管理服务对该配置文件的管理策略,以及如何设置手动管理该配置文件。
网络管理服务对/etc/resolv.conf的管理策略
在Alibaba Cloud Linux 3中/etc/resolv.conf
为文件,非软链接,NetworkManager和systemd-resolved网络管理服务对该配置文件的管理策略如下:
NetworkManager
创建配置文件策略:系统首次启动后,主网卡正常启动并获取IP地址后NetworkManager会自动创建
/etc/resolv.conf
文件。更新配置文件策略:在网卡设备状态,IP地址,路由,DNS,主机名等发生变更时,NetworkManager会更新
/etc/resolv.conf
文件。
systemd-resolved
作为
/etc/resolv.conf
文件的消费者,只读取而不更新此配置文件。
在其他Linux发行版中,/etc/resolv.conf
的文件类型可能为文件或软链接,有关两种网络管理服务对该文件在不同文件类型时的管理策略如下:
设置手动管理/etc/resolv.conf配置文件
在Alibaba Cloud Linux 3 中,如果您需要在/etc/resolv.conf
中自定义DNS配置,则需要禁用NetworkManager自动管理该文件,具体操作步骤如下:
创建并打开配置文件。
sudo vim /etc/NetworkManager/conf.d/90-dns-none.conf
按
i
进入编辑模式,在配置文件中新增如下配置项。[main] dns=none
按
Esc
键,输入:wq
,按Enter
键保存并关闭文件。重新加载配置文件。
sudo systemctl reload NetworkManager
如果系统启动后未自动创建/etc/resolv.conf
配置文件,则系统无法使用此配置文件中定义的DNS服务器完成DNS解析,关于此问题,请参见系统启动后未自动创建/etc/resolv.conf配置文件问题排查定位。
恢复自动管理/etc/resolv.conf配置文件
完成设置手动管理/etc/resolv.conf
后,NetworkManager服务将不再自动管理该文件,如需NetworkManager服务重新管理该文件,只需删除或注释步骤2中添加的配置内容并执行步骤4重新加载配置文件。
常见问题
系统启动后未自动创建/etc/resolv.conf配置文件问题排查定位
可能原因:NetworkManager服务启动失败,导致未成功创建/etc/resolv.conf
配置文件。
排查定位:您可以通过查看NetworkManager服务状态及日志进行问题排查定位。
查看NetworkManager服务状态。
sudo systemctl status NetworkManager
回显信息如下,代表NetworkManager服务正在运行。
如果为其他状态,请查看NetworkManager服务日志进行问题定位。
查看NetworkManager服务启动日志。
sudo journalctl -u NetworkManager -b
结合日志中的相关报错完成问题处理后,您可以运行如下命令启动NetworkManager服务。
sudo systemctl start NetworkManager
服务启动成功后会自动创建
/etc/resolv.conf
配置文件。