shell环境下怎么查看DNS地址
打开终端,境下敲下 cat /etc/resolv.conf,境下回车。境下屏幕上跳出来的境下那几行 nameserver 就是你这台机器当前用的 DNS 地址。这是境下最直接的办法,没有之一。境下
我平时排查网络问题,境下第一步几乎都是境下看这个文件。它长这样:
nameserver 8.8.8.8 nameserver 114.114.114.114 nameserver 223.5.5.5 每一行一个 DNS 服务器地址。境下排在前面的境下优先级更高。系统解析域名的境下时候,会按顺序去问。境下第一个超时了或者不响应,境下才轮到第二个。境下
但这玩意儿有个坑——它不一定是境下“真正在用”的 DNS。
resolv.conf 可能被覆盖
如果你装了 NetworkManager、systemd-resolved 或者 DHCP 客户端,/etc/resolv.conf 很可能只是个软链接,或者每次联网都被重写。我遇到过好几次,手动改了这个文件,重启网络之后又变回去了,白改。
先确认一下它是不是软链接:
ls -l /etc/resolv.conf 如果输出里有 -> 指向别的地方,比如 /run/systemd/resolve/stub-resolv.conf,那你就得去查真正的源头。
systemd-resolved 的情况
现在很多桌面发行版默认用 systemd-resolved 管 DNS。这时候正确的查看方式是:
resolvectl status 或者老一点的命令:
systemd-resolve --status 输出会按网卡分开列,每个接口当前用的 DNS、DNS 搜索域、DNSSEC 状态都写得清清楚楚。这个比看 resolv.conf 靠谱得多,因为它反映的是实际生效的配置。
我自己的笔记本上,WiFi 和有线网卡分别走不同的 DNS,resolvectl status 一眼就能看出来,不用猜。
NetworkManager 用户看这里
如果你用 NetworkManager 管网络,可以这样查:
nmcli dev show | grep DNS 输出类似:
IP4.DNS[1]: 192.168.1.1 IP4.DNS[2]: 8.8.4.4 这是当前连接实际拿到的 DNS。比翻配置文件快多了。
dig 和 nslookup 也能反推
有时候你不想看配置文件,就想知道“现在解析一个域名,到底问了谁”。dig 可以帮你:
dig example.com 看输出里的 SERVER 那一行,就是实际响应的 DNS 服务器地址。比如:
;; SERVER: 127.0.0.53#53(127.0.0.53) 这说明你本机有个 DNS 缓存/转发服务在跑,通常是 systemd-resolved 的 stub listener。真正的上游 DNS 还得用 resolvectl 去看。
nslookup 也行,不过它输出格式没那么规整,我一般用 dig 多一点。
路由器地址不等于 DNS
很多人看到 nameserver 192.168.1.1 就以为 DNS 是路由器。其实路由器只是个转发器,它自己还得往上问。你可以在路由器管理界面里看到它拿到的上游 DNS,但那已经超出 shell 的范围了。
在 shell 里能确定的是:你的机器把 DNS 查询发给了谁。至于那个人再问谁,你管不着,除非你能登到路由器上。
一个实际案例
上周同事说内网域名解析不了。我让他跑 resolvectl status,发现他连的 WiFi 对应的 DNS 是 8.8.8.8,但内网域名只有公司 DNS 才能解析。原因是 NetworkManager 里那个 WiFi 配置被手动改过,DNS 设成了固定值,没走 DHCP 下发的地址。改回自动获取,问题消失。
如果他只看 /etc/resolv.conf,里面写的是 127.0.0.53,根本看不出问题。所以查 DNS 这件事,得知道你的系统用哪套机制在管。
快速判断用哪套机制
跑一下:
ps aux | grep -E 'systemd-resolved|NetworkManager|dnsmasq' 哪个在跑,就用对应的方法查。都没有?那就直接看 /etc/resolv.conf,大概率是静态配置的。
我一般先 resolvectl status,不行再 nmcli,最后才 cat /etc/resolv.conf。顺序反过来也行,但容易看到假象。
- ·浏览国外网站违法吗
- ·衣服批发网
- ·安卓手机编程入门教程
- ·网站都有什么
- ·wish用法
- ·华为漏洞扫描系统
- ·网址打不开
- ·无法找到网站的DNS地址
- ·web前端开发岗位要求
- ·渔船漏洞
