云服务器 如何在 Linux 实例中自定义 DNS 配置

要在 Linux 实例中自定义修改 DNS 配置,需要根据不同版本和网络管理方式进行相应的调整。

相关产品
云服务器 产品页,含版本规格、价格与购买入口。

注意:以下操作涉及修改配置文件内容,建议你在修改配置文件之前,先进行备份。

一、如何判断是 NetworkManager 在管理网络

方法一:查看 NetworkManager 服务状态。

sudo systemctl status NetworkManager

如果输出显示 NetworkManager 服务正在运行,则表示 NetworkManager 正在管理网络。

示例输出:

● NetworkManager.service – Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-11-21 12:34:56 UTC; 1 day 12h ago

方法二:检查网络接口配置文件。

注意:使用此方法前需要确保/etc/sysconfig/network-scripts/目录存在,且目录下包含名为 ifcfg-<interface-name> 的配置。

1. 查看网络接口配置文件:传统的网络接口配置文件位于 /etc/sysconfig/network-scripts/ 目录下,文件名通常为 ifcfg-<interface-name>。

2. 使用 NetworkManager 管理的接口:如果接口是由 NetworkManager 管理的,配置文件中通常会有一个 NM_CONTROLLED 参数,值为yes。

NM_CONTROLLED=yes

3. 使用传统网络脚本管理的接口:如果接口是由传统网络脚本管理的,配置文件中通常会有一个 NM_CONTROLLED 参数,值为no。

NM_CONTROLLED=no

二、TencentOS Server 3.X/TencentOS Server 4.X

如果系统默认通过 NetworkManager 管理网络,并且仅在 /etc/sysconfig/network 文件中设置了 PEERDNS=no,那么在涉及重启的操作中,自定义的 DNS 设置将会被覆盖。

推荐你新增一个配置文件 /etc/NetworkManager/conf.d/90-dns-none.conf,该方案在重启或者切换子网切换 VPC 几种场景下经验证均不会被覆盖。

在/etc/NetworkManager/conf.d/90-dns-none.conf增加如下配置:

[main]dns=none

三、RHEL/CentOS7

1. 系统通过使用传统的网络脚本来管理网络配置。这些脚本存放在 /etc/sysconfig/network-scripts/ 目录中,而 DNS 配置则位于 /etc/resolv.conf 文件中。为了防止 /etc/resolv.conf 文件被 DHCP 获取的 DNS IP 地址覆盖,你需要修改 /etc/sysconfig/network 文件并添加以下一行内容:

PEERDNS=no

2. 然后重启网络服务生效。

注意:警告:

注意:重启网络服务可能导致短暂网络中断,影响业务正常运行,请谨慎选择合适时间操作。

四、TencentOS Server 2.X

TencentOS Server 2.X 系列默认使用 network 来管理网络。如果 TencentOS Server 2.X 需要切换子网或者切换 VPC,建议先安装 NetworkManager 软件包并改用 NetworkManager 来管理网络。如果不采用 NetworkManager 管理网络,你可以锁定文件编辑权限。

·采用 NetworkManager 管理网络

1.1 安装 NetworkManager。

yum install NetworkManager

1.2 在 /etc/NetworkManager/conf.d/90-dns-none.conf 文件中添加如下两行:

[main]dns=none

·采用锁定文件编辑权限,避免 resolv.conf 被覆盖。

执行如下命令:

chattr +i /etc/resolv.conf

五、Ubuntu 18/20/22

目前常见的发行版本大多使用的是 NetworkManager 服务进行网络管理,修改参见 NetworkManager 管理网络即可。但是从 Ubuntu 18系统开始,网络服务类型为 systemd-networkd,以下是在 Ubuntu 18、Ubuntu 20、Ubuntu 22系统中自定义配置 DNS 的操作步骤:

1. 编辑 /etc/cloud/cloud.cfg,关闭 cloud-init 中的自动配置网络参数,避免网卡配置文件内容被覆盖。

network: config: disabled

2. 编辑 /etc/netplan/50-cloud-init.yaml配置文件,增加自定义 DNS 配置信息。

nameservers: addresses: [172.10.XX.XX,172.6.XX.XX]

修改后效果如下:

network: version: 2 ethernets: eth0: dhcp4: true dhcp4-overrides: use-dns: false match: macaddress: 00:11:3e:13:42:7b set-name: eth0 nameservers: addresses: [172.10.XX.XX,172.6.XX.XX]

3. 执行如下命令使服务生效。

netplan apply

4. 执行以下命令建立 /run/systemd/resolve/resolv.conf 文件的软链接,避免因为 /etc/resolv.conf 配置文件内容更新而导致配置还原。

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

六、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 中进行相应修改。编辑 /etc/network/interfaces 添加如下信息:

dns-nameservers 172.10.XX.XX 172.6.XX.XX

修改后效果如下:

auto loiface lo inet loopbackauto eth0iface eth0 inet dhcpdns-nameservers 172.10.XX.XX 172.6.XX.XX

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 配置文件。

nameserver 223.1.XX.XXnameserver 223.2.XX.XX

2. 编辑 /etc/sysconfig/network/config 配置文件,将 NETCONFIG_MODULES_ORDER 参数的值删除,保留双引号(""),如下所示。

NETCONFIG_MODULES_ORDER=""

3. 重启网络使服务生效。

service network restart

赞 (0)
上一篇 4天前
下一篇 4天前