下面来和87cloud一起了解阿里云国际版如何在Linux服务器中自定义配置DNS:
概述创建ECS时,DNS服务器采用默认配置,不需要额外配置。若您的DNS服务器无法满足业务需求,可参考本文在云服务器ECS或弹性裸金属服务器中自定义配置DNS。
详细信息阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
Linux系统存在不同的发行版本,不同发行版本中自定义配置DNS的方法不同,请根据现场环境匹配下列发行版本的操作命令。DNS配置完成之后请参见文件锁定方式,避免因为重启系统配置还原。
- Alibaba Cloud Linux 2
- Alibaba Cloud Linux 2
- Ubuntu
- Ubuntu 16
- Ubuntu 18/20
- CentOS
- CentOS 6/7/8
- Debian
- Debian 9/10
- SUSE Linux
- SUSE Linux 12/15
- OPENSUSE
- OPENSUSE 15
在Alibaba Cloud Linux 2实例中自定义配置DNS的方法,请参见如何在Alibaba Cloud Linux 2实例中通过“/etc/resolv.conf”文件自定义配置DNS。
Ubuntu 18/20目前常见的发行版大多使用的是NetworkManager服务进行网络管理,但是从Ubuntu 18系统开始网络服务类型为systemd-networkd,以下是在Ubuntu 18、Ubuntu 20系统中自定义配置DNS的操作步骤:
说明:以下操作涉及配置文件内容的修改,修改文件之前,请先进行备份。
- 执行以下命令,编辑
/etc/cloud/cloud.cfg
配置文件。vim /etc/cloud/cloud.cfg
- 按
i
键切换至编辑模式,在# Example datasource config
内容上增加以下配置,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。network: config: disabled
系统显示类似如下。 - 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,编辑
/etc/netplan/50-cloud-init.yaml
配置文件。vim /etc/netplan/50-cloud-init.yaml
- 按
i
键切换至编辑模式,在文件底部添加以下配置,自定义配置DNS信息。nameservers: addresses:[$DNS1, $DNS2]
- 修改之后的内容如下所示。
network: version: 2 ethernets: eth0: dhcp4: true match: macaddress: 00:16:3e:13:42:71 set-name: eth0 nameservers: addresses: [$DNS1, $DNS2]
说明:- eth0:配置的网卡名称,本文以eth0网卡为例,现场以实际环境为准。
- dhcp4:ECS实例的网络配置默认为DHCP模式。
- match:配置的MAC地址,本文以
00:16:3e:13:42:71
为例,现场以实际环境为准。 - nameservers:自定义配置的DNS信息,请按照实际情况填写您自定义的DNS IP地址。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,应用网卡配置。
netplan apply
- 执行以下命令,建立
/run/systemd/resolve/resolv.conf
文件的软连接,避免因为/etc/resolv.conf
配置文件内容更新而导致配置还原。sudo ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf
CentOS系统中,网络配置和DNS配置被两个不同的服务进行管理,分别维护比较麻烦。
- 网络服务
- CentOS 6和CentOS 7系统中的网络服务为Network。
- CentOS 8中的网络服务为NetworkManager.service。
- DNS服务 截止到CentOS 8系统,目前均使用systemd-resolved作为管理DNS的服务。
为了便于维护,您可以参考下列步骤,统一通过网络服务来管理网络和DNS配置,即DNS也配置在网卡配置文件中。
说明:以下操作涉及配置文件内容的修改,修改文件之前,请先进行备份。
- 请参见Ubuntu 18/20,关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。
- 执行以下命令,编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
配置文件。vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 按
i
键切换至编辑模式,在文件底部添加以下配置,添加以下自定义DNS配置。PEERDNS=no DNS1=[$DNS1] DNS2=[$DNS1]
修改之后的内容如下所示。BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no PEERDNS=no DNS1=[$DNS1] DNS2=[$DNS1]
说明:- PEERDNS=no:表示不使用DHCP提供的DNS。
- DNS1、DNS2:自定义配置的DNS信息,请按照实际情况填写您自定义的DNS IP地址
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 由于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
。
- 重新加载所有网卡配置
- CentOS 6:
Debian9、Debian 10和Ubuntu 16系统使用的网络服务相同为networking,以下是在Debian 9、Debian 10和Ubuntu 16系统中自定义配置DNS的操作步骤:
说明:以下操作涉及配置文件内容的修改,修改文件之前,请先进行备份。
- 执行以下命令,编辑
/etc/network/interfaces
网卡配置文件。vim /etc/network/interfaces
- 按
i
键切换至编辑模式,在文件底部添加以下配置,自定义配置DNS信息。dns-nameservers [$DNS1 $DNS2]
- 修改之后的内容如下所示。
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp dns-nameservers [$DNS1 $DNS2]
说明:- auto eth0:配置的网卡名称,本文以eth0网卡为例,现场以实际环境为准。
- iface eth0 inet dhcp:ECS实例的网络配置默认为DHCP模式。
- dns-nameservers:为自定义配置的DNS信息。
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 然后执行以下命令,重启网络服务。
systemctl restart networking.service
目前常见的发行版大多使用的是NetworkManager服务进行网络管理,但是从SUSE Linux 12开始,SUSE Linux使用了Wicked网络管理工具进行网络管理。以下是在SUSE Linux 12、SUSE Linux 15、OPENSUSE 15系统中自定义配置DNS的操作步骤:
- 执行以下命令,编辑
/etc/resolv.conf
配置文件。vim /etc/resolv.conf
- 按
i
键切换至编辑模式,将nameserver
参数的值修改为您自定义的DNS IP地址。nameserver [$DNS1] nameserver [$DNS2]
说明:两个nameserver
参数的值都要修改为您自定义的DNS IP地址。 - 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,编辑
/etc/sysconfig/network/config
配置文件。vim /etc/sysconfig/network/config
- 按
i
键切换至编辑模式,将NETCONFIG_MODULES_ORDER
参数的值删除,保留双引号符号(""),如下所示。NETCONFIG_MODULES_ORDER=""
- 修改完成后,按下
Esc
键后,输入:wq
并回车以保存并关闭配置文件。
- 按
- 执行以下命令,重启网络服务。
service network restart
配置完成DNS后,可通过重启服务器的方式检测是否配置成功。由于部分镜像上安装了高版本的cloud-init,重启服务器cloud-init会自动重置网络配置,您可以参考以下方式锁定配置文件,避免因为重启系统而导致配置文件内容重置:
说明:如果想了解关于cloud-init的更多信息,请参见cloud-init的官方文档。
- 锁定配置文件: 以
/etc/resolv.conf
文件为例,执行以下命令,将该文件锁定。chattr +i /etc/resolv.conf
- 解锁配置文件:
- 如果您需要再次对锁定文件进行修改,则执行以下命令,解锁文件。
chattr -i /etc/resolv.conf
- 执行以下命令,确认域名可以正常解析。
nslookup [$Domain]
说明:[$Domain]为您需要测试的域名。
- 如果您需要再次对锁定文件进行修改,则执行以下命令,解锁文件。