ifconfig或
ip addr来获取IP地址,使用
ifconfig会显示网络配置详情,而
ip addr提供更详细的网络状态信息。
Linux系统的IP地址有多种方法,以下是几种常见且详细的方式:
使用ifconfig命令
ifconfig是一个传统的网络配置命令,虽然在一些新的Linux发行版中已经被标记为过时,但在许多系统上仍然可用。
步骤:
- 打开终端。
- 输入命令:
ifconfig - 按下回车键。
示例输出:
eth0 Link encap:Ethernet HWaddr 00:0c:29:68:22:1d
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe68:221d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25727 errors:0 dropped:0 overruns:0 frame:0
TX packets:14353 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15345678 (15.3 MB) TX bytes:1234567 (1.2 MB)
解释:
inet addr:192.168.1.100是IPv4地址。inet6 addr: fe80::20c:29ff:fe68:221d/64是IPv6地址。
使用ip命令
ip命令是ifconfig的现代替代品,功能更强大且更灵活。
步骤:
- 打开终端。
- 输入命令:
ip addr show或简写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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:68:22:1d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86400sec preferred_lft 86400sec
inet6 fe80::20c:29ff:fe68:221d/64 scope link
valid_lft forever preferred_lft forever
解释:
inet 192.168.1.100/24是IPv4地址及其子网掩码。inet6 fe80::20c:29ff:fe68:221d/64是IPv6地址及其前缀长度。
使用hostname命令
hostname命令可以显示系统的主机名和IP地址。
步骤:
- 打开终端。
- 输入命令:
hostname -I - 按下回车键。
示例输出:
168.1.100
解释:
- 该命令仅显示IPv4地址,不包括IPv6地址。
使用nmcli命令
nmcli是NetworkManager的命令行工具,用于管理网络连接。
步骤:
- 打开终端。
- 输入命令:
nmcli device show - 按下回车键。
示例输出:
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected Wired connection 1
lo loopback unmanaged -
解释:

eth0是网络接口名称。connected表示接口已连接。Wired connection 1是连接名称。
使用图形界面(GNOME为例)
在桌面环境中,可以通过图形界面查看IP地址。
步骤:
- 打开“设置”应用。
- 选择“网络”或“Wi-Fi”选项。
- 点击当前连接的网络。
- 查看“IP地址”信息。
解释:
- 图形界面提供了直观的方式来查看和管理网络设置。
使用curl或wget命令获取公网IP
有时需要获取Linux系统的公网IP地址,可以使用curl或wget命令。
使用curl命令:
- 打开终端。
- 输入命令:
curl ifconfig.me - 按下回车键。
示例输出:
168.1.100
使用wget命令:
- 打开终端。
- 输入命令:
wget -qOifconfig.me - 按下回车键。
示例输出:
168.1.100
解释:
ifconfig.me是一个提供公网IP地址查询服务的网站。curl和wget命令都可以用于获取该信息。
使用iptables查看NAT规则中的IP地址
在某些情况下,可能需要通过iptables查看NAT规则中的IP地址。
步骤:
- 打开终端。
- 输入命令:
sudo iptables -t nat -L -n -v - 按下回车键。
示例输出:

Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all - 0.0.0.0/0 0.0.0.0/0 masquerade match-any
解释:
MASQUERADE表示NAT地址转换规则。source和destination字段显示了相关的IP地址信息。
使用脚本自动获取IP地址
可以编写一个简单的Shell脚本来自动获取并显示IP地址。
示例脚本:
#!/bin/bash
# 获取IPv4地址
ipv4=$(hostname -I | awk '{print $1}')
echo "IPv4 Address: $ipv4"
# 获取IPv6地址
ipv6=$(hostname -I | awk '{print $2}')
echo "IPv6 Address: $ipv6"
保存并运行脚本:
- 将上述脚本保存为
get_ip.sh。 - 赋予执行权限:
chmod +x get_ip.sh - 运行脚本:
./get_ip.sh
示例输出:
IPv4 Address: 192.168.1.100
IPv6 Address: fe80::20c:29ff:fe68:221d
解释:
- 脚本使用
hostname -I命令获取所有IP地址,并通过awk提取IPv4和IPv6地址。
使用arp命令查看ARP表
arp命令可以显示ARP缓存表,其中包含本地网络中设备的IP地址和MAC地址映射。
步骤:
- 打开终端。
- 输入命令:
arp -a - 按下回车键。
示例输出:
? (192.168.1.1) at 00:16:3e:48:9c:2b [ether] on eth0
? (192.168.1.100) at 00:0c:29:68:22:1d [ether] on eth0
解释:
- 表示动态条目。
(192.168.1.1)是IP地址。at 00:16:3e:48:9c:2b是对应的MAC地址。[ether]表示接口类型为以太网。on eth0表示接口名称。
使用route命令查看路由表
route命令可以显示系统的路由表,其中包含默认网关的IP地址。

步骤:
- 打开终端。
- 输入命令:
route -n - 按下回车键。
示例输出:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
解释:
Destination表示目标网络。Gateway表示下一跳网关。Genmask表示网络掩码。Flags表示路由标志。Metric表示路由优先级。Ref表示引用计数。Use表示使用次数。Iface表示接口名称。
归纳表格
| 方法 | 命令/步骤 | IPv4地址示例 | IPv6地址示例 |
|---|---|---|---|
ifconfig |
ifconfig |
168.1.100 | fe80::20c:29ff:fe68:221d |
ip |
ip addr show |
168.1.100 | fe80::20c:29ff:fe68:221d |
hostname |
hostname -I |
168.1.100 | N/A |
nmcli |
nmcli device show |
N/A | N/A |
| 图形界面 | 打开“设置” -> “网络” -> 查看当前连接 | 168.1.100 | N/A |
curl/wget |
curl ifconfig.me 或 wget -qOifconfig.me |
168.1.100 | N/A |
iptables |
sudo iptables -t nat -L -n -v |
N/A | N/A |
| 脚本 | get_ip.sh |
168.1.100 | fe80::20c:29ff:fe68:221d |
arp |
arp -a |
N/A | N/A |
route |
route -n |
N/A | N/A |
相关问答FAQs
Q1: 如何在Linux中查看所有网络接口的IP地址?
A1: 可以使用ip addr show或简写ip a命令来查看所有网络接口的IP地址,该命令会列出所有接口的详细信息,包括IPv4和IPv6地址、子网掩码等。
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:68:22:1d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86400sec preferred_lft 86400sec
inet6 fe80::20c:29ff:fe68:221d/64 scope link
valid_lft forever preferred_lft forever
通过这种方式,你可以查看系统中所有网络接口的IP地址信息。
Q2: 如果我想查看Linux系统的公网IP地址,应该怎么做?
A2: 要查看Linux系统的公网IP地址,可以使用curl或wget命令访问提供公网IP查询服务的网站,如ifconfig.me,以下是两种常用的方法:
使用curl命令:
curl ifconfig.me
这将返回你的公网IP地址,
168.1.100
使用wget命令:
wget -qOifconfig.me
同样,这将输出你的公网IP地址,
192.
