介绍
在本实验中,你将学习如何使用强大且现代的 ip a 命令来识别 Linux 系统上的关键网络寻址信息。主要目标是熟练掌握检查系统网络接口以及在命令输出中定位特定细节的能力,包括 MAC 地址、IPv4 地址和 IPv6 地址。
你将首先执行 ip a 命令来显示所有网络接口的全面概览,例如回环接口 (lo) 和主以太网接口 (eth0)。在此之后,你将学习解析详细输出,以精确定位 MAC 地址的 link/ether 行、IPv4 地址的 inet 行以及 IPv6 地址的 inet6 行,从而巩固你对 Linux 网络分析基础的理解。
使用 ip a 显示所有网络接口信息
在此步骤中,你将学习使用 ip 命令,这是在 Linux 系统上查看和操作网络接口、IP 地址及路由的现代且首选的工具。我们将从最基础的命令开始,以显示所有可用网络接口的信息。
ip a 命令是 ip address show 的简写。它提供了系统网络配置的全面概览。
首先,请确保你已进入终端。你的默认路径是 ~/project。现在,执行 ip a 命令来列出所有网络接口及其关联的地址。
ip a
你将看到一个详细的输出,列出了所有网络接口。通常,你会看到几个接口:
lo: 这是回环接口 (loopback interface),是系统用于自身通信的虚拟网络接口。它始终拥有 IP 地址127.0.0.1。eth0(或类似名称,如enp0s5): 这是你的主以太网接口 (Ethernet interface),用于将你的系统连接到外部网络。注意altname字段,它提供了接口的替代名称。docker0: 如果安装了 Docker,你可能会看到一个docker0接口,这是 Docker 为容器网络创建的虚拟网桥。
你的输出将类似于下面的示例,尽管具体的名称和地址会有所不同。
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:16:3e:0e:d8:3c brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159975sec preferred_lft 1892159975sec
inet6 fe80::216:3eff:fe0e:d83c/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:60:7e:6f:bc brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
花点时间检查一下输出。在接下来的步骤中,我们将分解这些信息以识别 MAC 地址和 IP 地址等具体细节。
查找 MAC 地址 (link/ether)
在此步骤中,你将学习如何从 ip a 命令的输出中识别媒体访问控制 (MAC) 地址。MAC 地址是分配给网络接口卡 (NIC) 的唯一硬件级标识符。它也被称为物理地址,表示为一个 12 位十六进制数。
在上一步中,你运行了 ip a 并看到了大量信息。现在,让我们专注于查找 MAC 地址。找到你的主网络接口,通常是 eth0。MAC 地址位于以 link/ether 开头的行上。
为了更方便地查找,你可以将 ip a 的输出通过管道传递给 grep 命令,以仅过滤包含 MAC 地址的行。管道符号 | 将其左侧命令的输出作为其右侧命令的输入。
在你的终端中,运行以下命令:
ip a | grep "link/ether"
此命令将仅显示 ip a 输出中包含字符串 "link/ether" 的行。
你将看到一个更短的输出,可以轻松地找到 MAC 地址。以冒号分隔的 12 个十六进制字符就是 MAC 地址。
link/ether 00:16:3e:0e:d8:3c brd ff:ff:ff:ff:ff:ff
link/ether 02:42:60:7e:6f:bc brd ff:ff:ff:ff:ff:ff
回环接口 lo 没有传统的 MAC 地址,因此它不会出现在此过滤后的输出中。在此示例中,地址 00:16:3e:0e:d8:3c 是 eth0 接口的 MAC 地址。你的地址会有所不同,但格式相同。
查找 IPv4 地址 (inet)
在此步骤中,你将定位互联网协议版本 4 (IPv4) 地址。与物理 MAC 地址不同,IP 地址是分配给你的设备的逻辑地址,用于在网络上进行通信。IPv4 地址是最常见的格式,由四个用点分隔的数字表示(例如,192.168.1.10)。
在 ip a 命令的输出中,IPv4 地址位于以 inet 开头的行上。我们可以再次使用 grep 命令来过滤输出,就像我们为 MAC 地址所做的那样。为了避免匹配 inet6,一个好的做法是在搜索模式中的 inet 后面加上一个空格。
在你的终端中,执行以下命令来查找你系统上配置的所有 IPv4 地址:
ip a | grep "inet "
此命令将过滤输出,仅显示包含 IPv4 地址的行。你通常会看到几个:一个用于回环接口 (lo),一个用于你的主网络接口 (eth0),以及可能还有其他如 docker0。
inet 127.0.0.1/8 scope host lo
inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
从这个输出中,你可以识别出多个 IPv4 地址:
127.0.0.1: 这是回环地址,系统用它来与自身通信。172.16.50.202/24: 这是eth0接口的主 IPv4 地址,用于与网络上的其他设备通信。/24是 CIDR 表示法,它定义了网络的子网掩码。你的地址会有所不同。172.17.0.1/16: 这是docker0网桥的 IPv4 地址。
查找 IPv6 地址 (inet6)
在最后这个步骤中,你将识别互联网协议版本 6 (IPv6) 地址。IPv6 是 IPv4 的继任者,旨在解决 IPv4 地址最终耗尽的问题。IPv6 地址长达 128 位,并以十六进制表示法书写,用冒号分隔(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
与 IPv4 类似,ip a 命令也会显示 IPv6 信息。包含 IPv6 地址的行会用 inet6 明确标记。我们将最后一次使用 grep 来隔离这些信息。
在你的终端中,运行以下命令来查找你系统上的所有 IPv6 地址:
ip a | grep "inet6"
此命令将显示你接口上包含 IPv6 地址的行。
inet6 ::1/128 scope host
inet6 fe80::216:3eff:fe0e:d83c/64 scope link
从这个输出中,你可以识别出两个 IPv6 地址:
::1/128: 这是 IPv6 回环地址的压缩格式,相当于 IPv4 中的127.0.0.1。fe80::216:3eff:fe0e:d83c/64: 这是eth0接口的链路本地 IPv6 地址。链路本地地址会自动配置在所有启用了 IPv6 的接口上,并仅用于在同一本地网络段上的通信。你的地址会有所不同。
恭喜!你现在已经学会了如何使用 ip a 命令来识别 Linux 系统上的 MAC 地址、IPv4 地址和 IPv6 地址。
总结
在此次实验中,你学习了如何使用 ip a 命令来识别 Linux 中的网络地址。你执行了 ip a,这是一个现代且推荐的网络配置工具,用于显示所有网络接口的全面信息。输出显示了回环接口 (lo) 和主以太网接口 (eth0) 的详细信息,提供了系统网络配置的完整概览。
通过检查 ip a 命令的输出,你学会了定位特定的网络标识符。你成功地识别了 MAC 地址,它位于标记为 link/ether 的行上。此外,你还找到了系统 IPv4 地址(在 inet 标签旁边)及其 IPv6 地址(在 inet6 标签旁边),掌握了在 Linux 系统上检索基本网络地址信息的关键技能。



