是否考虑过使用 NetworkManager 的交互式工具 nmtui 配置 DNS,或许能简化操作流程?
如何通过 nmcli 配置 Rocky Linux 9 中的 DNS 服务器并测试连接?
通过 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记录需要配置的 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 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作为备用。
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别