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

大家好,
我是系统解决方案部门的Naka,天冷的时候我就起不了床。


意识到“检查全球 IP 地址的方法因人而异”,而且

所以这次,我想重点讲解如何使用命令(curl/dig/nslookup)检查您的全局 IP 地址。

然而,
有些人可能会想:

我们还将解释如何使用最常用的浏览器来实现这一点。

执行环境

● Linux 环境
・操作系统:Ubuntu 20.04.5 LTS(WSL2 环境)
・Shell:bash
・将语言环境更改为日语

● Windows 环境
・操作系统:Windows 11(版本:21H2)
・Shell:命令提示符
・语言设置已更改为日语

如何使用常用浏览器进行检查

首先,对该方法进行一般性解释。

无论你是不是基础设施工程师,
当你想要查看你正在使用的电脑的全球 IP 地址时,你
很可能会使用浏览器访问 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 地址

下面描述的命令也运用了这一原则,请记住这一点。

如何使用 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 命令添加了简短选项,但其主要用法与知识库文章中所述相同。

Umbrella:只能由 Umbrella DNS 服务器使用的特殊 DNS 请求

附注:谷歌DNS

顺便一提,谷歌的公开文档中其实有一些关于这方面的信息。

然而,这个命令解释并不能完美地得到我想要的结果,而且
与 Cisco 不同的是,由于它是以 TXT 记录的形式返回的,所以使用的命令稍微长一些。

这次我就不解释啦。

curl 和 dig 及 nslookup 哪个更有用?

都会给出相同的答案:“执行命令的客户端(全局 IP)。”

所以,使用你喜欢的方法没有问题。

但这并非令人满意的答案。

实际上,我认为它们之间并没有太大的区别,但如果非要说区别的话,会说dig 和 nslookup 更稳定

如果您要查询的 Web 服务器未运行,curl 方法将不会产生任何结果。

在撰写本文时,我访问了几个 IP 验证服务网站,但其中一些网站
显示错误代码“429 请求过多”,我无法验证结果。

但是,dig 和 nslookup是查询DNS 的

是的……谷歌和思科(OpenDNS)管理的DNS服务器通常都很稳定可靠。
事实上,如果它们停止工作,那将是一场灾难。

考虑到您所联系服务的稳定性,
单个网络服务器和大型公司的 DNS 服务器在运行上显然更加稳定。

附注:实际上,dig 和 nslookup 在内部运行速度更快。

虽然没有明显的区别,但 dig 和 nslookup 在“内部”执行速度方面更快。

这是因为 curl 使用 TCP 作为其通信协议来检查响应,而
dig 和 nslookup 使用 UDP,UDP 是单向发送的,因此速度有所不同。

结论

“差别不大,所以用你觉得最简单的方法就行。” “如果非要我说的话,dig 和 nslookup 更快一些。”

有很多情况下你会需要用到这个功能,例如检查服务器的全局 IP 地址,所以我希望这篇文章能对你有所帮助。

这篇文章有点长,感谢您读到这里!

参考资料

HTTP 概述
https://developer.mozilla.org/en/docs/Web/HTTP/Overview

curl 由微软提供(curl 官方网站:
https://curl.se/windows/microsoft.html

Umbrella:只能由 Umbrella DNS 服务器使用的特殊 DNS 请求

如果您觉得这篇文章有用,请点击【点赞】!
15
加载中...
15票,平均分:1.00/115
64,556
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

里面

我中途加入 Beyond 公司,
在系统解决方案部门
。我拥有 LPIC-3 304 和 AWS SAA 认证。