「Linux」- 如何确定公网网络地址?

  CREATED BY JENKINSBOT

问题描述

有时,我们需要向对方提供我们的公网地址,或者验证我们的请求是否通过代理服务器(此时应该返回代理服务器地址)

该笔记将记录:如何查看自己的公网地址。

解决方案

通过第三方 HTTP 站点

curl "http://ifconfig.me"
curl "http://icanhazip.com"
curl "http://ipecho.net/plain"
curl "http://ifconfig.co"
curl "https://ip.sb"

################################################################################

curl checkip.amazonaws.com
curl ifconfig.me
curl icanhazip.com
curl ipecho.net/plain
curl ifconfig.co

## store output in $server_ip ##
server_ip="$(curl ifconfig.co)"

## Display it ##
printf "Server public ip4 %s\n" $server_ip

通过自建的 HTTP 服务

我们使用 Nginx 来返回公网地址(需要具有公网服务器)使用如下配置:

server {
   listen 80;
   server_name ifconfig.toolbox.d3rm.org;
   location / {
       return 200 $remote_addr;
   }
}

当在命令行中使用 curl 发送 http 请求时,将返回网络地址:

# curl ifconfig.toolbox.d3rm.org
1.2.3.4.5

通过 DNS 获取

dig +short myip.opendns.com @resolver1.opendns.com
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com

相关链接

淘宝 IP 地址库:https://ip.taobao.com/ipSearch

参考文献

How To Find My Public IP Address From Command Line On a Linux