如何检查 Linux 中是否存在网络适配器

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查你的 Linux 系统中是否存在网络适配器。我们将探讨三种常用的方法来实现这一目标。

首先,你将使用带有 -C network 选项的 lshw 命令来列出网络硬件的详细信息。接下来,你将通过检查 /sys/class/net 目录的内容来验证网络接口是否存在。最后,你将使用 lspci 命令列出 PCI 设备并过滤出网络控制器,这为识别你的网络适配器提供了另一种方法。通过完成这些步骤,你将获得在 Linux 系统上诊断网络硬件是否存在的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/FileandDirectoryManagementGroup -.-> linux/whereis("File/Command Finding") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/ls -.-> lab-558732{{"如何检查 Linux 中是否存在网络适配器"}} linux/whereis -.-> lab-558732{{"如何检查 Linux 中是否存在网络适配器"}} linux/ps -.-> lab-558732{{"如何检查 Linux 中是否存在网络适配器"}} linux/ifconfig -.-> lab-558732{{"如何检查 Linux 中是否存在网络适配器"}} linux/netstat -.-> lab-558732{{"如何检查 Linux 中是否存在网络适配器"}} linux/ip -.-> lab-558732{{"如何检查 Linux 中是否存在网络适配器"}} end

使用 lshw -C network 检查适配器

在这一步中,我们将探讨如何使用 lshw 命令识别连接到你系统的网络适配器。lshw 代表“list hardware”(列出硬件),是一个用于获取系统硬件配置详细信息的强大工具。

要专门列出网络适配器,我们使用 -C 选项,后面跟上类名 network

如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来完成此操作。

现在,输入以下命令并按回车键:

sudo lshw -C network

让我们来分解一下这个命令:

  • sudo:正如我们之前所学,这允许我们以超级用户权限运行命令,访问详细的硬件信息通常需要这样做。
  • lshw:用于列出硬件的命令。
  • -C network:此选项过滤输出,仅显示属于“network”类的设备。

你将看到类似以下的输出(确切的详细信息会根据虚拟机的配置而有所不同):

  *-network
       description: Ethernet interface
       product: Ethernet controller
       vendor: Red Hat, Inc.
       physical id: 3
       bus info: pci@0000:00:03.0
       logical name: eth0
       version: 00
       serial: 52:54:00:xx:xx:xx
       size: 1Gbit/s
       capacity: 10Gbit/s
       width: 32 bits
       clock: 66MHz
       capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autoneg negotiated
       configuration: autonegotiation=on broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.18.0.x latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       resources: irq:24 ioport:c040(size=32) memory:fe000000-fe000fff

此输出提供了关于你的网络适配器的大量信息,包括:

  • description:设备的类型(以太网接口)。
  • productvendor:硬件的制造商和型号。
  • logical name:操作系统用于此接口的名称(例如 eth0)。这对于配置网络设置很重要。
  • serial:网络适配器的 MAC 地址。
  • sizecapacity:连接的当前速度和最大能力。
  • configuration:关于此接口当前设置的详细信息,包括如果已分配的 IP 地址。

理解此输出有助于你识别网络接口并解决网络问题。

点击 Continue 进入下一步。

验证 /sys/class/net 中的接口

在 Linux 中,/sys 文件系统提供了对内核设备模型的视图。它是一个虚拟文件系统,这意味着其中的文件和目录并非以传统方式存储在磁盘上,而是由内核生成以表示系统信息。

具体来说,/sys/class/net 是一个目录,包含指向系统检测到的所有网络接口的符号链接。这些链接的名称对应于网络接口的逻辑名称,就像我们在上一步中看到的 eth0 一样。

让我们列出这个目录的内容,以查看网络接口。我们将使用 ls 命令,该命令用于列出文件和目录。

在终端中输入以下命令并按回车键:

ls /sys/class/net/

你应该会看到类似以下的输出:

eth0  lo
  • eth0:这是我们在上一步中使用 lshw 识别出的以太网接口。
  • lo:这代表“loopback”(回环)接口。它是一个特殊的虚拟接口,计算机使用它与自身进行通信。即使计算机未连接到物理网络,它对于网络软件的正常运行也是必不可少的。

此目录中存在 eth0lo 确认了系统识别这些网络接口。通过这个目录,你可以快速查看系统上有哪些可用的网络接口。

点击 Continue 继续。

使用 lspci 检查硬件

在这一步中,我们将使用 lspci 命令列出连接到你系统的 PCI 设备的信息。PCI(Peripheral Component Interconnect,外围组件互连)是一种标准总线,用于将硬件设备连接到计算机的主板。包括网卡、显卡和存储控制器在内的许多设备都是通过 PCI 或其继任者 PCI Express(PCIe)连接的。

lspci 命令对于快速识别已连接的硬件及其基本信息很有用。

在你的终端中输入以下命令并按回车键:

lspci

你将看到一个 PCI 设备列表。输出大致如下:

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE controller: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:01.2 USB controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Red Hat, Inc. QXL Paravirtual graphic driver
00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:04.0 Communication controller: Red Hat, Inc. Virtio console
00:05.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI
00:06.0 Unclassified device [0000]: Red Hat, Inc. Virtio balloon
00:07.0 Audio device: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)

每一行代表一个 PCI 设备。格式通常为 总线:设备.功能 类别: 厂商 产品

  • 总线:设备.功能:标识设备在 PCI 总线上的位置。
  • 类别:描述设备的类型(例如,主机桥、以太网控制器、VGA 兼容控制器)。
  • 厂商产品:标识设备的制造商和具体型号。

注意显示 Ethernet controller: Red Hat, Inc. Virtio network device 的那一行。这对应于我们使用 lshw 以及在 /sys/class/net 中看到的网络适配器。lspci 从 PCI 总线的角度为你提供了对硬件的不同视角。

你可以结合使用 lspci-v 等选项以获得更详细的输出,或者使用 -nn 以数字格式显示厂商和设备 ID,这对于在网上查找硬件信息很有用。

例如,尝试:

lspci -v

这将提供每个设备的更详细信息。当你查看完详细输出后,按 q 退出。

点击 Continue 完成此实验。

总结

在这个实验中,我们学习了如何使用各种命令行工具来检查 Linux 中是否存在网络适配器。我们首先使用 sudo lshw -C network 命令列出网络接口的详细信息,包括其描述、厂商、产品和配置细节。这个命令能全面概述硬件情况。

接下来,我们探索了 /sys/class/net 目录,该目录为系统上存在的每个网络接口提供了一个符号链接,这是一种快速验证它们是否存在的方法。最后,我们使用 lspci 命令检查 PCI 总线,并通过筛选输出中的“Ethernet controller”或类似描述来识别网络控制器,这为确认网络硬件的存在提供了另一种方法。这些步骤共同展示了在 Linux 环境中识别网络适配器的不同方法。