206
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
如何在Linux实例中自定义配置DNS?-阿里云服务器ECS使用教程

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   


点击这里点击这里进入阿里云ECS官方页面,立即免费体验云服务器ECS>>>

在创建ECS时,DNS服务器采用默认配置,不需要额外配置。若您的DNS服务器无法满足业务需求,可自行配置DNS。本文主要介绍在Linux实例中自定义配置DNS的方法。

方式一(推荐使用)

使用DHCP选项集

通过DHCP选项集功能,您可以为VPC中的ECS实例配置DNS服务器IP地址和域名。

方式二

步骤一:自定义配置DNS

Linux系统存在不同的发行版本,不同发行版本中自定义配置DNS的方法不同,请根据现场环境匹配下列发行版本的操作命令。DNS配置完成之后请完成步骤二操作,避免因为重启系统配置还原。

  • Alibaba Cloud Linux

    • Alibaba Cloud Linux 2/3

  • Ubuntu

    • Ubuntu 16

    • Ubuntu 18/20/22

  • CentOS

    • CentOS 6/7/8

  • Debian

    • Debian 9/10/11

  • SUSE Linux

    • SUSE Linux 12/15

  • OpenSUSE

    • OpenSUSE 15

  • AlmaLinux

    • AlmaLinux8/9

  • Rocky Linux

    • Rocky Linux 8/9

  • CentosStream

    • CentosStream 8/9

  • Fedora

    • Fedora 37

Alibaba Cloud Linux 2/3

在Alibaba Cloud Linux 2/3实例中自定义配置DNS的方法,请参见如何在Alibaba Cloud Linux 2实例中通过“/etc/resolv.conf”文件自定义配置DNS。

Ubuntu 18/20/22

目前常见的发行版大多使用的是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/22章节的步骤1,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。

  2. 执行以下命令,编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件。

     
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    1. i键切换至编辑模式,在文件底部添加以下配置,添加以下自定义DNS配置。

       
      PEERDNS=noDNS1=[223.5.XX.XX]DNS2=[223.6.XX.XX]

      修改之后的内容如下所示。

       
      BOOTPROTO=dhcpDEVICE=eth0ONBOOT=yesSTARTMODE=autoTYPE=EthernetUSERCTL=noPEERDNS=noDNS1=[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/Debian 11/Ubuntu 16

Debian9、Debian 10、Debian 11和Ubuntu 16系统使用的网络服务相同为networking,以下是在Debian 9、Debian 10、Debian 11和Ubuntu 16系统中自定义配置DNS的操作步骤:

说明

以下操作涉及配置文件内容的修改,修改文件之前,请先进行备份。

  1. 执行以下命令,编辑/etc/network/interfaces网卡配置文件。

    某些高版本系统网卡配置文件中若配置为 source /etc/network/interfaces.d/*,则需在文件 /etc/network/interfaces.d/50-cloud-init.cfg 中进行相应修改。

     
    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


AlmaLinux/Rocky Linux/CentosStream/Fedora

AlmaLinux8/9、Rocky Linux 8/9、CentosStream 8/9、Fedora 37 系统的DNS配置方式和Alibaba Cloud Linux 3系统一样,请参考如何在Alibaba Cloud Linux实例中通过“/etc/resolv.conf”文件自定义配置DNS

(可选)步骤二:锁定文件

配置完成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>为您需要测试的域名,请根据实际情况进行修改。


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!