全部產品
Search
文件中心

:如何在Linux執行個體中自訂配置DNS

更新時間:Jun 19, 2024

在建立ECS時,DNS伺服器採用預設配置,不需要額外配置。若您的DNS伺服器無法滿足業務需求,可自行配置DNS。本文主要介紹在Linux執行個體中自訂配置DNS的方法。

步驟一:自訂配置DNS

Linux系統存在不同的發行版本,不同發行版本中自訂配置DNS的方法不同,請根據現場環境匹配下列發行版本的操作命令。DNS配置完成之後請完成步驟二操作,避免因為重啟系統配置還原。

Alibaba Cloud Linux 2/3

在Alibaba Cloud Linux 2/3執行個體中自訂配置DNS的方法,請參見如何在Alibaba Cloud Linux 2執行個體中通過“/etc/resolv.conf”檔案自訂配置DNS

Ubuntu 18/20

目前常見的發行版大多使用的是NetworkManager服務進行網路管理,但是從Ubuntu 18系統開始網路服務類型為systemd-networkd,以下是在Ubuntu 18、Ubuntu 20系統中自訂配置DNS的操作步驟:

說明

以下操作涉及設定檔內容的修改,修改檔案之前,請先進行備份。

  1. 執行以下命令,編輯/etc/cloud/cloud.cfg設定檔。

    vim /etc/cloud/cloud.cfg
    1. i鍵切換至編輯模式,在# Example datasource config內容上增加以下配置,關閉cloud-init中的自動設定網路的參數,避免網卡設定檔內容被覆蓋。

      network:
        config: disabled

      系統顯示類似如下,表示修改成功。 Dingtalk_20201029153704.jpg

    2. 修改完成後,按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。

  2. 執行以下命令,編輯/etc/netplan/50-cloud-init.yaml設定檔。

    vim /etc/netplan/50-cloud-init.yaml
    1. i鍵切換至編輯模式,在檔案底部添加以下配置,自訂配置DNS資訊。

      nameservers:
          addresses:[223.5.XX.XX,223.6.XX.XX]
    2. 修改之後的內容如下所示。

      network:
          version: 2
          ethernets:
              eth0:
                  dhcp4: true
                  match:
                      macaddress: 00:16:3e:13:42:71
                  set-name: eth0
                  nameservers:
                      addresses: [223.5.XX.XX,223.6.XX.XX]
      說明
      • eth0:配置的網卡名稱,本文以eth0網卡為例,使用者可根據實際環境修改。

      • dhcp4:ECS執行個體的網路設定預設為DHCP模式。

      • match:配置的MAC地址,本文以00:16:3e:13:42:71為例,使用者可根據實際環境修改。

      • nameservers:自訂配置的DNS資訊,本文以預設DNS IP地址223.5.XX.XX223.6.XX.XX為例,請按照實際情況填寫您自訂的DNS IP地址。

    3. 修改完成後,按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。

  3. 執行以下命令,應用網卡配置。

    netplan apply
  4. 執行以下命令,建立/run/systemd/resolve/resolv.conf檔案的軟連結,避免因為/etc/resolv.conf設定檔內容更新而導致配置還原。

    sudo ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf

CentOS 6/7/8

CentOS系統中,網路設定和DNS配置被兩個不同的服務進行管理,分別維護比較麻煩。

  • 網路服務

    • CentOS 6和CentOS 7系統中的網路服務為Network。

    • CentOS 8中的網路服務為NetworkManager.service。

  • DNS服務截止到CentOS 8系統,目前均使用systemd-resolved作為管理DNS的服務。

為了便於維護,您可以參考下列步驟,統一通過網路服務來管理網路和DNS配置,即DNS也配置在網卡設定檔中。

說明

以下操作涉及設定檔內容的修改,修改檔案之前,請先進行備份。

  1. 請參見Ubuntu 18/20章節的步驟1,關閉cloud-init中的自動設定網路的參數,避免網卡設定檔內容被覆蓋。

  2. 執行以下命令,編輯/etc/sysconfig/network-scripts/ifcfg-eth0設定檔。

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    1. i鍵切換至編輯模式,在檔案底部添加以下配置,添加以下自訂DNS配置。

      PEERDNS=no
      DNS1=[223.5.XX.XX]
      DNS2=[223.6.XX.XX]

      修改之後的內容如下所示。

      BOOTPROTO=dhcp
      DEVICE=eth0
      ONBOOT=yes
      STARTMODE=auto
      TYPE=Ethernet
      USERCTL=no
      PEERDNS=no
      DNS1=[223.5.XX.XX]
      DNS2=[223.6.XX.XX]
      說明
      • PEERDNS=no:表示不使用DHCP提供的DNS。

      • DNS1、DNS2:自訂配置的DNS資訊,本文以預設DNS IP地址223.5.XX.XX223.6.XX.XX為例,請按照實際情況填寫您自訂的DNS IP地址。

    2. 修改完成後,按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。

  3. 由於CentOS 6、CentOS 7、CentOS 8系統中重啟網路服務的操作命令不同,請根據現場情況,選擇以下對應的步驟,重啟網路服務。

    • CentOS 6:service network restart

    • CentOS 7:systemctl restart network

    • CentOS 8:

      • 重新載入所有網卡配置nmcli c reload

      • 啟用網卡nmcli d connect eth0

Debian 9/Debian 10/Ubuntu 16

Debian9、Debian 10和Ubuntu 16系統使用的網路服務相同為networking,以下是在Debian 9、Debian 10和Ubuntu 16系統中自訂配置DNS的操作步驟:

說明

以下操作涉及設定檔內容的修改,修改檔案之前,請先進行備份。

  1. 執行以下命令,編輯/etc/network/interfaces網卡設定檔。

    vim /etc/network/interfaces
    1. i鍵切換至編輯模式,在檔案底部添加以下配置,自訂配置DNS資訊。

      dns-nameservers [223.5.XX.XX 223.6.XX.XX]
    2. 修改之後的內容如下所示。

      auto lo
      iface lo inet loopback
      
      auto eth0
      iface eth0 inet dhcp
      dns-nameservers [223.5.XX.XX 223.6.XX.XX]
      說明
      • auto eth0:配置的網卡名稱,本文以eth0網卡為例,現場以實際環境為準。

      • iface eth0 inet dhcp:ECS執行個體的網路設定預設為DHCP模式。

      • dns-nameservers:自訂配置的DNS資訊,本文以預設DNS IP地址223.5.XX.XX223.6.XX.XX為例,請按照實際情況填寫您自訂的DNS IP地址。

    3. 修改完成後,按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。

  2. 然後執行以下命令,重啟網路服務。

    systemctl restart networking.service

SUSE Linux 12/SUSE Linux 15/OpenSUSE 15

目前常見的發行版大多使用的是NetworkManager服務進行網路管理,但是從SUSE Linux 12開始,SUSE Linux使用了Wicked網路管理工具進行網路管理。以下是在SUSE Linux 12、SUSE Linux 15、OpenSUSE 15系統中自訂配置DNS的操作步驟:

  1. 執行以下命令,編輯/etc/resolv.conf設定檔。

    vim /etc/resolv.conf
    1. i鍵切換至編輯模式,將nameserver參數的值修改為您自訂的DNS IP地址。

      nameserver [223.5.XX.XX]
      nameserver [223.6.XX.XX]
      說明

      nameserver:自訂配置的DNS資訊,本文以預設DNS IP地址223.5.XX.XX223.6.XX.XX為例,請按照實際情況填寫您自訂的DNS IP地址。

    2. 修改完成後,按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。

  2. 執行以下命令,編輯/etc/sysconfig/network/config設定檔。

    vim /etc/sysconfig/network/config
    1. i鍵切換至編輯模式,將NETCONFIG_MODULES_ORDER參數的值刪除,保留雙引號符號(""),如下所示。

      NETCONFIG_MODULES_ORDER=""
    2. 修改完成後,按下Esc鍵後,輸入:wq並斷行符號以儲存並關閉設定檔。

  3. 執行以下命令,重啟網路服務。

    service network restart

(可選)步驟二:鎖定檔案

配置完成DNS後,可通過重啟伺服器的方式檢測是否配置成功。由於部分鏡像上安裝了高版本的cloud-init,重啟伺服器cloud-init會自動重設網路設定,您可以參考以下方式鎖定設定檔,避免因為重啟系統而導致設定檔內容重設。

說明

如果想瞭解關於cloud-init的更多資訊,請參見cloud-init的官方文檔

  • 鎖定設定檔: 以/etc/resolv.conf檔案為例,執行以下命令,將該檔案鎖定。

    chattr +i /etc/resolv.conf
  • 解鎖設定檔:

    1. 如果您需要再次對鎖定檔案進行修改,則執行以下命令,解鎖檔案。

      chattr -i /etc/resolv.conf
    2. 執行以下命令,確認網域名稱可以正常解析。

      nslookup <$Domain>
      說明

      <$Domain>為您需要測試的網域名稱,請根據實際情況進行修改。