【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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
YuMiao18 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑2 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI3 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php