如何使用命令(curl/dig 等)查看您的公网 IP 地址

目录
大家好,
我是系统解决方案部门的Naka,天冷的时候我很难起床。
在苦苦思索该在博客上写些什么的时候,我突然
意识到“每个人查看自己全球 IP 地址的方法略有不同”,而且“使用的命令也略有不同”。
所以这次,我想重点讲解如何使用命令(curl/dig/nslookup)检查您的全局 IP 地址。
然而,
你们中的一些人可能会想,
我们还将解释如何使用最常用的浏览器来实现这一点。
执行环境
● Linux 环境
:操作系统:Ubuntu 20.04.5 LTS(WSL2 环境)
,Shell:bash
,语言环境已更改为日语
● Windows 环境
:操作系统:Windows 11(版本:21H2)
,Shell:命令提示符
,语言设置已更改为日语
如何使用常用浏览器进行检查
首先,对该方法进行一般性解释。
无论你是不是基础设施工程师,
检查电脑全球 IP 地址
最常见的方法
*搜索结果排名前列的两个最知名的网站如下所示。
○“CMAN”
https://www.cman.jp/network/support/go_access.cgi
○ “确认工具 - UGTOP”
https://www.ugtop.com/spill.shtml
当您访问这些 IP 验证网站时,将显示您当前使用的全球 IP 地址。
原则
原理很简单。
当客户端(用户)使用浏览器访问 Web 服务器时,
他们会使用 HTTP(S) 协议向服务器发送 HTTP 请求。
在这种情况下,浏览器发送的“HTTP 请求”通常分为四个结构
(我将省略细节,因为这本身就可以写成一整篇文章)。
- 一条“请求行”,用于指定通信协议和方法。
- 包含请求者信息的“标题行”
- 空白行
- 邮件正文
称为“请求标头”的信息,
请求访问的客户端(用户)的IP 地址包含
简而言之,IP 验证网站会向用户提供他们发送的请求标头中的信息,
从而泄露他们的全球 IP 地址。
下面描述的命令也运用了这一原则,请记住这一点。
如何使用 curl 命令进行检查(Linux 和 Windows)
● 卷曲
如果要用命令进行检查,我猜 100 个人里可能有 95 个人会使用 curl 命令,这是一种标准方法。
该命令本身是一个强大的命令,可以使用各种通信协议发送和接收数据,
通常用于检查 Web 服务器是否正常运行。
如今,大多数主流 Linux 发行版都默认包含了该功能,
Windows 10(从 2018 年的 1803 (RS3) 版本开始)也默认包含了该功能。
curl inet-ip.info xxx.xxx.xxx.xxx curl ifconfig.co xxx.xxx.xxx.xxx curl httpbin.org/ip { "origin": "xxx.xxx.xxx.xxx" } *输出为 JSON 格式
主要用途如上所述。
您可能已经注意到,这涉及到向网站发送请求,您是对的;
与上面解释的“请求标头”方法。
唯一的细微差别在于域名
我使用 curl 命令向 IP 地址验证网站发送 HTTP 请求,
然后我只从请求头信息中获取了 IP 地址。
还有其他几个网站用途相同,所以最终选择取决于你对域名的偏好。
我认为“因人而异”的原因是人们用来查看的网站各不相同。
总之,请记住,“curl 命令本身并不会在内部检查您的全局 IP 地址”。
它依赖于外部服务来实现此目的。
如何使用 dig/nslookup 命令进行检查(Linux/Windows)
● dig(Linux)
● nslookup(Windows)
使用熟悉的命令 dig 和 nslookup 来检查域名。
虽然上面提到的两个命令名称不同,使用的工具也不同,但
它们在这种情况下的用法基本相同,所以我将一起解释它们。
该命令是一个查询 DNS 服务器以获取 DNS 记录响应的工具,但
实际上有多个 DNS 服务器可以告诉你你的全球 IP 地址。
- 谷歌
- 思科(OpenDNS)
- Cloudflare
例如,如果您向上述特定 DNS 服务器发出特定查询,它将返回发出查询者的全球 IP 地址。
这些功能显然是为了检查是否正在使用使用该特定 DNS 的服务等目的而设计的,而且它们
似乎并不广为人知。
通过查阅该公司及其关联公司的官方文件和员工论坛帖子,
我们发现了一些关于其存在和用途的简要描述。
此验证方法使用“Cisco (OpenDNS)”的 DNS 服务器,我们已确定该服务器是公开披露的。
●ubuntu(bash) dig myip.opendns.com @208.67.222.222 +short xxx.xxx.xxx.xxx
使用“dig”命令时,可以使用“+short”选项,这样就可以只显示全局 IP 地址。
●Windows(CMD)nslookup myip.opendns.com 208.67.222.222 服务器:dns.opendns.com 地址:208.67.222.222 非权威应答: 名称:myip.opendns.com 地址:xxx.xxx.xxx.xxx
“nslookup”没有缩写选项,但它比“dig”的完整显示要短,因此可能更容易阅读。
这条信息来自思科社区论坛上一位员工发布的知识库帖子。
*虽然我添加了 `dig short` 选项,但其核心用法与知识库帖子中描述的相同。
Umbrella:只能由 Umbrella DNS 服务器使用的特殊 DNS 请求
附注:谷歌DNS
顺便一提,谷歌的公开文档中其实有一些关于这方面的信息。
然而,这个命令描述并没有完美地产生预期的结果,而且
与 Cisco 不同,响应格式是 TXT 记录,因此使用的命令要长一些。
这次我就不解释啦。
curl 和 dig 及 nslookup 哪个更有用?
:“执行该命令的客户端(全局 IP 地址)。”都得出相同的结果
所以,使用你喜欢的方法没有问题。
但这并非令人满意的答案。
实际上,我认为质量上并没有太大的区别,但如果非要指出区别的话, dig 和 nslookup 更稳定会说
如果您要查询的 Web 服务器未运行,curl 方法将不会产生任何结果。
在撰写本文期间,我访问了几个 IP 地址验证服务网站,但其中一些
显示错误代码“429 请求过多”,导致我无法获得任何结果。
然而,dig 和 nslookupDNS是查询
是的……谷歌和思科(OpenDNS)管理的DNS服务器基本上稳定可靠,所以您可以放心。
事实上,如果它们停止运行,那将是一场灾难。
在进行查询时,如果考虑服务的稳定性,
大型企业的 DNS 服务器显然比单个 Web 服务器更稳定。
附注:实际上,dig 和 nslookup 在内部运行速度更快。
虽然没有明显的区别,但 dig 和 nslookup 在“内部”执行速度方面更快。
这是因为 curl 使用 TCP,需要对通信协议做出响应,而
dig 和 nslookup 使用 UDP,UDP 单方面发送数据,从而导致速度差异。
结论
“差别不大,所以用你觉得最简单的方法就行。” “如果非要我说的话,dig 和 nslookup 更快一些。”
有很多情况下你会需要用到这个功能,例如检查服务器的全局 IP 地址,所以我希望这篇文章能对你有所帮助。
这篇文章有点长,感谢您读到这里!
参考资料
HTTP 概述
https://developer.mozilla.org/ja/docs/Web/HTTP/Overview
curl 由微软提供(curl 官方网站:
https://curl.se/windows/microsoft.html
Umbrella:只能由 Umbrella DNS 服务器使用的特殊 DNS 请求
15
