在windows系统的cmd命令行窗口里,用ping命令或nslookup命令就能直接查到域名对应的ip地址,其中nslookup返回的结果比ping更精准。
这是站长、运维人员和普通上网用户最常用的两个网络诊断工具,下面我把每一步操作、每个参数含义、每种输出结果的解读都拆开讲清楚,你照着敲就能搞定。
cmd查看域名ip地址:ping命令是入门首选
ping命令查域名ip的具体操作
按一下键盘上的【win+r】组合键,在弹出的运行框里输入cmd,然后回车,一个黑色的命令提示符窗口就打开了,在这个窗口里输入下面这行命令,再按回车:
ping 域名
比如你想查百度的ip地址,就输入ping baidu.com,几秒钟之内,屏幕上会返回四行数据,每一行都有来自 x.x.x.x 的回复这样的字样,这个x.x.x.x就是该域名当前解析到的ip地址。
这里有个常被忽略的细节:cmd默认的ping命令可能无法显示ipv6地址,或者显示的是ipv6格式的地址,如果你看到的回复是来自 240e:...:...这种长字符串,说明你查到的是ipv6地址,想强制查ipv4地址,加上-4参数:
ping -4 baidu.com
ping命令输出结果怎么看
以ping baidu.com为例,返回结果的最后一行会有最短 = xx毫秒,最长 = xx毫秒,平均 = xx毫秒,但在看ip地址时,不要只看这一行,要重点看回复行里的地址,因为cmd在ping请求发出时,第一行会显示“正在 Ping baidu.com [x.x.x.x] 具有 32 字节的数据”,这里的中括号里也是ip地址,而且更容易看漏,我的经验是直接看回复行的来源地址。
遇到请求超时怎么办
有时候你执行ping 域名,等了好几秒,结果却显示“请求超时”,这不一定是域名解析不了,更常见的原因是目标服务器禁ping或网络防火墙拦截了icmp协议,这种情况我建议你换下面要说的nslookup命令试试,多数情况下,禁用ping的网站照样能通过nslookup查出ip地址。
nslookup查询域名ip:结果比ping更详细

nslookup命令的使用方式
nslookup是windows自带的一个dns查询工具,它的精确度比ping高一个档次,在cmd里输入:
nslookup 域名
然后回车,系统会先显示本机使用的dns服务器的地址,再显示域名所对应的ip解析结果。
服务器: dns服务器的主机名
Address: 本机dns服务器ip地址
非权威应答:
名称: 目标域名
Addresses: 它会列出所有解析到的ip地址
和ping不同,nslookup会把该域名全部a记录列表列出来,有时候是几个不同的ip,而不是像ping那样只给你看一个,对于配置了多线路负载均衡的网站而言,nslookup才是真正能够看到全貌的cmd查域名ip地址命令。
切换公共dns服务器查询对比
本机dns服务器返回的结果可能因为缓存原因不是最新版本,这时候,你可以在nslookup命令里手动指定一台公共dns服务器来查询,操作方式是在输入域名后,再单独加一行公共dns的ip,或者在命令行里一次写明:
nslookup 域名 223.5.5.5
这里5.5.5是国内简米云的公共dns,经常做网站维护的人会再换一台服务器做对比,比如nslookup 域名 119.29.29.29(腾讯dns)或者nslookup 域名 114.114.114.114(114dns)。如果两家公共dns返回的ip地址不一致,说明域名解析记录最近改过,还没完全同步到各节点。
使用场景:查网站真实ip
有个现实场景很能说明问题:你想查某个网站的真实ip,但对方套了cdn,用ping命令查到的往往是离你最近的cdn节点ip,这时候你改用nslookup,并且把dns服务器指向国外的公共dns(比如8.8.8.8),查出来的结果很可能就是源站ip的暴露线索,不过要注意,这种操作仅用于合法合规的网络技术测试,不要用于非法攻击。
cmd查ip地址命令还有哪些:tracert和Resolve-DnsName
tracert命令跟踪路由路径
当你想知道域名解析出来的ip到底怎么从你的电脑一路跳到对方服务器的,可以用tracert命令:
tracert 域名
它会输出一条长长的路由表,每

一行就是一个网络节点,包含该节点的ip地址,在排查网站在哪个地区访问慢、哪个节点丢包率高的时候,这个命令的价值很大,你会发现第一跳通常是你家路由器的网关地址,一般是192.168.x.1或10.x.x.x,网上有很多人误以为这个地址就是域名的ip,其实这只是你本机的局域网网关。
powershell的Resolve-DnsName
cmd是老牌工具,但如果你用的是powershell(在cmd里直接输入powershell进入,或者直接在任务栏搜索powershell),有一个更现代的命令叫Resolve-DnsName,它的输出是一个结构化列表,明明白白分列列出Name、Type、IPAddress。
Resolve-DnsName baidu.com
对于做脚本批量查询域名ip的人来说,这个命令比nslookup好解析得多,因为输出格式规范统一,不过日常单独查一两个域名,我还是习惯用nslookup,启动更快,手速提起来效率也很高。
域名对应多ip的负载均衡机制
多ip地址,不少非技术用户会误认为是域名“有问题”或“解析错了”,这恰恰是大型网站的标准操作,行业共识认为,类似淘宝、百度这类大流量站点,在DNS层面配置十多个甚至几十个A记录是很正常的,分发算法根据请求来源IP、地域、运营商做智能调度。你在cmd里查到的多个ip,可能对应不同省份的机房节点。
cmd查解析结果不准确?先检查本地hosts文件
hosts文件优先级高于dns解析
如果你在cmd里执行ping和nslookup,发现两个命令查出来的ip不一样,或者查出来的ip明显不是预期值,第一个要排查的就是本机的hosts文件,Windows系统在访问域名时,会先查看hosts文件,如果文件里有对应记录,就直接使用这个ip,不再走DNS解析流程。
查看hosts文件内容,在cmd里输一行命令:
notepad C:WindowsSystem32driversetchosts
这会用记事本直接打开hosts文件,如果里边有你正在查询的域名条目,比如0.0.1 baidu.com,那说明你访问baidu.com时走的根本不是公网ip,而是本机回环地址。
清空dns缓存让查询更准确
系统会把之前查询过的域名和ip映射关系缓存下来,如果你想确认域名最新的ip地址,但cmd查询结果总是旧的,先刷新一下dns缓存:

ipconfig /flushdns
执行完会看到“已成功刷新DNS解析缓存”的提示,然后再重新执行nslookup 域名,得到的ip就是重新向dns服务器发起的全新查询结果。
真实场景排查步骤示例
比如你给网站在备案云服务器上搭好了一套源码,域名解析改好了,但自己在浏览器里打开网站还是旧页面,这时候你按以下顺序操作:
- 在cmd里执行
ipconfig /flushdns清本机缓存 - 执行
nslookup 你的域名 223.5.5.5查公网解析记录 - 对比刚才的dns公共解析结果和云服务器控制台的公网IP是否一致
- 不一致就回到域名注册商的解析管理后台,检查A记录填写的IP
- 一致就执行
ping 你的域名看看能否通
这一套走下来,绝大多数解析不生效的问题都能定位到根因。
cmd查域名ip常见问题解答
ping域名显示ipv6地址,怎么只查ipv4?
在ping命令末尾加上-4参数,例如ping -4 域名,系统就会强制走ipv4协议栈解析域名,如果你用的是nslookup,默认结果里可能会同时显示ipv6(aaaa)和ipv4(a)记录,可以只关注列表中的ipv4格式地址。
域名解析出来的ip为什么和上个月查的不一样?
域名对应ip发生变更的原因主要有三种:网站更换了服务器机房、启用了CDN服务、或者域名做了负载均衡调度,这是正常现象,网站管理员在更换服务器后,一般会保留旧ip解析一段时间作为过渡,再切换新ip,所以你在切换完成前查询,可能看到新旧ip各占一条记录。
nslookup能查域名的其他记录类型吗?
可以,nslookup命令不仅支持查a记录,还能查mx邮件交换记录(nslookup -type=mx 域名)、txt文本记录(nslookup -type=txt 域名)、ns名称服务器记录(nslookup -type=ns 域名)等,做邮件服务器迁移或者验证域名所有权的时候,这些查询非常实用,用来确认域名当前配置的各项DNS设置是否符合预期。