【Linux系列】如何在 Linux 服务器上快速获取公网

博客目录

    • [为什么需要获取公网 IP 地址](#为什么需要获取公网 IP 地址)
    • [通过外部服务获取公网 IP](#通过外部服务获取公网 IP)
      • [1. 使用 cip.cc 服务](#1. 使用 cip.cc 服务)
      • [2. 使用 ip.gs 服务](#2. 使用 ip.gs 服务)
      • [3. 使用 Amazon AWS 的 IP 查询服务](#3. 使用 Amazon AWS 的 IP 查询服务)
      • [4. 使用 icanhazip.com 服务](#4. 使用 icanhazip.com 服务)
    • 方法对比与选择建议
    • 为什么这些方法有效
    • [其他获取公网 IP 的方法](#其他获取公网 IP 的方法)
      • [1. 使用 dig 查询 DNS](#1. 使用 dig 查询 DNS)
      • [2. 使用第三方 CLI 工具](#2. 使用第三方 CLI 工具)
      • [3. 查看云服务商 metadata 服务](#3. 查看云服务商 metadata 服务)
    • 注意事项

在管理 Linux 服务器时,获取服务器的公网 IP 地址是一项常见且重要的任务。无论是进行远程连接、配置网络服务还是排查网络问题,了解服务器的公网 IP 都是必不可少的。

为什么需要获取公网 IP 地址

公网 IP 地址是互联网上识别您服务器的唯一标识符。与局域网内的私有 IP 不同,公网 IP 可以被全球任何连接到互联网的设备访问。获取公网 IP 地址在以下场景中尤为重要:

  1. 服务器远程管理:当需要通过 SSH 或其他协议从外部网络连接到服务器时
  2. 网络服务配置:部署 Web 服务器、邮件服务器等需要公网访问的服务时
  3. 安全审计:检查服务器的实际对外暴露的 IP 地址是否符合预期
  4. 网络诊断:排查连接问题时确认服务器的网络出口

通过外部服务获取公网 IP

最可靠的方法是通过外部 HTTP/HTTPS 服务来获取服务器从互联网上看到的 IP 地址。这种方法不依赖于服务器自身的网络配置,而是通过查询第三方服务返回服务器实际使用的公网 IP。

1. 使用 cip.cc 服务

bash 复制代码
curl cip.cc

cip.cc是国内一个简单易用的 IP 查询服务,返回结果清晰易读,包含 IP 地址、地理位置和运营商信息。这是中文环境下最常用的方法之一,响应速度快,结果格式友好。

优点

  • 响应速度快
  • 返回信息丰富(包含地理位置)
  • 国内服务,访问稳定

缺点

  • 仅返回 IPv4 地址
  • 需要服务器能够访问外网

2. 使用 ip.gs 服务

bash 复制代码
curl -4 https://ip.gs

ip.gs是另一个简洁的 IP 查询服务,-4参数确保只获取 IPv4 地址。这个服务返回结果非常干净,只有 IP 地址本身,适合脚本处理。

优点

  • 结果简洁,只有 IP 地址
  • 适合自动化脚本处理
  • 支持 IPv4 和 IPv6(不加-4 参数时)

缺点

  • 功能较为基础
  • 需要 HTTPS 访问

3. 使用 Amazon AWS 的 IP 查询服务

bash 复制代码
curl -4 https://checkip.amazonaws.com

Amazon 提供的这个服务非常稳定可靠,返回结果同样只有 IP 地址,末尾有一个换行符。由于是 AWS 提供的服务,全球访问性能都很好。

优点

  • AWS 基础设施支持,稳定性高
  • 全球访问速度快
  • 结果格式简单

缺点

  • 可能在某些地区受到网络限制
  • 纯英文服务

4. 使用 icanhazip.com 服务

bash 复制代码
curl -4 https://icanhazip.com

这个有趣域名("I can haz IP")的服务已经存在很长时间,是一个老牌的 IP 查询服务。它同样返回纯净的 IP 地址,适合脚本调用。

优点

  • 历史悠久,可靠性高
  • 结果格式干净
  • 支持多种 IP 版本查询

缺点

  • 域名不太正式,可能在某些严格环境中被屏蔽

方法对比与选择建议

服务 速度 结果格式 额外信息 适合场景
cip.cc 多行文本 地理位置、运营商 人工查看,中文环境
ip.gs 单行 IP 脚本处理
checkip.amazonaws.com 单行 IP+换行 脚本处理,国际环境
icanhazip.com 单行 IP 脚本处理,兼容性要求高

选择建议

  • 如果是人工查看,推荐cip.cc,信息丰富易读
  • 如果是脚本调用,推荐checkip.amazonaws.comip.gs,结果干净
  • 如果考虑最大兼容性,icanhazip.com是个不错的选择

为什么这些方法有效

这些服务的工作原理都很相似:当您的服务器向这些服务发起 HTTP 请求时,服务端会记录请求的来源 IP 地址并将其返回。因为请求是通过公网路由的,所以返回的 IP 就是您的服务器在互联网上显示的公共 IP 地址。

这种方法比查看服务器本地网络配置更可靠,因为:

  1. 它反映了经过所有 NAT、代理后的最终公网 IP
  2. 不受服务器本地网络配置错误的影响
  3. 可以识别出云服务器可能使用的弹性 IP 或负载均衡器 IP

其他获取公网 IP 的方法

除了上述 HTTP 查询方法外,还有一些替代方案:

1. 使用 dig 查询 DNS

bash 复制代码
dig +short myip.opendns.com @resolver1.opendns.com

这种方法通过查询特殊的 DNS 记录来获取 IP,适合无法使用 HTTP 但 DNS 可用的环境。

2. 使用第三方 CLI 工具

ipify-cli等专门工具:

bash 复制代码
npx ipify-cli

3. 查看云服务商 metadata 服务

对于 AWS、Azure、Google Cloud 等云服务器:

bash 复制代码
# AWS
curl http://169.254.169.254/latest/meta-data/public-ipv4

# Google Cloud
curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip

注意事项

  1. 隐私考虑:使用第三方服务意味着您的 IP 会被该服务记录
  2. 网络依赖:所有方法都需要服务器能够访问外网
  3. 服务可靠性:某些服务可能会不可用或被封锁
  4. 脚本使用:在生产脚本中使用时,应考虑错误处理和备用方案

觉得有用的话点个赞 👍🏻 呗。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
小韩博1 小时前
metasploit 框架安装更新遇到无法下载问题如何解决
linux·网络安全·公钥·下载失败
长臂人猿1 小时前
JVM常用工具:jstat、jmap、jstack
linux·运维·jvm
轻松Ai享生活2 小时前
揭秘 linux:一张图看懂系统配置的核心
linux
dog2502 小时前
难以超越的 TCP AIMD
网络协议·tcp/ip·php
wdxylb2 小时前
云原生俱乐部-RH134知识点总结(2)
linux·云原生
_Chipen2 小时前
lazy_vim_cmake_clangd_从零到自动补全与语法检查
linux·编辑器·vim
椰子今天很可爱3 小时前
静态库和动态库
linux
共享家95273 小时前
linux-高级IO(上)
java·linux·服务器
HWL56795 小时前
“preinstall“: “npx only-allow pnpm“
运维·服务器·前端·javascript·vue.js