如何使用命令(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
加载中...
15票,平均分:1.00/115
67,688
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

里面

以中级员工的身份加入 Beyond 公司,
目前在系统解决方案部门工作。
我持有 LPIC-3 304 和 AWS SAA 认证。