麒麟系统如何永久配置DNS才不会自动还原?

在麒麟操作系统中,域名系统(DNS)的配置是确保网络连通性和服务访问的关键环节,无论是访问互联网资源还是内部网络服务,正确的DNS设置都不可或缺,本文将系统性地介绍在麒麟操作系统中配置DNS的多种方法,从基础概念到高级技巧,旨在为系统管理员和用户提供一份清晰、实用的操作指南。

麒麟系统如何永久配置DNS才不会自动还原?

DNS基础与核心文件

在深入配置之前,理解DNS在Linux系统(麒麟操作系统基于Linux)中的工作原理和相关核心文件至关重要,DNS的主要作用是将人类易于记忆的域名(如www.example.com)解析为机器能够识别的IP地址(如93.184.216.34)。

在麒麟系统中,DNS解析主要依赖以下几个核心文件:

  • /etc/resolv.conf:这是最重要的DNS配置文件,它包含了DNS服务器的IP地址和本地域名搜索规则,系统在进行域名查询时,会首先参考此文件。
  • /etc/hosts:一个静态的本地域名解析文件,它的优先级高于DNS查询,可以在此文件中手动添加域名与IP地址的映射关系,用于快速访问或屏蔽特定网站。
  • /etc/nsswitch.conf:此文件定义了系统查询各种信息(包括主机名)的顺序和来源,它决定了系统是先查询/etc/hosts文件,还是先向DNS服务器发起请求。hosts文件的优先级被设置为高于dns

/etc/resolv.conf文件的关键配置项如下表所示:

配置项 功能描述 示例
nameserver 指定DNS服务器的IP地址,最多可指定三个。 nameserver 8.8.8.8
domain 定义本地域名,当查询一个不包含点的主机名时,系统会自动附加此域名。 domain mycompany.com
search 定义域名搜索列表,功能比domain更强大,可指定多个域名。 search mycompany.com local.net
options 设置DNS解析器的选项,如超时时间、尝试次数等。 options timeout:2 attempts:3

临时配置方法

临时配置适用于快速测试或短期使用,其配置在系统重启或网络服务重启后会失效。

直接编辑 /etc/resolv.conf

这是最直接的方法,但需要谨慎使用。

  1. 打开终端,使用具有管理员权限的账户。
  2. 使用文本编辑器(如vinano)打开/etc/resolv.conf文件。
    sudo vi /etc/resolv.conf
  3. 修改或添加nameserver行,要使用Google和Cloudflare的公共DNS:
    # Generated by NetworkManager
    nameserver 8.8.8.8
    nameserver 1.1.1.1
  4. 保存文件并退出,配置立即生效。

注意:在现代麒麟系统中,NetworkManager服务会自动管理此文件,手动修改后,一旦网络重启或系统重启,修改内容很可能被覆盖,这使其仅适用于临时场景。

使用 nmcli 命令行工具

nmcli(NetworkManager Command-Line Interface)是控制NetworkManager的强大工具,通过它修改的配置更具持久性。

  1. 查看当前网络连接的名称:

    nmcli connection show

    输出可能类似如下,找到正在使用的连接名称(如有线连接 1Wired connection 1)。

    NAME                UUID                                  TYPE      DEVICE
    有线连接 1         xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0
  2. 为该连接设置DNS服务器:

    sudo nmcli connection mod "有线连接 1" ipv4.dns "8.8.8.8 1.1.1.1"

    请将"有线连接 1"替换为您的实际连接名称,多个DNS服务器用空格隔开。

  3. 应用更改并重启网络连接:

    麒麟系统如何永久配置DNS才不会自动还原?

    sudo nmcli connection up "有线连接 1"

    此方法修改的配置会被NetworkManager持久化保存,即使重启也不会丢失。

永久配置方法(推荐)

对于服务器或需要稳定配置的环境,应采用永久配置方法。

图形用户界面(GUI)配置

麒麟桌面版(如UKUI桌面环境)提供了直观的图形化配置界面。

  1. 进入系统“控制面板”或“系统设置”。
  2. 找到“网络”或“网络连接”选项。
  3. 选择当前正在活动的网络连接(如有线或无线),点击“配置”或“设置”按钮。
  4. 在弹出的配置窗口中,切换到“IPv4设置”或“IPv6设置”选项卡。
  5. 将“方法”从“自动(DHCP)”更改为“自动(DHCP)地址仅”。
  6. 在下方的“DNS服务器”输入框中,填入您希望使用的DNS服务器IP地址,每行一个或用空格隔开。
  7. 点击“保存”或“应用”按钮,系统可能会提示需要重新激活网络连接,确认后配置即可生效。

修改网络配置文件(适用于服务器版)

对于无图形界面的麒麟服务器版,可以直接编辑网络接口的配置脚本,这些脚本通常位于/etc/sysconfig/network-scripts/目录下。

  1. 找到对应的网络接口配置文件,文件名通常为ifcfg-<接口名>,例如ifcfg-eth0
    cd /etc/sysconfig/network-scripts/
    ls
  2. 使用编辑器打开该文件:
    sudo vi ifcfg-eth0
  3. 在文件中添加或修改DNS1DNS2参数,如果BOOTPROTOdhcp,添加这些参数会覆盖DHCP获取的DNS。
    BOOTPROTO=dhcp
    ONBOOT=yes
    ...
    DNS1=8.8.8.8
    DNS2=114.114.114.114
  4. 保存文件并退出,然后重启网络服务以使配置生效:
    sudo systemctl restart network

    或者重启整个网络管理器:

    sudo systemctl restart NetworkManager

    这种方法是服务器配置的标准做法,具有极高的稳定性和持久性。

验证与故障排查

配置完成后,验证DNS是否正常工作至关重要。

  • ping 命令:通过域名测试网络连通性。

    ping www.baidu.com

    如果能收到来自IP地址的回复,说明DNS解析和网络连接均正常。

  • nslookup 命令:专门的DNS查询工具。

    nslookup www.github.com

    该命令会显示用于解析的DNS服务器以及最终解析出的IP地址。

  • dig 命令:功能更强大的DNS查询工具,提供详细的查询过程和结果。

    麒麟系统如何永久配置DNS才不会自动还原?

    dig @8.8.8.8 www.kernel.org

    此命令强制使用指定的DNS服务器(8.8.8.8)进行查询,有助于排查特定DNS服务器的问题。

如果解析失败,请检查:

  1. /etc/resolv.conf文件中的nameserver地址是否正确且可达。
  2. 防火墙或安全策略是否阻止了UDP 53端口(DNS标准端口)的出站流量。
  3. 网络连接本身是否正常。

相关问答FAQs

我手动修改了 /etc/resolv.conf 文件,但每次重启系统或网络后,我的配置都消失了,这是为什么?

解答:这个现象在现代Linux发行版(包括麒麟操作系统)中非常普遍,原因是系统默认使用NetworkManager服务来管理网络连接。NetworkManager在启动或网络状态变更时,会根据其内部的连接配置文件(通过nmcli或GUI修改的)重新生成/etc/resolv.conf文件,从而覆盖您的手动修改,要使DNS配置永久生效,您应该通过nmcli命令行工具或图形界面来修改网络连接的DNS设置,或者直接编辑/etc/sysconfig/network-scripts/下的网络接口配置文件(如ifcfg-eth0)并添加DNS1DNS2等参数,这样,NetworkManager在管理网络时会使用您预设的DNS信息。

在麒麟服务器上,我如何为不同的网络域名指定不同的DNS服务器(内部域名internal.com使用内部DNS,而外部域名使用公共DNS)?

解答:这种需求通常通过部署一个本地DNS转发器或缓存服务器(如dnsmasqBIND)来实现,标准配置无法直接为不同域名指定不同的上游DNS服务器,基本步骤如下:

  1. 在麒麟服务器上安装dnsmasqsudo yum install dnsmasq)。

  2. 编辑dnsmasq的配置文件(/etc/dnsmasq.conf)。

  3. 使用server指令来指定特定域名的转发规则。

    # 所有查询默认转发到公共DNS
    server=8.8.8.8
    # 但对 internal.com 域的查询,转发到内部DNS服务器
    server=/internal.com/192.168.1.10
  4. 将本机的/etc/resolv.conf中的nameserver指向0.0.1(即本机运行的dnsmasq服务)。

  5. 启动并启用dnsmasq服务(sudo systemctl start dnsmasq && sudo systemctl enable dnsmasq)。
    这样,所有发往本机的DNS请求都会由dnsmasq处理,它会根据配置将请求智能地转发到相应的上游DNS服务器,实现了所谓的“拆分DNS”解析。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/250820.html

Like (0)
小编小编
Previous 2025年10月3日 16:14
Next 2025年10月3日 16:48

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注