Linux 服务器 DNS 配置指南 (CentOS 7 / 麒麟 V10)

适用范围: CentOS 7, 银河麒麟 V10, 以及其他使用 NetworkManager 管理网络的 Linux 发行版。
核心工具: nmcli (NetworkManager Command Line Interface)

操作流程

第一步:环境诊断与确认

在修改之前,先确认网卡名称及当前 DNS 管理状态。

1. 确认网卡信息

bash 复制代码
# 查看简要网卡列表
ip -br addr
> lo               UNKNOWN        127.0.0.1/8 ::1/128
> eth0             UP             192.168.1.100/24 2001:db8::1/64
> docker0          DOWN           172.17.0.1/16
> virbr0           DOWN           192.168.122.1/24
# 或查看详情
ip addr
> 很多东西 不好用

2. 检查 DNS 管理状态

查看 /etc/resolv.conf 文件头部的注释:

bash 复制代码
cat /etc/resolv.conf

如果输出内容包含NetworkManager,证明被NetworkManager管理,可以采用接下来的方法

bash 复制代码
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8

或是测试命令:

bash 复制代码
systemctl status NetworkManager

输出active 证明被NetworkManager 管理。

如果显示inactivenot found 或测试 systemctl status network 显示 active (running) ,请搜索被 network 管理的修改方法。

第二步:配置 DNS 参数

1. 修改dns配置

bash 复制代码
# 设置首选和备用 DNS
# 语法: nmcli con mod <连接名> ipv4.dns "首选DNS 备选DNS"
# 示例 (假设连接名为 eth0,使用阿里和腾讯 DNS)
nmcli con mod "eth0" ipv4.dns "223.5.5.5 119.29.29.29"

2. 确定是否通过 DHCP 获取 IP

bash 复制代码
# 查看所有连接的 IP 获取方式
nmcli connection show
# 网卡输出示例
NAME      UUID                                  TYPE      DEVICE
eth0      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0

# 查看具体网卡的 DHCP 状态
nmcli connection show eth0 | grep -i dhcp

如果输出ipv4.method: auto或者DHCP4.OPTION...: server_id则说明通过dhcp获取ip。

如果启动了dhcp,则需要执行以下命令防止自动覆盖dns。

bash 复制代码
nmcli con mod eth0 ipv4.ignore-auto-dns yes

3. 重启网卡

bash 复制代码
nmcli con up eth0

第四步:验证配置

查看 DNS 是否已更新

bash 复制代码
# 查看 DNS 是否已更新
nmcli dev show eth0 | grep DNS

再测试下dns解析是否生效

bash 复制代码
# 2. 测试DNS解析
nslookup www.baidu.com
# 或
dig www.baidu.com
# 或
ping www.baidu.com
相关推荐
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo4 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者6 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo6 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10157 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao8 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3109 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql