Mac_Linux 查询网站IP地址:4个核心命令详解

Mac/Linux 查询网站IP地址:4个核心命令详解

在日常开发、网络排查或学习过程中,我们经常需要知道某个网站对应的IP地址(比如确认域名解析是否正常、判断访问延迟的原因等)。在Mac和Linux系统下,无需安装额外工具,终端自带的 nslookuphostcurldig 四个命令就能轻松实现。

先给大家普及一个基础逻辑:网站的域名(比如 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记录

六、新手实操小技巧

  1. 打开终端:Mac系统可以通过"聚焦搜索"输入"终端"打开;Linux系统直接用快捷键 Ctrl+Alt+T 打开。

  2. 复制命令时,注意符号的正确性(比如dig命令的@、curl命令的-),避免输入错误。

  3. 如果查询失败(比如提示"无法解析域名"),可以先检查网络连接,再尝试用公共DNS(8.8.8.8、114.114.114.114)重新查询,排除本地DNS问题。

总结:这四个命令没有"优劣之分",只有"场景之别"。日常简单查IP,用 hostnslookup 最方便;测试网页访问时顺便查IP,用 curl -I;需要专业DNS排查,就用 dig。建议大家都实操一遍,熟悉每个命令的输出风格,以后遇到相关问题就能快速上手啦!

相关推荐
大聪明-PLUS2 小时前
硬件断点:它们在 Linux 中的用途和工作原理
linux·嵌入式·arm·smarc
爱吃番茄鼠骗2 小时前
Linux操作系统———UDP/IPC网络编程
linux·网络·udp
Starry_hello world2 小时前
Linux 线程(2)
linux
Promise4852 小时前
关于使用wsl实现linux移植(imux6ull)的网络问题
linux·服务器·网络
郝学胜-神的一滴2 小时前
Linux线程的共享资源与非共享资源详解
linux·服务器·开发语言·c++·程序人生·设计模式
郝学胜-神的一滴2 小时前
Linux进程与线程的区别:从内存三级映射角度深入解析
linux·服务器·c++·程序人生
雪花凌落的盛夏2 小时前
x86电脑安装steamOS
linux
老蒋新思维2 小时前
创客匠人观察:知识IP的下一站——与AI智能体共生的“人机协同”模式
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
不爱吃糖的程序媛2 小时前
OpenHarmony Linux 环境 SDK 使用说明(进阶--依赖库的解决方法)
linux·运维·harmonyos