暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何在Linux操作系统中自定义配置DNS

原创 watson 2022-11-24
2091

Linux系统存在不同的发行版本,不同发行版本中自定义配置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:[$DNS1, $DNS2]
    2. 修改之后的内容如下所示。

      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地址。
    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. 关闭cloud-init中的自动配置网络的参数,避免网卡配置文件内容被覆盖。
  2. 执行以下命令,编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件。

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

      PEERDNS=no
      DNS1=[$DNS1]
      DNS2=[$DNS2]
      修改之后的内容如下所示。

      BOOTPROTO=dhcp
      DEVICE=eth0
      ONBOOT=yes
      STARTMODE=auto
      TYPE=Ethernet
      USERCTL=no
      PEERDNS=no
      DNS1=[$DNS1]
      DNS2=[$DNS2]
      说明:
      • PEERDNS=no:表示不使用DHCP提供的DNS。
      • DNS1、DNS2:自定义配置的DNS信息,请按照实际情况填写您自定义的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 [$DNS1 $DNS2]
    2. 修改之后的内容如下所示。

      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信息。
    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 [$DNS1]
      nameserver [$DNS2]
      说明:两个nameserver参数的值都要修改为您自定义的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后,可通过重启服务器的方式检测是否配置成功。为防止会自动重置网络配置,可以参考以下方式锁定配置文件,避免因为重启系统而导致配置文件内容重置。

  • 锁定配置文件:
    /etc/resolv.conf文件为例,执行以下命令,将该文件锁定。

    chattr +i /etc/resolv.conf
  • 解锁配置文件:
    • 如果您需要再次对锁定文件进行修改,则执行以下命令,解锁文件。

      chattr -i /etc/resolv.conf
    • 执行以下命令,确认域名可以正常解析。

      nslookup [$Domain]
      说明:[$Domain]为您需要测试的域名。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论