博客 / Linux/ Linux 服务器查看 IPv4 与 IPv6 地址(公网/私网)完全指南

Linux 服务器查看 IPv4 与 IPv6 地址(公网/私网)完全指南

Linux 服务器查看 IPv4 与 IPv6 地址(公网/私网)完全指南

Linux 系统下查看服务器 IP 地址

在 Linux 服务器管理和网络调试中,快速准确地获取服务器的 IPv4 和 IPv6 地址(包括公网和私网地址)是一项基本技能。本文将介绍几种常用且可靠的方法。

1. 使用 ip 命令(推荐)

ip 命令是现代 Linux 发行版中功能最强大的网络配置工具,取代了旧的 ifconfig 命令。

查看所有网络接口的 IP 地址

ip addr show

或者简写为:

ip a

输出会列出所有网络接口(如 eth0, ens33, lo 等)的详细信息,包括 IPv4 和 IPv6 地址。以 inet 开头的行是 IPv4 地址,以 inet6 开头的行是 IPv6 地址。

查看特定网络接口(如 eth0)的 IP 地址

原文的命令旨在提取 eth0 接口的 IP 地址,但存在一些问题(如未区分 IPv4/IPv6,且 sed 处理可能不完善)。以下是更清晰、更标准的命令:

# 查看 eth0 的 IPv4 地址
ip -4 addr show eth0 | grep inet | awk '{print $2}' | cut -d'/' -f1

# 查看 eth0 的 IPv6 地址
ip -6 addr show eth0 | grep inet6 | awk '{print $2}' | cut -d'/' -f1
  • ip -4ip -6:分别限制只显示 IPv4 或 IPv6 地址。
  • grep inetgrep inet6:过滤出对应的地址行。
  • awk '{print $2}':提取出第二个字段,即带有 CIDR 掩码的地址(如 192.168.1.100/24)。
  • cut -d'/' -f1:使用 / 作为分隔符,取第一个字段,从而去掉 CIDR 掩码部分,得到纯 IP 地址。

2. 使用 hostname 命令

hostname 命令也可以用来快速查看主机的 IP 地址。

# 显示所有 IPv4 地址
hostname -I

# 显示所有 IPv6 地址(并非所有系统都支持此选项)
hostname -i

hostname -I(大写 I)会列出所有网络接口的 IPv4 地址,用空格分隔,这是一个非常快捷的方法。

3. 使用 curl 命令获取公网 IP

上述命令查看的是服务器本地配置的 IP。要查看服务器对外访问时使用的公网 IPv4 或 IPv6 地址,需要向外部服务查询。

# 查询公网 IPv4 地址
curl -4 ifconfig.me
curl -4 icanhazip.com

# 查询公网 IPv6 地址(需要服务器本身已启用 IPv6 网络)
curl -6 ifconfig.me
curl -6 icanhazip.com

使用 -4-6 参数可以强制 curl 使用对应的 IP 协议栈进行查询,从而得到准确的公网地址。

公网 IP 与私网 IP 的区分

  • 私网 IP 地址:通常在本地网络内部使用,如 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 范围内的 IPv4 地址,以及 fd00::/8 范围内的 IPv6 ULA 地址。它们无法在互联网上直接路由。
  • 公网 IP 地址:由 ISP 分配,在全球互联网上唯一且可路由。通过 ip addr show 查看到的非上述私网范围的地址,很可能就是公网 IP。最准确的方式是通过上述 curl 命令向外部服务查询。

总结

掌握查看服务器 IP 地址的方法对于运维、开发和网络排查至关重要。建议:

  1. 使用 ip addr show 查看所有本地配置的 IP。
  2. 使用 hostname -I 快速获取所有 IPv4 地址。
  3. 使用 curl 命令查询服务器对外连接使用的公网 IP。

根据你的具体需求,选择合适的一条或组合命令即可。

发表评论

您的邮箱不会公开。必填项已用 * 标注。