Поиск по сайту:

Как найти доступные сетевые интерфейсы в Linux

Список Ethernet-карт в Linux и Unix

Мы можем настроить сетевые интерфейсы в Linux во время установки. Но некоторые из вас могут предпочесть сделать это после установки или изменить существующие настройки. Как вы уже знаете, вы должны сначала узнать, сколько интерфейсов доступно в системе, чтобы настроить параметры сети из командной строки. В этом подробном руководстве рассматриваются все возможные способы составления списка и нахождения доступных сетевых интерфейсов в операционных системах Linux и Unix.

Найдите доступные сетевые интерфейсы в Linux

Мы можем найти доступные сетевые карты несколькими способами. В этом руководстве мы обсудим 10 способов составить список сетевых карт в Linux.

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 (встроенный проводной адаптер Ethernet) и wlp9s0 . (адаптер беспроводной сети) на моем компьютере с Linux. Здесь lo — это интерфейс обратной связи, который используется для локального доступа ко всем сетевым службам. Он имеет IP-адрес 127.0.0.1.

Мы также можем использовать одну и ту же команду 'ifconfig' во многих вариантах UNIX, например FreeBSD, для вывода списка доступных сетевых карт.

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

Вы заметили, что эта команда также показывает состояние подключения сетевых интерфейсов? Если вы внимательно посмотрите на приведенный выше вывод, вы заметите, что моя карта Ethernet не подключена сетевым кабелем (см. слово "ВНИЗ" в приведенном выше выводе). Беспроводная сетевая карта подключена (см. слово "UP"). Для получения более подробной информации ознакомьтесь с нашим предыдущим руководством по нахождению состояния подключения сетевых интерфейсов в Linux.

Этих двух команд (ifconfig и ip) достаточно, чтобы найти доступные сетевые карты в ваших системах 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 с установленным Network Manager, вы можете просмотреть доступные сетевые интерфейсы с помощью инструмента 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.

Hwinfo - это утилита командной строки для просмотра информации об оборудовании в системе Linux. Он исследует оборудование, присутствующее в системе Linux, и отображает подробную информацию о каждом аппаратном устройстве.

Hwinfo доступен в официальных репозиториях многих дистрибутивов Linux. Чтобы установить hwinfo в системах на базе RPM, запустите:

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.

Чтобы отобразить список сетевых карт в Linux с помощью утилиты lshw, запустите:

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

Inxi — это еще один инструмент командной строки для получения информации о системе, такой как hwinfo и lshw. Он показывает системное оборудование, процессор, драйверы, Xorg, рабочий стол, ядро, версии GCC, процессы, использование оперативной памяти и множество другой полезной информации.

Чтобы отобразить информацию о сетевых картах, включая производителя, драйвер карты и количество доступных сетевых интерфейсов в системе 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

10. Отображение сетевых интерфейсов с помощью lspci

Команда lspci выводит список всех устройств PCI в системе Linux.

Чтобы просмотреть список доступных сетевых интерфейсов в системе Linux, используйте lspci с командой egrep, как показано ниже:

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.

Ознакомьтесь со следующими руководствами, чтобы узнать, как настроить IP-адрес в Linux.

  • Как настроить статический IP-адрес в Linux и Unix
  • Как настроить IP-адрес в Ubuntu 18.04 LTS
  • Как настроить статический и динамический IP-адрес в Arch Linux
  • Как назначить несколько IP-адресов одной сетевой карте в Linux

Статьи по данной тематике