下面我将从最常用到最详细的顺序,为你列出各种查看 IP 地址的命令,并解释它们的区别和用法。

使用 ip addr 命令 (推荐)
这是目前 Linux 系统中最现代、最推荐的命令,用于显示和操作路由、网络设备、策略路由和隧道。
查看所有网络接口的 IP 地址
这是最常用的方式,会列出所有网络接口(如 eth0, ens33, lo)及其对应的 IP 地址、MAC 地址等信息。
ip addr
或者使用简写 ip a:
ip a
输出示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.101/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
valid_lft 123456sec preferred_lft 123456sec
inet6 fe80::20c:29ff:fe12:3456/64 scope link noprefixroute
valid_lft forever preferred_lft forever
输出解读:
1: lo:lo是回环接口(Loopback),IP 是0.0.1。2: ens33:ens33是你的主要网络接口(通常是网卡)。inet 192.168.1.101/24: 这就是你的 IPv4 地址 是168.1.101,子网掩码是255.255.0(/24表示)。inet6 fe80::...: 这是你的 IPv6 地址。link/ether 00:0c:29:...: 这是网卡的 MAC 地址。
只查看某个特定接口的 IP
如果你想只查看 ens33 这个接口的信息:
ip addr show ens33
精准提取 IP 地址
如果你只想从输出中提取出 IP 地址,可以使用 grep 和 awk 命令组合:
# 只显示 IPv4 地址
ip addr show | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
# 输出示例:
# 127.0.0.1
# 192.168.1.101
使用 ifconfig 命令 (传统方法)
ifconfig 是一个传统的命令,在很多旧版 Linux 系统中很常见,在新版的 CentOS 7/8 中,它默认没有安装,但你可以安装 net-tools 包来使用它。

安装 ifconfig (如果未安装)
# CentOS 7/8 sudo yum install net-tools
查看所有网络接口的 IP 地址
ifconfig
查看特定接口的 IP 地址
ifconfig ens33
输出示例:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe12:3456 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:12:34:56 txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 987654 (987.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6789 bytes 987654 (987.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
输出解读:
inet 192.168.1.101: 这就是你的 IPv4 地址。netmask 255.255.255.0: 这是子网掩码。ether 00:0c:29:12:34:56: 这是 MAC 地址。
查看网络配置文件
这种方法不显示“当前正在使用”的 IP,而是显示“系统配置文件中设置的”静态 IP,这对于排查 DHCP 或 NetworkManager 的问题非常有用。
CentOS 7/8 使用 NetworkManager 管理网络,配置文件通常位于 /etc/sysconfig/network-scripts/ 目录下。
-
找到你的配置文件 文件名格式通常是
ifcfg-<接口名>,ifcfg-ens33。ls /etc/sysconfig/network-scripts/
-
查看文件内容 使用
cat或less命令查看文件内容。cat /etc/sysconfig/network-scripts/ifcfg-ens33
输出示例:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 表示静态IP,如果是 dhcp 则表示动态获取
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DEVICE=ens33
ONBOOT=yes # 开机是否启动此网络接口
IPADDR=192.168.1.101 # 这里是设置的静态IP地址
PREFIX=24 # 子网掩码,等同于 255.255.255.0
GATEWAY=192.168.1.1 # 网关
DNS1=8.8.8.8 # DNS服务器
使用 hostname 命令
hostname 命令主要用于显示或设置系统的主机名,但在某些情况下,它也会显示与主机名绑定的 IP 地址。
hostname -I
输出示例:
168.1.101
这个命令会打印所有配置在主机名上的 IPv4 地址,非常简洁,适合在脚本中快速获取主 IP。
总结与对比
| 命令 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
ip addr |
现代、功能强大、信息全面、官方推荐 | 输出信息较多,初学者可能觉得复杂 | 日常查看、故障排查、脚本编写(首选) |
ifconfig |
传统、简单直观 | 默认未安装,在新系统中逐渐被淘汰 | 在旧系统或习惯使用它的环境中快速查看 |
cat ifcfg-... |
能看到静态 IP 的永久配置 | 不显示动态获取的 IP | 检查网络配置文件,排查为什么 IP 没有生效 |
hostname -I |
极其简洁,只显示 IP | 信息量少,不显示 MAC、子网等 | 在脚本中快速获取主机的 IP 地址 |
快速参考
- 日常查看 IP (推荐):
ip addr
- 快速获取 IP (脚本用):
hostname -I
- 查看网络配置:
cat /etc/sysconfig/network-scripts/ifcfg-你的网卡名
- 传统方式 (
ip命令不好用):ifconfig
