Alibaba Cloud Linux 3.2104 U10起,系統預設禁用systemd-resolved,DNS由NetworkManager直接管理,以提升穩定性、相容性和可維護性。本文介紹如何在Alibaba Cloud Linux 3中開啟systemd-resolved服務。
systemd-resolved服務預設狀態
自Alibaba Cloud Linux 3.2104 U10版本開始,systemd-resolved服務預設禁用,且/etc/resolv.conf預設為普通檔案,由NetworkManager直接維護。
此變更基於系統穩定性與相容性考慮:
簡化DNS解析步驟,減少解析鏈路層級,降低解析故障率,確保行為可預測,故障排查路徑清晰
DNS解析直接由雲網路提供,避免DNS緩衝機制導致解析不一致
保留靜態DNS設定檔格式及營運模式,對傳統營運工具鏈相容性高,降低營運體系適配成本
啟用systemd-resolved將改變系統DNS解析架構。可能導致容器網路解析失敗、VPN解析異常及依賴resolv.conf的營運指令碼失效等相容性問題。若無進階功能需求(如分離解析、加密解析等),建議保持系統預設設定
手動開啟systemd-resolved服務
若業務情境需要利用systemd-resolved提供的DNS解析/緩衝能力,請按照以下步驟進行配置。
配置並啟用systemd-resolved服務
啟用systemd-resolved服務前,需要佈建服務,確保可以正常解析。
建立設定檔。建立檔案
/etc/systemd/resolved.conf。sudo vim /etc/systemd/resolved.conf按
i進入編輯模式,在設定檔中新增以下內容。按ESC退出編輯模式,按:wq儲存並退出。[Resolve] DNSSEC=no MulticastDNS=no LLMNR=no執行以下命令啟動服務並設定為開機自啟。
sudo systemctl --now enable systemd-resolved
切換/etc/resolv.conf指向
由於Alibaba Cloud Linux 3預設/etc/resolv.conf為普通檔案,若啟用systemd-resolved管理該配置,需要將該檔案指向服務產生的動態檔案。按照以下步驟備份檔案並重建軟連結。
備份原有設定檔。
sudo mv /etc/resolv.conf /etc/resolv.conf.bak建立軟連結。將
/etc/resolv.conf連結到systemd-resolved產生的實際設定檔。sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
配置NetworkManager對接
為了讓NetworkManager將擷取到的DNS資訊傳遞給systemd-resolved,需修改NetworkManager配置。
建立設定檔。建立檔案
/etc/NetworkManager/conf.d/90-dns-systemd-resolved.conf。sudo vim /etc/NetworkManager/conf.d/90-dns-systemd-resolved.conf按
i進入編輯模式,在設定檔中新增以下內容。按ESC退出編輯模式,按:wq儲存並退出。[main] dns=systemd-resolved重載NetworkManager。
sudo systemctl reload NetworkManager
驗證配置
完成上述步驟後,請執行以下檢查確認生效:
檢查連結狀態。
ls -l /etc/resolv.conf預期輸出應顯示指向
/run/systemd/resolve/stub-resolv.conf的軟連結。lrwxrwxrwx 1 root root ... /etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf檢查解析狀態。若能正常輸出各網卡的DNS伺服器及網域名稱路由資訊,則表明服務運行正常。
resolvectl status測試解析,確認解析成功且延遲正常。
dig alibabacloud.com ping -c 3 alibabacloud.com
恢複預設配置行為
若不再使用systemd-resolved,希望恢複至Alibaba Cloud Linux 3的預設DNS管理員模式,請按以下步驟操作。
停止並禁用服務
首先停止正在啟動並執行服務並禁止其開機自啟。
sudo systemctl disable --now systemd-resolved恢複/etc/resolv.conf檔案
將之前備份的普通檔案還原,並移除指向systemd-resolved的軟連結。
刪除當前的軟連結。
sudo rm /etc/resolv.conf還原備份檔案。將此前步驟中備份的檔案還原為正式的設定檔。
sudo mv /etc/resolv.conf.bak /etc/resolv.conf驗證檔案屬性,確認
/etc/resolv.conf已恢複。ls -l /etc/resolv.conf預期輸出首字元應為
-(普通檔案),而非l(符號連結)。-rw-r--r-- 1 root root ... /etc/resolv.conf
重設NetworkManager配置
移除NetworkManager配置,恢複DNS預設行為。
刪除設定檔
90-dns-systemd-resolved.conf,確保systemd-resolved不再接管DNS解析。sudo rm /etc/NetworkManager/conf.d/90-dns-systemd-resolved.conf重載NetworkManager服務,此時NetworkManager會重新接管
/etc/resolv.conf檔案。sudo systemctl reload NetworkManager
驗證回退結果
檢查服務狀態,應返回
inactive。systemctl is-active systemd-resolved檢查解析功能,確認DNS解析正常。
dig alibabacloud.com ping -c 3 alibabacloud.com
注意事項
切勿手動編輯DNS檔案:使用NetworkManager或systemd-resolved管理DNS,請勿直接編輯
/etc/resolv.conf,否則重啟網路或服務後修改將丟失DNS配置方式:如需修改DNS伺服器位址,請通過NetworkManager工具(nmcli、nmtui)或systemd-resolved管理工具(resolvectl)進行配置,變更會自動同步至
/etc/resolv.conf檔案。