Mac/Linux 查询网站IP地址:4个核心命令详解
在日常开发、网络排查或学习过程中,我们经常需要知道某个网站对应的IP地址(比如确认域名解析是否正常、判断访问延迟的原因等)。在Mac和Linux系统下,无需安装额外工具,终端自带的 nslookup、host、curl、dig 四个命令就能轻松实现。
先给大家普及一个基础逻辑:网站的域名(比如 www.baidu.com)只是为了方便人类记忆,互联网中设备之间的通信最终依赖的是IP地址(比如 180.101.49.11)。我们查询"域名对应IP"的过程,本质上就是"域名解析"------向DNS服务器(域名系统服务器)询问这个域名对应的IP地址。下面逐个拆解这四个命令的用法,全程用"通俗易懂的语言+实操实例"讲解,新手也能直接上手。
一、nslookup:最经典的"域名解析查询工具"
nslookup 是"Name Server Lookup"的缩写,直译就是"域名服务器查询",是最老牌、最常用的域名解析查询命令,几乎所有类Unix系统(包括Mac、Linux)都自带。它的核心优势是"简单直观",能快速返回域名对应的IP,还支持查询不同类型的DNS记录(比如A记录、AAAA记录等)。
1. 基本用法(最常用)
命令格式:nslookup 域名
实例:查询百度的IP地址
bash
nslookup www.baidu.com
执行后会输出类似这样的结果(关键信息已标注):
text
nslookup www.baidu.com
Server: 1.1.1.2
Address: 1.1.1.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
www.a.shifen.com canonical name = www.wshifen.com.
Name: www.wshifen.com
Address: 103.235.46.115
Name: www.wshifen.com
Address: 103.235.46.102
解读:这里能看到 www.baidu.com 对应两个IPv4地址(180.101.49.11 和 180.101.49.12),这是因为百度用了负载均衡,多个IP可以分担访问压力。
2. 常用进阶用法
-
指定DNS服务器查询 :有时候我们想验证"不同DNS服务器解析同一个域名是否有差异"(比如排查运营商DNS污染问题),可以用这个方法。命令格式:
nslookup 域名 DNS服务器IP。实例:用谷歌的公共DNS(8.8.8.8)查询百度IP:nslookup www.baidu.com 8.8.8.8。 -
查询IPv6地址 :现在IPv6逐渐普及,若想查询域名对应的IPv6地址(AAAA记录),命令格式:
nslookup -query=AAAA 域名。实例:nslookup -query=AAAA www.baidu.com,会返回类似 240e:ff:f101💯:233 这样的IPv6地址。
3. 注意事项
nslookup 分为"交互式"和"非交互式"两种模式:上面讲的都是"非交互式"(直接输入命令+域名即可);如果直接输入 nslookup 回车,会进入交互式模式,此时可以连续输入多个域名查询,输入 exit 即可退出。日常使用中,非交互式模式完全够用。
二、host:极简的"域名解析工具"
host 命令的核心特点是"简洁"------输出结果比nslookup更精简,只保留最关键的域名解析信息,适合只想快速获取IP、不想看多余内容的场景。它也是Mac和Linux系统自带的,底层同样依赖DNS解析。
1. 基本用法
命令格式:host 域名
实例:查询百度的IP地址
bash
host www.baidu.com
执行后输出结果(非常简洁):
text
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com is an alias for www.wshifen.com.
www.wshifen.com has address 103.235.46.115
www.wshifen.com has address 103.235.46.102
解读:直接返回了域名对应的IPv4和IPv6地址,没有多余的DNS服务器信息,一目了然。
2. 常用进阶用法
-
指定DNS服务器查询 :格式和nslookup类似,命令格式:
host 域名 DNS服务器IP。实例:用阿里云公共DNS(223.5.5.5)查询百度IP:host www.baidu.com 223.5.5.5。 -
反向解析(根据IP查域名) :host 不仅能"域名查IP",还能"IP查域名"(反向解析)。命令格式:
host IP地址。实例:查询 180.101.49.11 对应的域名:host 180.101.49.11,可能会返回类似 11.49.101.180.in-addr.arpa domain name pointer baidu.com. 的结果(不同IP的反向解析结果可能不同,部分IP可能没有反向解析)。
3. 注意事项
host 命令的设计初衷就是"轻量、快速",所以它不支持复杂的DNS记录查询(比如MX记录、CNAME记录等,这些记录更适合用dig查询)。如果只是简单查IP,host 是效率最高的选择。
三、curl:"多功能工具"附带的IP查询能力
首先要明确:curl 不是专门的域名解析工具!它的核心功能是"在命令行发起HTTP/HTTPS请求"(比如下载文件、模拟浏览器访问网页等)。但它附带了一个"获取域名IP"的功能,适合在"发起请求的同时"查看解析的IP,不用单独执行其他命令。
1. 基本用法(查询IP)
curl 查询IP的核心是通过 -v 参数(verbose,详细模式),在请求过程中输出"DNS解析信息"。命令格式:curl -v 域名(或 curl -I 域名,-I 表示只获取响应头,输出更简洁)。
实例:用curl查询百度的IP
bash
curl -I www.baidu.com
执行后输出结果(关键部分已标注):
text
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Thu, 18 Dec 2025 08:00:00 GMT
Etag: "5886041d-115"
Last-Modified: Mon, 23 Jan 2017 13:27:41 GMT
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
# 若用 curl -v www.baidu.com,会输出更详细的解析过程:
* Host www.baidu.com:80 was resolved.
* IPv6: (none)
* IPv4: 103.235.46.115, 103.235.46.102
* Trying 103.235.46.115:80...
* Connected to www.baidu.com (103.235.46.115) port 80
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/8.9.1
> Accept: */*
>
2. 常用进阶用法
强制使用IPv4或IPv6解析 :如果想单独验证IPv4或IPv6的解析情况,可以用 -4(强制IPv4)或 -6(强制IPv6)参数。实例:curl -4 -I www.baidu.com(只解析IPv4)、curl -6 -I www.baidu.com(只解析IPv6)。
3. 注意事项
curl 的IP查询功能是"附带功能",所以它的解析结果是"为了完成请求而做的一次解析",不能像nslookup、host那样灵活地指定DNS服务器(虽然可以通过修改系统DNS来间接实现,但不够方便)。适合场景:在测试网页访问的同时,顺便查看域名解析的IP。
四、dig:"专业级"DNS解析工具
dig 是"Domain Information Groper"的缩写,直译是"域名信息探索器",是功能最强大、最专业的DNS解析工具。它支持查询所有类型的DNS记录(A、AAAA、MX、CNAME、TXT等),输出结果详细到DNS解析的完整过程,适合网络排查、DNS运维等专业场景。Mac和Linux系统默认自带(部分极简Linux系统可能需要手动安装,比如CentOS:yum install bind-utils;Ubuntu:apt install dnsutils)。
1. 基本用法(查询IP)
命令格式:dig 域名
实例:查询百度的IP地址
bash
dig www.baidu.com
执行后输出结果(分为5个部分,关键信息已解读):
text
; <<>> DiG 9.10.6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42794
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
www.a.shifen.com. 30 IN CNAME www.wshifen.com.
www.wshifen.com. 300 IN A 103.235.46.115
www.wshifen.com. 300 IN A 103.235.46.102
;; Query time: 393 msec
;; SERVER: 1.1.1.2#53(1.1.1.2)
;; WHEN: Thu Dec 18 21:37:28 CST 2025
;; MSG SIZE rcvd: 127
解读:核心结果在"ANSWER SECTION"(应答部分),能看到 www.baidu.com 有两个A记录(IPv4地址),TTL是120秒(表示这个解析结果在本地缓存120秒后过期,需要重新查询)。
2. 常用进阶用法
-
精简输出(只看核心结果) :dig 默认输出很详细,若只想看IP,可加
+short参数。命令格式:dig +short 域名。实例:dig +short www.baidu.com,输出结果只有两个IP:180.101.49.11 180.101.49.12,和host命令一样简洁。 -
指定DNS服务器查询 :格式:
dig 域名 @DNS服务器IP(注意@和DNS服务器IP之间没有空格)。实例:用114公共DNS(114.114.114.114)查询百度IP:dig www.baidu.com @114.114.114.114。 -
查询IPv6地址(AAAA记录) :命令格式:
dig 域名 AAAA(或dig +short 域名 AAAA)。实例:dig +short www.baidu.com AAAA,返回IPv6地址。 -
查询完整解析过程(追踪DNS跳转) :用
+trace参数可以追踪DNS解析的完整链路(从根服务器开始,到顶级域服务器、权威服务器,最后到目标IP),适合排查复杂的DNS解析问题。命令格式:dig +trace www.baidu.com(输出结果较长,会展示整个解析链路的每一步)。
3. 注意事项
dig 的功能虽强,但日常简单查IP的场景下,用 dig +short 域名 就足够了;只有在需要排查DNS问题(比如解析延迟、解析错误、记录异常等)时,才需要用到它的完整输出和高级参数。
五、四个命令的核心区别与适用场景总结
为了方便大家快速选择,这里整理了一个对比表格,清晰列出四个命令的核心特点和适用场景:
| 命令 | 核心特点 | 适用场景 |
|---|---|---|
| nslookup | 经典、直观,支持基本DNS记录查询 | 日常简单查IP,想了解DNS服务器信息 |
| host | 输出极简,支持反向解析 | 快速获取IP,不需要多余信息;根据IP查域名 |
| curl | 附带功能,需结合-v/-I参数;核心是HTTP请求 | 测试网页访问时,顺便查看域名解析的IP |
| dig | 功能最强,支持所有DNS记录;输出详细解析过程 | 专业DNS排查(解析延迟、记录异常等);查询复杂DNS记录 |
六、新手实操小技巧
-
打开终端:Mac系统可以通过"聚焦搜索"输入"终端"打开;Linux系统直接用快捷键
Ctrl+Alt+T打开。 -
复制命令时,注意符号的正确性(比如dig命令的@、curl命令的-),避免输入错误。
-
如果查询失败(比如提示"无法解析域名"),可以先检查网络连接,再尝试用公共DNS(8.8.8.8、114.114.114.114)重新查询,排除本地DNS问题。
总结:这四个命令没有"优劣之分",只有"场景之别"。日常简单查IP,用 host 或 nslookup 最方便;测试网页访问时顺便查IP,用 curl -I;需要专业DNS排查,就用 dig。建议大家都实操一遍,熟悉每个命令的输出风格,以后遇到相关问题就能快速上手啦!