在Linux系统中,获取本地IP地址是日常运维和网络管理中常见的操作,本地IP地址通常指设备在局域网内(如以太网、Wi-Fi)的IP地址,而非公网IP,Linux提供了多种命令和方法来获取本地IP,每种方法适用于不同的场景和需求,以下将详细介绍几种常用的命令及其使用方法,包括命令格式、输出解析及适用场景。

使用 ip
命令获取本地IP
ip
命令是Linux系统中强大的网络配置工具,取代了传统的ifconfig
命令,它可以显示和操作路由、网络设备、策略路由和隧道等。
基本语法
ip addr show
示例输出
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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever
解析
lo
是回环接口,IP为0.0.1
,用于本地通信。eth0
是以太网接口,本地IP为168.1.100
。
提取本地IP的技巧
若需直接获取IPv4地址,可结合grep
和awk
:
ip addr show eth0 | grep "inet " | awk '{print $2}' | cut -d/ -f1
此命令会输出168.1.100
。
使用 ifconfig
命令获取本地IP
ifconfig
是传统的网络配置工具,在部分Linux发行版中可能需要安装net-tools
包。

基本语法
ifconfig
示例输出
eth0: 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::21a:2bff:fe3c:4d5e prefixlen 64 scopeid 0x20<link> ether 00:1a:2b:3c:4d:5e 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.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
提取本地IP的技巧
ifconfig eth0 | grep "inet " | awk '{print $2}'
输出结果为168.1.100
。
使用 hostname
命令获取本地IP
hostname
命令通常用于显示或设置系统的主机名,但结合-I
选项可快速获取所有本地IP地址。
基本语法
hostname -I
示例输出
168.1.100 10.0.0.1
此命令会输出所有活动的IPv4地址,空格分隔。
使用 nmcli
命令获取本地IP
nmcli
是NetworkManager的命令行工具,适用于需要管理网络连接的场景。

基本语法
nmcli connection show | grep "eth0" | awk '{print $1}' nmcli connection show eth0 | grep "ipv4.addresses"
示例输出
ipv4.addresses: 192.168.1.100/24
使用 ss
或 netstat
命令获取监听IP
若需查看正在监听的端口和对应的IP地址,可使用ss
或netstat
。
基本语法
ss -tuln | grep LISTEN
示例输出
tcp LISTEN 0 128 192.168.1.100:22 0.0.0.0:*
不同命令的适用场景对比
命令 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
ip |
功能强大,信息全面 | 语法较复杂 | 现代Linux发行版,网络调试 |
ifconfig |
简单直观,兼容旧系统 | 逐渐被淘汰 | 旧版Linux或需要兼容性的环境 |
hostname |
快速获取所有IP | 无法指定接口 | 快速查看所有活动IP |
nmcli |
适合网络连接管理 | 依赖NetworkManager | 管理网络连接和配置 |
ss/netstat |
查看端口和监听IP | 需要结合其他命令提取IP | 网络服务调试 |
相关问答FAQs
Q1: 如何获取Linux系统的公网IP地址?
A1: 可通过访问外部服务获取公网IP,
curl ifconfig.me
或使用wget
:
wget -qO- ifconfig.me
这些命令会直接返回当前设备的公网IP地址。
Q2: 为什么ip addr show
显示多个IP地址?
A2: Linux设备可能同时拥有多个IP地址,原因包括:
- 配置了多个虚拟IP(alias)。
- 使用了多个网络接口(如eth0、wlan0)。
- 启用了IPv6地址(显示为
inet6
)。
可通过指定接口(如ip addr show eth0
)或过滤IPv4(grep "inet "
)来精简输出。