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設定檔。