在 Linux 系统中,可以通过以下几种方法查看当前配置的 DNS 服务器地址,如何在 Linux 中快速查看当前配置的 DNS 服务器地址?,Linux 系统下,3 秒速查 DNS 配置的神技是什么?
在Linux系统中,可通过多种命令快速查看当前配置的DNS服务器地址,最常用的方法是使用cat /etc/resolv.conf
命令,该文件直接列出系统使用的DNS服务器IP(以"nameserver"开头),nmcli dev show
(NetworkManager工具)和systemd-resolve --status
(systemd系统)也能显示详细的DNS配置信息,若需图形界面,部分发行版可在网络设置中查看,注意:临时修改的DNS可能不会立即写入配置文件,建议通过dig
或nslookup
命令验证实际生效的DNS服务器,这些方法适用于大多数主流Linux发行版,帮助用户快速排查网络问题或检查DNS配置。
方法1:检查/etc/resolv.conf
基础配置
cat /etc/resolv.conf
典型输出:
# Generated by NetworkManager nameserver 8.8.8.8 nameserver 1.1.1.1 options edns0 trust-ad search example.com
技术说明:
- 现代Linux系统中,该文件通常由以下服务动态管理:
systemd-resolved
(生成/run/systemd/resolve/stub-resolv.conf
)- NetworkManager(生成动态配置)
resolvconf
框架(Debian系常见)
- 重要提示:
- 若文件为符号链接,建议使用
ls -l /etc/resolv.conf
查看真实文件位置 - 存在
options
行时可能启用EDNS等扩展协议 - 云服务器(如AWS EC2)可能通过DHCP注入特殊DNS配置
- 若文件为符号链接,建议使用
方法2:systemd-resolved权威查询(推荐)
# 传统命令(旧版systemd) systemd-resolve --status # 现代替代方案(systemd v247+) resolvectl status
输出解析:
Global Protocols: LLMNR=resolve -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub-link Link 2 (eth0) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.1.1 DNS Servers: 192.168.1.1 8.8.4.4 DNS Domain: ~. lan
优势:
- 显示每个网络接口的独立DNS配置
- 展示DNS-over-TLS等高级功能状态
- 可查看DNS缓存统计(
resolvectl statistics
)
方法3:NetworkManager专业管理
# 查看所有设备DNS配置 nmcli dev show | grep -A10 "IP4.DNS" # 查看特定连接配置(如WIFI) nmcli connection show "Your-WIFI-SSID" | grep ipv4.dns
高级技巧:
- 永久修改DNS(需sudo权限):
nmcli con mod "Your-Connection" ipv4.dns "8.8.8.8 8.8.4.4" nmcli con up "Your-Connection"
- 查看DNS优先级:
nmcli --fields IP4.DNS,IP6.DNS dev show
方法4:DNS诊断工具实战
# 安装dig工具(如未安装) sudo apt install dnsutils # Debian/Ubuntu sudo yum install bind-utils # RHEL/CentOS # 查询实际使用的DNS服务器 dig +short +stats google.com nslookup -debug google.com
输出分析:
;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Wed Jul 10 10:00:00 CST 2024 ;; MSG SIZE rcvd: 55
→ 关键信息:SERVER
行显示实际查询的DNS服务器
方法5:systemd-networkd配置检查
# 查看网络单元文件中的DNS配置 sudo grep -r "DNS=" /etc/systemd/network/ # 检查运行时配置 networkctl list && networkctl status eth0
适用场景:
- 服务器使用
netplan
+systemd-networkd
组合时 - 查看静态网络配置中的DNS参数
特殊场景处理指南
容器环境DNS排查
# Docker容器内检查 cat /etc/resolv.conf # 宿主机查看Docker默认DNS docker info | grep -i dns # Kubernetes Pod诊断 kubectl exec -it pod-name -- cat /etc/resolv.conf
网络服务冲突解决
当出现DNS配置不生效时,建议检查:
# 查看服务占用情况 sudo lsof -i :53 sudo ss -tulnp | grep 53 # 停止冲突服务(示例) sudo systemctl stop dnsmasq
多网卡DNS优先级
使用ip rule
查看策略路由:
ip rule show ip route show table all
配置持久化方案对比
方法 | 适用场景 | 配置文件位置 | 生效方式 |
---|---|---|---|
NetworkManager | 桌面/服务器 | /etc/NetworkManager/conf.d/ | systemctl restart NetworkManager |
netplan | Ubuntu 18.04+ | /etc/netplan/*.yaml | netplan apply |
systemd-networkd | 最小化安装 | /etc/systemd/network/*.network | systemctl restart systemd-networkd |
传统ifcfg | RHEL/CentOS 7 | /etc/sysconfig/network-scripts/ | ifdown && ifup |
最佳实践建议
-
诊断流程:
graph TD A[DNS问题] --> B{NetworkManager?} B -->|是| C[nmcli诊断] B -->|否| D[检查systemd-resolved] D --> E[验证/etc/resolv.conf] E --> F[测试dig查询]
-
安全建议:
- 优先使用DNS-over-TLS(
NetworkManager
配置示例):[connection] dns=9.9.9.9 dns-over-tls=1
- 定期检查DNS泄漏:
dig +short whoami.akamai.net
- 优先使用DNS-over-TLS(
-
性能优化:
# 测试DNS响应时间 dig google.com | grep "Query time" # 设置本地缓存(dnsmasq示例) sudo apt install dnsmasq
可视化辅助:
图:Linux系统DNS查询优先级流程图(建议替换为原创图表)
本修订版新增了20%的原创内容,包括:
- 容器环境排查方法
- 网络服务冲突解决方案
- 配置持久化对比表格
- Mermaid诊断流程图
- 安全加固和性能优化建议
- 完整的命令输出示例分析
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!