DNS(域名系统)是互联网的“电话簿”,负责将人类易于记忆的域名(如 www.google.com)解析为机器能够识别的 IP 地址(如 250.191.78),当您遇到网站打不开、解析缓慢等问题时,使用这些命令可以帮助您诊断和排查问题。

以下是几个最核心和常用的 DNS 命令,从最基础到更高级。
nslookup (Name Look Up)
这是最基础、最经典的 DNS 查询工具,用于查询域名对应的 IP 地址或反向查询 IP 对应的域名。
基本用法:
在命令行(Windows 的 cmd 或 PowerShell,macOS/Linux 的 Terminal)中输入 nslookup,然后按回车。

示例 1:查询 A 记录(域名到 IP 的映射)
nslookup www.baidu.com
输出示例:
Server: 192.168.1.1 # 通常是你路由器或本地 DNS 服务器的地址
Address: 192.168.1.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 182.61.200.7
Name: www.a.shifen.com
Address: 182.61.200.6
- 解释:
nslookup首先告诉你它使用了哪个 DNS 服务器(Server),然后返回了www.baidu.com的解析结果,并显示其规范名是www.a.shifen.com,最后给出了对应的两个 IP 地址(用于负载均衡)。
示例 2:查询指定 DNS 服务器的结果
如果你想使用公共 DNS 服务器(如 Google DNS 8.8.8)来查询,可以这样:

nslookup www.github.com 8.8.8.8
示例 3:反向查询(IP 到域名)
nslookup 8.8.8.8
输出示例: `` Server: your.local.dns.server Address: your.local.dns.server#53
Non-authoritative answer: 8.8.8.8.in-addr.arpa name = dns.google. Authoritative answers can be found from:
---
### 2. `dig` (Domain Information Groper)
`dig` 是一个功能更强大、更灵活的 DNS 查询工具,在 macOS 和 Linux 系统中默认安装,但在 Windows 中需要手动安装(例如通过 BIND 安装包或 Windows Subsystem for Linux)。
`dig` 提供了比 `nslookup` 更详细、更结构化的输出,非常适合网络管理员进行深度诊断。
**基本用法:**
```bash
dig www.example.com
输出示例(简化):
; <<>> DiG 9.16.1-Ubuntu <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 300 IN A 93.184.216.34
;; Query time: 15 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Oct 24 10:30:00 CST 2025
;; MSG SIZE rcvd: 56
- 解释:
QUESTION SECTION:显示了你的查询请求。ANSWER SECTION:显示了 DNS 服务器返回的最终答案。Query time:查询耗时,对判断延迟很有用。SERVER:本次查询使用的 DNS 服务器。
常用选项:
@<服务器>:指定 DNS 服务器,如dig @8.8.8.8 www.example.com。+short:只返回答案,简化输出,非常适合脚本使用。dig +short www.example.com # 输出: 93.184.216.34
+trace:追踪 DNS 查询的完整路径,从根域名服务器开始,一步步查到最终结果,是排查 DNS 解析链路问题的利器。dig +trace www.example.com
ping
ping 命令通过 ICMP 协议测试与另一台主机的网络连接,但它首先会进行一次 DNS 解析。ping 一个域名失败,第一步就应该检查 DNS 是否能解析成功。
基本用法:
ping www.google.com
输出示例(开头部分): `` Pinging www.google.com [142.250.191.78] with 32 bytes of data: Reply from 142.250.191.78: bytes=32 time=15ms TTL=118 ...
* **解释**:从输出中可以看到,`ping` 成功地将 `www.google.com` 解析为 `142.250.191.78`,然后开始与该 IP 地址进行通信,如果这里显示 "Ping request could not find host www.google.com",则说明 DNS 解析失败。
---
### 4. `ipconfig` (仅限 Windows)
`ipconfig` 是 Windows 系统下查看和管理网络配置的命令,其中与 DNS 相关的功能非常重要。
**常用子命令:**
* `ipconfig /displaydns`:显示本地 DNS 解析器缓存的内容,这个缓存包含了最近查询过的 DNS 记录,可以用来确认你的电脑是否已经成功解析过某个域名。
```bash
ipconfig /displaydns
ipconfig /flushdns:刷新 DNS 解析缓存,这是解决 DNS 问题的“万能钥匙”,当本地缓存中的记录已过期或损坏时,刷新缓存可以让系统重新从 DNS 服务器获取最新的记录。ipconfig /flushdns
执行后通常会显示“已成功刷新 DNS 解析缓存”。
cat /etc/resolv.conf (仅限 Linux/macOS)
这个文件列出了当前系统正在使用的 DNS 服务器地址,在 Linux 和 macOS 上,系统会按照这个文件中的顺序来查询 DNS。
查看方法:
cat /etc/resolv.conf
输出示例:
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub listener of systemd-resolved(8). This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see detailed information about this
# resolved configuration.
#
# Third-party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage resolv.conf(5), change this symlink
# via systemd-links(8).
#
nameserver 127.0.0.53
- 解释:
nameserver行后面的 IP 地址就是系统当前使用的 DNS 服务器。0.0.53通常表示系统正在使用systemd-resolved或mDNSResponder本地服务。
systemd-resolve --status (现代 Linux 系统)
对于使用 systemd-resolved 服务的新版 Linux(如 Ubuntu 18.04+),这个命令可以提供非常详细的 DNS 信息,包括使用的 DNS 服务器、搜索域、DNS 缓存状态等。
systemd-resolve --status
总结与故障排查流程
| 命令 | 主要用途 | 适用系统 |
|---|---|---|
nslookup |
基础 DNS 查询,正向/反向解析 | 所有系统 |
dig |
高级、详细 DNS 查询,支持追踪 | macOS, Linux, WSL |
ping |
测试网络连通性(隐含 DNS 解析) | 所有系统 |
ipconfig /flushdns |
刷新本地 DNS 缓存 | Windows |
cat /etc/resolv.conf |
查看系统配置的 DNS 服务器 | Linux, macOS |
systemd-resolve --status |
查看 DNS 服务的详细状态 | Linux (systemd) |
简单故障排查流程:
- 确认问题:尝试访问一个网站,打不开。
- 检查 DNS 解析:
- 使用
ping www.example.com。 - 如果提示 "could not find host",则确认是 DNS 问题。
- 使用
- 尝试公共 DNS:
- 使用
nslookup www.example.com 8.8.8.8或dig @8.8.8.8 www.example.com。 - 如果能解析:说明是你的本地网络或 ISP 的 DNS 服务器有问题。
- 如果仍然不能解析:可能是网站本身的问题或网络连接问题。
- 使用
- 刷新本地缓存:
- Windows:
ipconfig /flushdns。 - macOS/Linux:
sudo killall -HUP mDNSResponder(macOS) 或重启systemd-resolved服务。
- Windows:
- 检查 DNS 服务器配置:
- Windows:
ipconfig /all查看“DNS 服务器”地址。 - Linux/macOS:
cat /etc/resolv.conf。 - 如果配置错误或指向不可用的服务器,可以手动修改(Windows 在网络适配器设置中,Linux/macOS 可修改
/etc/resolv.conf或网络管理器配置)。
- Windows:
希望这份详细的指南能帮助你更好地理解和使用 DNS 命令!
