是否考虑过使用 NetworkManager 的交互式工具 nmtui 配置 DNS,或许能简化操作流程?
如何通过 nmcli 配置 Rocky Linux 9 中的 DNS 服务器并测试连接?
-
查看当前网络连接:
nmcli con show
记录需要配置的 connection 名称(如 enp0s3)。
-
配置 DNS 服务器:
sudo nmcli con mod <connection名称> ipv4.dns "8.8.8.8 8.8.4.4"
多个 DNS 用空格分隔,若需追加而非覆盖则用
+ipv4.dns
-
应用配置并重启连接:
sudo nmcli con down <connection名称> sudo nmcli con up <connection名称>
-
验证 DNS 配置:
cat /etc/resolv.conf # 确认显示配置的 DNS nslookup google.com # 测试域名解析 ping -c3 google.com # 验证网络连通性
-
排错建议:
- 若未生效,检查 NetworkManager 服务状态
systemctl status NetworkManager
- 使用
dig @8.8.8.8 google.com
指定 DNS 测试解析 - 防火墙需开放 DNS 端口:
sudo firewall-cmd --add-service=dns --permanent
- 若未生效,检查 NetworkManager 服务状态
更多回答
通过 nmcli 配置 Rocky Linux 9 的 DNS 服务器并测试连接的步骤如下:
-
查看当前网络连接
nmcli con show
记录需配置的 connection 名称(如 eth0、enp0s3)。
-
设置 DNS 服务器
sudo nmcli con mod <CONNECTION_NAME> ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli con mod <CONNECTION_NAME> ipv6.dns "2001:4860:4860::8888"
多个 DNS 用空格分隔,支持 IPv4/IPv6。
-
应用配置并重启网络
sudo nmcli con down <CONNECTION_NAME> && sudo nmcli con up <CONNECTION_NAME>
-
验证 DNS 配置
nmcli con show <CONNECTION_NAME> | grep dns cat /etc/resolv.conf resolvectl status
-
测试 DNS 解析
dig @8.8.8.8 google.com +short # 指定 DNS 服务器测试 nslookup google.com # 测试系统级解析 ping -c4 google.com # 验证网络连通性
注意:
- 若使用 DHCP,需添加
ipv4.ignore-auto-dns yes
参数 - 若存在 NetworkManager 与 systemd-resolved 冲突,可通过
systemctl restart NetworkManager
重置 - 防火墙需放行 DNS 端口(udp/53)
-
查看当前网络连接名称:
nmcli connection show
记录使用的连接名称(如eth0)。
-
配置DNS服务器:
sudo nmcli con mod <连接名称> ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli con mod <连接名称> ipv4.ignore-auto-dns yes
(将<连接名称>替换为实际名称,DNS地址可按需修改)
-
应用配置:
sudo nmcli con down <连接名称> sudo nmcli con up <连接名称>
-
验证配置:
cat /etc/resolv.conf nmcli con show <连接名称> | grep dns
-
测试DNS解析:
ping -c3 google.com # 测试基础解析 nslookup rocky.org # 检查解析过程 dig @8.8.8.8 google.com # 指定DNS服务器测试
步骤一:查看当前网络连接
- 执行
nmcli con show
获取活跃连接名称(如ens192
)。
步骤二:配置DNS
- 添加主备DNS:
nmcli con mod <连接名> ipv4.dns "8.8.8.8 1.1.1.1"
- 禁用DHCP的DNS覆盖:
nmcli con mod <连接名> ipv4.ignore-auto-dns yes
- 应用配置:
nmcli con down <连接名>
后执行nmcli con up <连接名>
步骤三:验证配置
- 检查
/etc/resolv.conf
是否包含新DNS。 - 使用
dig example.com
或nslookup example.com
测试解析。 - 通过
ping -c 4 example.com
验证连通性。
实践中遇到的挑战
- 多网络配置冲突:若存在多个连接(如VPN),需通过
nmcli con priority
调整优先级。 - DNS缓存干扰:旧DNS缓存可能导致测试失败,需用
resolvectl flush-caches
清除。 - NetworkManager与手动配置冲突:手动修改
/etc/resolv.conf
会被覆盖,需通过chattr +i /etc/resolv.conf
锁定(不推荐,优先用nmcli)。 - 防火墙限制:若DNS服务器位于外部,需确保53端口开放,使用
firewall-cmd --add-service=dns --permanent
放行。
关键经验
- 使用
nmcli -f all con show <连接名>
可查看完整DNS参数,避免遗漏IPv6配置。 - 生产环境中建议通过Ansible等工具批量部署,避免手动操作不一致。
- 若DNS响应缓慢,可通过
time dig example.com
定位延迟环节。
-
配置DNS服务器:
- 查看当前连接名称:
nmcli con show
- 修改对应连接的DNS(示例连接名enp0s3):
nmcli con mod enp0s3 ipv4.dns "8.8.8.8 8.8.4.4" nmcli con mod enp0s3 ipv4.ignore-auto-dns yes
- 应用配置:
nmcli con down enp0s3 && nmcli con up enp0s3
- 查看当前连接名称:
-
验证配置:
- 检查resolv.conf:
cat /etc/resolv.conf
- 测试DNS解析:
nslookup example.com dig google.com
- 验证网络连通性:
ping -c4 example.com curl -I https://example.com
- 检查resolv.conf:
注意:需替换enp0s3为实际网络接口名,DNS地址建议同时配置主备服务器。企业内网需优先指定内部DNS,再添加公共DNS作为备用。
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别