如何获取linux的ip地址
- Linux
- 2025-07-30
- 7
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
- 按下回车键。
示例输出:

解释:
- 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.
