全部產品
Search
文件中心

Alibaba Cloud Linux:啟用systemd-resolved管理DNS解析與緩衝

更新時間:Mar 02, 2026

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直接維護。

此變更基於系統穩定性與相容性考慮:

  1. 簡化DNS解析步驟,減少解析鏈路層級,降低解析故障率,確保行為可預測,故障排查路徑清晰

  2. DNS解析直接由雲網路提供,避免DNS緩衝機制導致解析不一致

  3. 保留靜態DNS設定檔格式及營運模式,對傳統營運工具鏈相容性高,降低營運體系適配成本

重要

啟用systemd-resolved將改變系統DNS解析架構。可能導致容器網路解析失敗、VPN解析異常及依賴resolv.conf的營運指令碼失效等相容性問題。若無進階功能需求(如分離解析、加密解析等),建議保持系統預設設定

手動開啟systemd-resolved服務

若業務情境需要利用systemd-resolved提供的DNS解析/緩衝能力,請按照以下步驟進行配置。

配置並啟用systemd-resolved服務

啟用systemd-resolved服務前,需要佈建服務,確保可以正常解析。

  1. 建立設定檔。建立檔案/etc/systemd/resolved.conf

    sudo vim /etc/systemd/resolved.conf
  2. i進入編輯模式,在設定檔中新增以下內容。按 ESC 退出編輯模式,按 :wq 儲存並退出。

    [Resolve] 
    DNSSEC=no
    MulticastDNS=no
    LLMNR=no
  3. 執行以下命令啟動服務並設定為開機自啟。

    sudo systemctl --now enable systemd-resolved

切換/etc/resolv.conf指向

由於Alibaba Cloud Linux 3預設/etc/resolv.conf為普通檔案,若啟用systemd-resolved管理該配置,需要將該檔案指向服務產生的動態檔案。按照以下步驟備份檔案並重建軟連結。

  1. 備份原有設定檔。

    sudo mv /etc/resolv.conf /etc/resolv.conf.bak
  2. 建立軟連結。將/etc/resolv.conf連結到systemd-resolved產生的實際設定檔。

    sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

配置NetworkManager對接

為了讓NetworkManager將擷取到的DNS資訊傳遞給systemd-resolved,需修改NetworkManager配置。

  1. 建立設定檔。建立檔案/etc/NetworkManager/conf.d/90-dns-systemd-resolved.conf

    sudo vim /etc/NetworkManager/conf.d/90-dns-systemd-resolved.conf
  2. i進入編輯模式,在設定檔中新增以下內容。按 ESC 退出編輯模式,按 :wq 儲存並退出。

    [main]
    dns=systemd-resolved
  3. 重載NetworkManager。

    sudo systemctl reload NetworkManager

驗證配置

完成上述步驟後,請執行以下檢查確認生效:

  1. 檢查連結狀態。

    ls -l /etc/resolv.conf

    預期輸出應顯示指向/run/systemd/resolve/stub-resolv.conf的軟連結。

    lrwxrwxrwx 1 root root ... /etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf
  2. 檢查解析狀態。若能正常輸出各網卡的DNS伺服器及網域名稱路由資訊,則表明服務運行正常。

    resolvectl status
  3. 測試解析,確認解析成功且延遲正常。

    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的軟連結。

  1. 刪除當前的軟連結。

    sudo rm /etc/resolv.conf
  2. 還原備份檔案。將此前步驟中備份的檔案還原為正式的設定檔。

    sudo mv /etc/resolv.conf.bak /etc/resolv.conf
  3. 驗證檔案屬性,確認/etc/resolv.conf已恢複。

    ls -l /etc/resolv.conf

    預期輸出首字元應為-(普通檔案),而非l(符號連結)。

    -rw-r--r-- 1 root root ... /etc/resolv.conf

重設NetworkManager配置

移除NetworkManager配置,恢複DNS預設行為。

  1. 刪除設定檔90-dns-systemd-resolved.conf,確保systemd-resolved不再接管DNS解析。

    sudo rm /etc/NetworkManager/conf.d/90-dns-systemd-resolved.conf
  2. 重載NetworkManager服務,此時NetworkManager會重新接管/etc/resolv.conf檔案。

    sudo systemctl reload NetworkManager

驗證回退結果

  1. 檢查服務狀態,應返回inactive

    systemctl is-active systemd-resolved
  2. 檢查解析功能,確認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檔案。