如何在 Linux 上查找可用的网络接口

我们可以在安装期间在 Linux 中配置网络接口。 但是,你们中的一些人可能更喜欢在安装或更改现有设置后执行此操作。 如您所知,您必须首先知道系统上有多少个可用接口才能从命令行配置网络设置。 本详细教程介绍了列出和查找 Linux 和 Unix 操作系统上可用网络接口的所有可能方法。

在 Linux 中查找可用的网络接口

我们可以通过几种方式找到可用的网卡。 在本指南中,我们将讨论列出 Linux 中网络接口卡的 10 种方法。

1. 使用 ifconfig 命令列出网络接口

查找网络接口详细信息的最常用方法 ifconfig 命令。 我相信一些 Linux 用户可能仍在使用它。

$ ifconfig -a

样本输出:

enp5s0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 24:b6:fd:37:8b:29 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 171420 bytes 303980988 (289.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 171420 bytes 303980988 (289.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp9s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.225.37 netmask 255.255.255.0 broadcast 192.168.225.255
inet6 2409:4072:6183:c604:c218:85ff:fe50:474f prefixlen 64 scopeid 0x0<global>
inet6 fe80::c218:85ff:fe50:474f prefixlen 64 scopeid 0x20<link>
ether c0:18:85:50:47:4f txqueuelen 1000 (Ethernet)
RX packets 564574 bytes 628671925 (599.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 299706 bytes 60535732 (57.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

正如您在上面的输出中看到的,我有两个网络接口,即 enp5s0 (板载有线以太网适配器)和 wlp9s0 (无线网络适配器)在我的 Linux 机器上。 这里, lo 是环回接口,用于在本地访问所有网络服务。 它有一个IP地址 127.0.0.1.

我们也可以使用相同的 'ifconfig' 许多 UNIX 变体中的命令,例如 example 自由BSD列出可用的网卡。

2. 使用 ip 命令列出网络接口

'ifconfig' 命令在最新的 Linux 版本中已弃用。 所以你可以使用 'ip' 命令显示网络接口,如下所示。

$ ip link show

样本输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 24:b6:fd:37:8b:29 brd ff:ff:ff:ff:ff:ff
3: wlp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether c0:18:85:50:47:4f brd ff:ff:ff:ff:ff:ff
使用“ip”命令查找可用的网络接口

您也可以使用以下命令。

$ ip addr
$ ip -s link

您是否注意到这些命令还显示了网络接口的连接状态? 如果你仔细看上面的输出,你会注意到我的以太网卡没有连接网线(见字 “向下” 在上面的输出中)。 和无线网卡连接(见字 “向上”)。 有关更多详细信息,请查看我们之前的指南 在 Linux 上查找网络接口的连接状态.

这两个命令(ifconfigip) 足以在您的 Linux 系统上找到可用的网卡。

但是,在 Linux 上列出网络接口的方法很少。

3. 使用 /sys/class/net/ 目录列出网络接口

Linux内核将网络接口详细信息保存在里面 /sys/class/net 目录。 您可以通过查看此目录来验证可用接口的列表。

$ ls /sys/class/net

样本输出:

enp5s0  lo  virbr0  wlp9s0

4. 使用 /proc/net/dev 文件列出网络接口

在 Linux 操作系统中, /proc/net/dev 文件包含有关网络接口的统计信息。

要查看可用的网卡,只需使用命令查看其内容:

$ cat /proc/net/dev

样本输出:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:    2836      30    0    0    0     0          0         0     2836      30    0    0    0     0       0          0
enp5s0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
wlp9s0: 557664882  402062    0    0    0     0          0         0 20087136  165358    0    0    0     0       0          0
virbr0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

5. 使用 netstat 命令列出网络接口

netstat 命令显示各种详细信息,例如网络连接、路由表、接口统计信息、伪装连接和多播成员资格。

$ netstat -i

样本输出:

Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp5s0           1500        0      0      0 0             0      0      0      0 BMU
lo              65536       30      0      0 0            30      0      0      0 LRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU
wlp9s0           1500   402063      0      0 0        165361      0      0      0 BMRU

请注意 netstat 已过时. 替代品 "netstat -i""ip -s link". 另请注意,此方法将仅列出活动接口,而不是所有可用接口。

6. 使用 nmcli 命令列出网络接口

nmcli 是用于控制 NetworkManager 和报告网络状态的命令行工具。 它用于创建、显示、编辑、删除、激活和停用网络连接以及显示网络状态。

如果您有安装了网络管理器的 Linux 系统,您可以使用 nmcli 工具使用以下命令列出可用的网络接口:

$ nmcli device status

样本输出:

DEVICE          TYPE      STATE                   CONNECTION    
wlp9s0          wifi      connected               JioFi4_12E9FE 
virbr0          bridge    connected (externally)  virbr0        
p2p-dev-wlp9s0  wifi-p2p  disconnected            --            
enp5s0          ethernet  unavailable             --            
lo              loopback  unmanaged               --            

您还可以使用此命令显示 Linux 系统中的网络接口:

$ nmcli connection show

大多数上述实用程序都预装在大多数 Linux 和 Unix 系统中。 还有一些外部实用程序可用于显示网卡列表。

7. 使用 hwinfo 显示网络接口列表

华文资讯 是一个命令行实用程序,用于查看 Linux 系统中的硬件信息。 它探测 Linux 系统中存在的硬件并显示每个硬件设备的详细信息。

Hwinfo 可在许多 Linux 发行版的官方存储库中找到。 要在基于 RPM 的系统上安装 hwinfo,请运行:

$ sudo dnf install hwinfo

在基于 Deb 的系统上,您可以使用以下命令安装 hwinfo:

$ sudo apt install hwinfo

安装后,运行以下命令以使用 hwinfo 实用程序列出网络接口的名称:

$ sudo hwinfo --short --network

样本输出:

network interface:                                              
  enp5s0               Ethernet network interface
  virbr0               Ethernet network interface
  wlp9s0               Ethernet network interface
  lo                   Loopback network interface

8. 使用 lshw 显示网络接口

Lshw(硬件列表器) 是一个 CLI 实用程序,可提供 Linux 系统硬件配置的详细信息。

要使用 lshw 实用程序显示 Linux 中的网卡列表,请运行:

$ sudo lshw -class network -short

样本输出:

H/W path                 Device      Class          Description
===============================================================
/0/100/1c.1/0            enp5s0      network        RTL810xE PCI Express Fast Ethernet controller
/0/100/1c.3/0            wlp9s0      network        AR9285 Wireless Network Adapter (PCI-Express)

9.使用inxi查看网络接口

印西 是另一个命令行系统信息工具,如 hwinfo 和 lshw。 它显示系统硬件、CPU、驱动程序、Xorg、桌面、内核、GCC 版本、进程、RAM 使用情况以及各种其他有用信息。

要显示有关网卡的信息,包括 Linux 系统中的供应商、网卡驱动程序和可用网络接口的数量,请使用以下命令运行 inix -N 选项:

$ inxi -N
Network:   Device-1: Realtek RTL810xE PCI Express Fast Ethernet driver: r8169 
           Device-2: Qualcomm Atheros AR9285 Wireless Network Adapter driver: ath9k 

相关阅读:

  • 如何在 Linux 中检查或查找 CPU 信息

10. 使用 lspci 显示网络接口

lspci 命令列出 Linux 系统中的所有 PCI 设备。

要查看 Linux 系统中可用网络接口的列表,请使用 lspci鹭鸶 命令如下:

$ lspci | egrep -i 'network|ethernet|wireless|wi-fi'

样本输出:

05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 05)
09:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

仅列出可用网络接口的名称

到目前为止,我们看到的是在 Linux 中查找可用网络接口的各种方法。 在上述所有方法中,我们显示了可用的网络接口以及一些其他详细信息,例如 RX/TX 详细信息、Mac 地址、连接状态、模式、网络类型等等。 如果要去除不必要的详细信息并仅列出网络接口的名称,可以使用以下命令之一。

$ ifconfig -a | sed 's/[ t].*//;/^$/d'

样本输出:

enp5s0:
lo:
virbr0:
wlp9s0:

要从输出中排除环回设备 (lo),请改为运行以下命令:

$ ifconfig -a | sed 's/[ t].*//;/^(lo|)$/d'

如前所述, ifconfig 命令已弃用。 如果 ifconfig 命令不可用,请使用 ip 命令仅显示网络接口的名称 -o 标志如下:

$ ip -o link show | awk -F': ' '{print $2}'
lo
enp5s0
wlp9s0
virbr0

您也可以使用以下命令:

$ ip addr show | awk '/^[1-9]/ {print $2}'

结论

在本指南中,我们讨论了在 Linux 和 Unix 上查找和列出可用网络接口的十种不同方法。 我们还研究了几种在 Linux 中仅显示网络接口名称的方法。

查看以下指南以了解如何在 Linux 上配置 IP 地址。

  • 如何在 Linux 和 Unix 中配置静态 IP 地址
  • 如何在 Ubuntu 18.04 LTS 中配置 IP 地址
  • 如何在 Arch Linux 中配置静态和动态 IP 地址
  • 如何在 Linux 中为单个网卡分配多个 IP 地址