在麒麟操作系统中,域名系统(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
这是最直接的方法,但需要谨慎使用。
- 打开终端,使用具有管理员权限的账户。
- 使用文本编辑器(如
vi或nano)打开/etc/resolv.conf文件。sudo vi /etc/resolv.conf
- 修改或添加
nameserver行,要使用Google和Cloudflare的公共DNS:# Generated by NetworkManager nameserver 8.8.8.8 nameserver 1.1.1.1 - 保存文件并退出,配置立即生效。
注意:在现代麒麟系统中,NetworkManager服务会自动管理此文件,手动修改后,一旦网络重启或系统重启,修改内容很可能被覆盖,这使其仅适用于临时场景。
使用 nmcli 命令行工具
nmcli(NetworkManager Command-Line Interface)是控制NetworkManager的强大工具,通过它修改的配置更具持久性。
-
查看当前网络连接的名称:
nmcli connection show
输出可能类似如下,找到正在使用的连接名称(如
有线连接 1或Wired connection 1)。NAME UUID TYPE DEVICE 有线连接 1 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet eth0 -
为该连接设置DNS服务器:
sudo nmcli connection mod "有线连接 1" ipv4.dns "8.8.8.8 1.1.1.1"
请将
"有线连接 1"替换为您的实际连接名称,多个DNS服务器用空格隔开。 -
应用更改并重启网络连接:

sudo nmcli connection up "有线连接 1"
此方法修改的配置会被
NetworkManager持久化保存,即使重启也不会丢失。
永久配置方法(推荐)
对于服务器或需要稳定配置的环境,应采用永久配置方法。
图形用户界面(GUI)配置
麒麟桌面版(如UKUI桌面环境)提供了直观的图形化配置界面。
- 进入系统“控制面板”或“系统设置”。
- 找到“网络”或“网络连接”选项。
- 选择当前正在活动的网络连接(如有线或无线),点击“配置”或“设置”按钮。
- 在弹出的配置窗口中,切换到“IPv4设置”或“IPv6设置”选项卡。
- 将“方法”从“自动(DHCP)”更改为“自动(DHCP)地址仅”。
- 在下方的“DNS服务器”输入框中,填入您希望使用的DNS服务器IP地址,每行一个或用空格隔开。
- 点击“保存”或“应用”按钮,系统可能会提示需要重新激活网络连接,确认后配置即可生效。
修改网络配置文件(适用于服务器版)
对于无图形界面的麒麟服务器版,可以直接编辑网络接口的配置脚本,这些脚本通常位于/etc/sysconfig/network-scripts/目录下。
- 找到对应的网络接口配置文件,文件名通常为
ifcfg-<接口名>,例如ifcfg-eth0。cd /etc/sysconfig/network-scripts/ ls
- 使用编辑器打开该文件:
sudo vi ifcfg-eth0
- 在文件中添加或修改
DNS1和DNS2参数,如果BOOTPROTO为dhcp,添加这些参数会覆盖DHCP获取的DNS。BOOTPROTO=dhcp ONBOOT=yes ... DNS1=8.8.8.8 DNS2=114.114.114.114 - 保存文件并退出,然后重启网络服务以使配置生效:
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查询工具,提供详细的查询过程和结果。
dig @8.8.8.8 www.kernel.org
此命令强制使用指定的DNS服务器(8.8.8.8)进行查询,有助于排查特定DNS服务器的问题。
如果解析失败,请检查:
/etc/resolv.conf文件中的nameserver地址是否正确且可达。- 防火墙或安全策略是否阻止了UDP 53端口(DNS标准端口)的出站流量。
- 网络连接本身是否正常。
相关问答FAQs
我手动修改了 /etc/resolv.conf 文件,但每次重启系统或网络后,我的配置都消失了,这是为什么?
解答:这个现象在现代Linux发行版(包括麒麟操作系统)中非常普遍,原因是系统默认使用NetworkManager服务来管理网络连接。NetworkManager在启动或网络状态变更时,会根据其内部的连接配置文件(通过nmcli或GUI修改的)重新生成/etc/resolv.conf文件,从而覆盖您的手动修改,要使DNS配置永久生效,您应该通过nmcli命令行工具或图形界面来修改网络连接的DNS设置,或者直接编辑/etc/sysconfig/network-scripts/下的网络接口配置文件(如ifcfg-eth0)并添加DNS1、DNS2等参数,这样,NetworkManager在管理网络时会使用您预设的DNS信息。
在麒麟服务器上,我如何为不同的网络域名指定不同的DNS服务器(内部域名internal.com使用内部DNS,而外部域名使用公共DNS)?
解答:这种需求通常通过部署一个本地DNS转发器或缓存服务器(如dnsmasq或BIND)来实现,标准配置无法直接为不同域名指定不同的上游DNS服务器,基本步骤如下:
-
在麒麟服务器上安装
dnsmasq(sudo yum install dnsmasq)。 -
编辑
dnsmasq的配置文件(/etc/dnsmasq.conf)。 -
使用
server指令来指定特定域名的转发规则。# 所有查询默认转发到公共DNS server=8.8.8.8 # 但对 internal.com 域的查询,转发到内部DNS服务器 server=/internal.com/192.168.1.10 -
将本机的
/etc/resolv.conf中的nameserver指向0.0.1(即本机运行的dnsmasq服务)。 -
启动并启用
dnsmasq服务(sudo systemctl start dnsmasq&&sudo systemctl enable dnsmasq)。
这样,所有发往本机的DNS请求都会由dnsmasq处理,它会根据配置将请求智能地转发到相应的上游DNS服务器,实现了所谓的“拆分DNS”解析。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/250820.html