有没有办法在 Debian 中使用 cli 找到自己的动态公共 IP 地址?

有没有办法在 Debian 中使用 cli 找到自己的动态公共 IP 地址?

对网络最简单/最简单的理解是

A。当您连接到 ISP 时,ISP 仅在连接期间提供动态地址(如临时电话号码),下次连接时,您将再次拥有不同的动态 IP 地址。

b.您使用浏览器访问具有静态 IP 地址(例如机构的永久号码或/和永久地址)的不同站点。

现在有没有一种方法可以获取自己的 IP 地址,而不是访问像 Whatismyipaddress.com 这样的网络服务。

连接如下:-

ISP - 调制解调器/路由器 - 系统

编辑 - 调制解调器/路由器是 D-Link DSL-2750U ADSL 路由器/调制解调器。http://www.dlink.co.in/products/?pid=452

我确实看到了如何在日志文件中跟踪我的公共 IP 地址?但它也使用外部 Web 服务,如果我们不需要访问外部 URL/IP 地址,那就更好了。

答案1

除了托尼的回答之外,还查询 OpenDNS,我在登录服务器时在脚本中使用它来显示本地计算机和远程公共 IP 地址:

echo `hostname` `hostname -i` `dig +short +time=1 myip.opendns.com @resolver1.opendns.com`

谷歌也提供类似的服务。

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'

如果您在家庭或公司路由器/基础设施后面有一个私有 IP 地址,或者即使您是自己的路由器,互联网中的这些服务也会泄露您用于访问它们的公共 IP 地址,因为它是到达他们那里执行请求。

请注意上述方法仅在相关 Linux 机器可以直接访问互联网时才有效

如果您的 Linux 服务器是您的路由器,除了可以查看当前的接口之外,您还可以执行以下操作:

hostname -i

通常,公共 IP 地址通常是主/第一个接口。如果不是第一个界面,您也可以这样做:

$hostname -I
95.xx.xx.xxx 192.168.202.1 192.168.201.1 

其中显示了机器接口的所有 IP 地址。

也请阅读:

如何在 Linux 上通过命令行查找我的公共 IP 地址

同样,如果 Linux 服务器是路由器,那么放置一个脚本来/etc/dhcp/dhclient-exit-hooks.d跟踪 IP 更改并对其采取行动可能会很有趣,正如我在这个问题中记录的那样:

处理 ISP 更改 IP 地址的更好方法?

答案2

仅当您的调制解调器或路由器提供查询该信息的方法时,您才能执行此操作。 IP 地址被分配给路由器或调制解调器上面向 WAN/互联网的接口,因此您需要能够查询该地址,或者连接到互联网服务,然后该服务会告诉您它是什么。

您可以使用 DNS 来获取响应,使用这个,

dig +short @resolver1.opendns.com myip.opendns.com

但它仍然需要外部服务来实现。

因此,要么查询您的路由器(如果有可以使用的接口),要么使用外部服务。

当然,如果Linux机器是你的路由器,那么你只需使用ipipconfig来查询WAN接口。

答案3

1)可以使用dig (域名信息探查器)命令:

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'

或者 :dig TXT +short o-o.myaddr.l.google.com @ns1.google.com

2)你可以尝试host命令:

host myip.opendns.com resolver1.opendns.com

3)通过命令使用第三方网站curlwget

curl ipecho.net/plain ; echo

或者

wget -qO- http://ipecho.net/plain ; echo

或者

curl ipv4.icanhazip.com

4)通过telnet

telnet myip.gelma.net

答案4

你的系统不知道这个ip,所以你会询问系统外部的一些东西。正如您的路由器所知道的那样,它可以提供这样的服务,我不知道这样做的路由器(但我从未调查过),但如果存在具有该功能的路由器,我们可能需要知道您的路由器的型号才能告诉你如何。

各种服务可以告诉您您的公共IP存在,但并非所有服务都是基于网络的,当然您的路由器可以实现基于网络和非基于网络的服务。

相关内容