tencent cloud

文档反馈

如何在 Linux 实例中自定义 DNS 配置

最后更新时间:2024-12-23 16:02:38
    要在 Linux 实例中自定义修改 DNS 配置,需要根据不同版本和网络管理方式进行相应的调整。
    注意:
    以下操作涉及修改配置文件内容,建议您在修改配置文件之前,先进行备份。

    NetworkManager 方式管理网络

    如何判断是 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
    方法二:检查网络接口配置文件。
    1. 查看网络接口配置文件:传统的网络接口配置文件位于 /etc/sysconfig/network-scripts/ 目录下,文件名通常为 ifcfg-<interface-name>。
    2. 使用 NetworkManager 管理的接口:如果接口是由 NetworkManager 管理的,配置文件中通常会有一个 NM_CONTROLLED 参数,值为yes
    NM_CONTROLLED=yes
    3. 使用传统网络脚本管理的接口:如果接口是由传统网络脚本管理的,配置文件中通常会有一个 NM_CONTROLLED 参数,值为no
    NM_CONTROLLED=no

    NetworkManager 配置自定义 DNS

    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

    非 NetworkManager 方式管理网络

    传统的网络脚本来管理网络配置

    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

    Systemd-networkd 管理网络配置

    Ubuntu 18/20/22

    目前常见的发行版本大多使用的是 NetworkManager 服务进行网络管理,修改参见 NetworkManager 管理网络即可。但是从 Ubuntu 18系统开始,网络服务类型为 systemd-networkd,以下是在 Ubuntu 18、Ubuntu 20系统中自定义配置 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
    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

    Networking 管理网络配置

    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 lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers [172.10.XX.XX 172.6.XX.XX]
    2. 重启网络使服务生效。
    systemctl restart networking.service

    Wicked 网络管理工具

    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.XX]
    nameserver [223.2.XX.XX]
    2. 编辑 /etc/sysconfig/network/config 配置文件,将 NETCONFIG_MODULES_ORDER 参数的值删除,保留双引号符号(""),如下所示。
    NETCONFIG_MODULES_ORDER=""
    3. 重启网络使服务生效。
    service network restart
    注意:
    在 Linux 系统中,如果 /etc/sysconfig/network 文件仅设置了 PEERDNS=no,在切换 VPC 和子网的场景中,自定义 DNS 配置可能会被覆盖。
    对于非 DHCP 环境的设备,可以参考官方文档中关于 DNS 初始化(非 DHCP 场景)的部分进行处理。详细信息请参见:Cloud-Init 和 Cloudbase-Init 问题
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持