在管理和维护 CentOS 服务器时,了解如何查看其当前 IP 地址是一项基础且至关重要的技能,无论是进行网络配置、故障排查,还是允许远程访问,IP 地址都是定位和连接服务器的关键标识,本文将详细介绍在 CentOS 系统中查看 IP 地址的多种方法,从现代推荐的命令行工具到传统方式,并辅以实例和解释,帮助您全面掌握这一技能。
使用 ip
命令:现代且首选的方法
ip
命令是 iproute2
软件包的一部分,它取代了陈旧的 net-tools
(包含 ifconfig
),成为现代 Linux 发行版中管理和查看网络信息的标准工具,它功能强大,信息详尽,是 CentOS 7 及更高版本中的首选方法。
查看所有网络接口的 IP 地址
最直接和常用的方式是使用 ip addr
或其简写形式 ip a
,这个命令会列出系统中所有网络接口(包括虚拟和物理接口)的详细信息。
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 fq_codel state UP group default qlen 1000
link/ether 00:0c:29:3a:4b:5c 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:fe3a:4b5c/64 scope link
valid_lft forever preferred_lft forever
如何解读输出:
1: lo
和2: ens33
:这是网络接口的名称。lo
是环回接口(本地测试用),ens33
是一个典型的以太网接口名称。inet 192.168.1.100/24
:这就是我们最关心的 IPv4 地址。168.1.100
是 IP 地址,/24
表示子网掩码(相当于 255.255.255.0)。inet6 fe80::...
:这是 IPv6 地址。link/ether 00:0c:29:...
:这是接口的 MAC 地址(物理地址)。
查看特定网络接口的 IP 地址
如果服务器有多个网络接口,您可以通过指定接口名称来精简输出,只查看特定接口的信息。
ip addr show ens33
或者简写为:
ip a s ens33
这将只显示 ens33
接口的详细信息,便于快速定位。
使用 ifconfig
命令:传统的方法
ifconfig
是一个非常经典的命令,许多长期使用 Linux 的管理员都习惯于它,在 CentOS 7 及以后的版本中,ifconfig
默认不再安装,因为它已被 ip
命令所取代。
安装 net-tools
如果您仍然偏好使用 ifconfig
,需要先安装 net-tools
软件包。
sudo yum install net-tools
使用 ifconfig
查看 IP
安装完成后,可以直接运行 ifconfig
命令。
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:fe3a:4b5c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3a:4b:5c txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 1234567 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6789 bytes 987654 (964.8 KiB)
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 12 bytes 1024 (1.0 KiB)
TX packets 12 bytes 1024 (1.0 KiB)
如何解读输出:
ens33
:网络接口名称。inet 192.168.1.100
:IPv4 地址。netmask 255.255.255.0
:子网掩码。broadcast 192.168.1.255
:广播地址。
其他便捷方法
除了上述两种主要方法,还有一些命令可以快速获取 IP 地址,特别适合在脚本中使用。
使用 hostname
命令
hostname
命令的 -I
(大写 i)选项可以专门用于显示所有网络接口的 IP 地址,非常简洁。
hostname -I
输出示例:
168.1.100 172.17.0.1
这个命令会列出所有非回路的 IP 地址,以空格分隔。
使用 nmcli
命令
nmcli
是 NetworkManager 的命令行工具,如果您的系统使用 NetworkManager 来管理网络,这是一个非常方便的选择。
nmcli device show
这个命令会显示所有设备的详细信息,包括 IP 地址,如果想查看特定设备:
nmcli device show ens33
在输出中找到 IP4.ADDRESS[1]
字段,其值就是您的 IPv4 地址。
命令对比与选择
为了更清晰地展示这些命令的区别,下表对 ip addr
和 ifconfig
进行了简要对比。
特性 | ip addr (iproute2) | ifconfig (net-tools) |
---|---|---|
推荐度 | 高 (现代标准) | 低 (已弃用) |
默认安装 | 是 (CentOS 7+) | 否 (需手动安装) |
信息详尽度 | 非常高,支持多种地址族 | 相对基础 |
脚本支持 | 优秀,输出格式化 | 一般 |
IPv6 支持 | 原生、完整 | 支持,但不如 ip 命令直观 |
小编总结建议: 对于新用户和日常管理,强烈建议使用 ip addr
命令,它功能更强大,是未来的趋势,只有在特定环境或个人习惯下,才考虑使用 ifconfig
。
区分内网 IP 与公网 IP
需要注意的是,上述所有命令查看到的 IP 地址通常是您的服务器在局域网(LAN)中的内网 IP(Private IP),168.x.x
、x.x.x
或 16-31.x.x
,这个地址用于在局域网内部通信。
如果您需要知道服务器在互联网上的公网 IP(Public IP),则需要向外部服务请求,最简单的方法是使用 curl
或 wget
命令查询一个专门返回 IP 地址的服务。
curl ifconfig.me
或者:
curl ip.sb
这些命令会返回您的服务器当前所使用的公网 IP 地址。
相关问答 FAQs
问题 1:为什么我的新安装的 CentOS 系统里 ifconfig
命令提示 “command not found”?
解答: 这是因为从 CentOS 7 开始,系统默认使用 iproute2
工具包(包含 ip
命令)来替代老旧的 net-tools
工具包(包含 ifconfig
命令)。ifconfig
被认为已过时,因此不再预装,如果您确实需要使用它,可以通过 sudo yum install net-tools
命令手动安装,但更推荐的做法是学习和使用 ip addr
命令。
问题 2:我如何快速只获取 IP 地址,而不要其他任何信息,方便用在脚本里?
解答: 有几种方法可以实现,最简洁的是使用 hostname -I
,它会直接列出所有 IP 地址,另一个常用的方法是结合 ip
命令和文本处理工具,ip a s ens33 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
,这个命令链会找到 ens33
接口,过滤出包含 inet
的行,然后提取第二个字段(IP地址/掩码),最后用 cut
命令只保留 IP 地址部分,对于获取公网 IP,curl ifconfig.me
是最直接的方式。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复