在管理和维护 CentOS 服务器的过程中,了解如何查看其 IP 地址是一项基础且至关重要的技能,无论是进行远程连接、配置网络服务,还是排查网络故障,IP 地址都是不可或缺的关键信息,本文将系统地介绍在 CentOS 系统中查看 IP 地址的多种方法,从传统的命令到现代的工具,并深入解析不同场景下的最佳实践,帮助您全面掌握这一核心技能。
IP 地址分为内网(私有)IP 和公网 IP,内网 IP 用于局域网内部通信,而公网 IP 则是服务器在互联网上的唯一标识,我们将分别介绍如何查看这两种类型的地址。
使用 ip
命令(推荐)
ip
命令是 iproute2
软件包的一部分,它取代了老旧的 ifconfig
命令,是现代 Linux 发行版(包括 CentOS 7 及更高版本)中查看和管理网络信息的标准工具,它功能强大,信息详尽。
基本用法:
打开终端,输入以下命令:
ip addr
或者使用其简写形式:
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:4a:5b:6c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4a:5b6c/64 scope link
valid_lft forever preferred_lft forever
lo
:这是回环接口,其 IP 地址永远是0.0.1
,用于本机内部通信。ens33
:这是一个以太网接口的名称(名称可能因系统而异,如eth0
,eno16777736
等),这是我们关注的重点。inet 192.168.1.100/24
:这行信息显示了该接口的 IPv4 地址。168.1.100
就是您的内网 IP 地址,/24
表示子网掩码为 255.255.255.0。inet6 fe80::...
:这是该接口的 IPv6 链路本地地址。
快速筛选 IPv4 地址:
如果您只想快速查看 IPv4 地址,可以结合 grep
命令进行过滤:
ip a | grep 'inet '
这会输出所有包含 inet
的行,让您能更直接地找到 IP 地址。
使用 ifconfig
命令(传统方法)
ifconfig
是一个非常经典的网络配置工具,许多资深管理员都习惯使用它,在最小化安装的 CentOS 7/8 系统中,它可能默认未被安装。
如果提示 command not found
,您需要先安装 net-tools
软件包:
sudo yum install net-tools
基本用法:
安装完成后,直接输入命令即可:
ifconfig
输出解析:
输出结果会列出所有活动的网络接口:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe4a:5b6c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4a:5b:6c txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 1234567 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 54321 bytes 7654321 (7.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
TX packets 0 bytes 0 (0.0 B)
- 在
ens33
接口下,inet 192.168.1.100
后面紧跟的就是您的内网 IPv4 地址、子网掩码和广播地址,非常直观。
查看网络配置文件(适用于静态 IP)
如果您的服务器 IP 地址是手动配置的(静态 IP),那么信息会明确记录在配置文件中,这对于确认配置和排查静态 IP 问题非常有用。
配置文件通常位于 /etc/sysconfig/network-scripts/
目录下,文件名格式为 ifcfg-<接口名>
,ifcfg-ens33
。
使用 cat
或 vi
命令查看文件内容:
cat /etc/sysconfig/network-scripts/ifcfg-ens33
示例:**
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=...
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
BOOTPROTO=static
表明这是一个静态 IP 配置。IPADDR=192.168.1.100
直接定义了 IP 地址。
查找公网 IP 地址
上述方法查到的都是内网 IP,如果您需要知道服务器在互联网上的地址,可以使用以下命令,它们会向外部服务请求,并返回您的公网 IP。
确保您的服务器可以访问互联网,然后使用 curl
工具:
curl ifconfig.me
或者:
curl ipinfo.io
又或者:
curl icanhazip.com
这些命令会直接返回一串数字,即您的公网 IP 地址。
方法小编总结与对比
为了方便您根据不同场景选择最合适的方法,下表对上述主要方法进行了小编总结:
命令/方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
ip addr | 日常查看、脚本编写、现代系统 | 信息最全面,系统自带,功能强大 | 输出信息较多,初学者需适应 |
ifconfig | 习惯旧版命令、快速查看 | 输出直观,符合老用户习惯 | 可能需额外安装,功能已被 ip 取代 |
hostname -I | 脚本中快速获取 IP | 输出简洁,只有 IP 地址 | 信息量少,无法区分接口 |
查看配置文件 | 排查静态 IP 配置问题 | 信息权威,直接反映配置 | 需要文件路径和权限,不适用于动态 IP |
curl 外部服务 | 获取公网 IP | 简单直接,结果准确 | 需要互联网连接,依赖外部服务 |
相关问答 FAQs
解答: 这是因为在 CentOS 7 及以后的版本中,特别是采用最小化安装时,ifconfig
命令所属的 net-tools
软件包不再默认被安装,系统推荐使用更现代的 ip
命令,如果您确实需要使用 ifconfig
,可以通过 sudo yum install net-tools
命令来手动安装它,安装完成后,即可正常使用。
我的服务器有多个网络接口和多个 IP 地址,如何准确判断哪个是用于连接互联网的主 IP?
解答: 通过 ip route
或 ip r
命令查看系统的路由表,标记为 default
的那条路由所对应的设备(dev
后面的接口名)就是主网络接口,再使用 ip addr show <接口名>
查看该接口的 IP 地址,这个 IP 通常就是主 IP,要确定公网 IP,最可靠的方法仍然是使用 curl ifconfig.me
这类命令,因为它返回的是对端服务器看到的您的 IP,避免了内部多 IP 的混淆。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复