Список сетевых интерфейсов Linux
В операционной системе Linux не только жесткие и SSD диски представлены файлами в специальной файловой системе, но и сетевые интерфейсы. Существует несколько способов посмотреть список сетевых интерфейсов Linux, но самый простой из них — это просто посмотреть содержимое папки в файловой системе.
В этой небольшой статье мы рассмотрим все основные способы выполнить эту задачу в терминале или графическом интерфейсе.
Список сетевых интерфейсов Linux
Сетевые интерфейсы проводного интернета Ethernet обычно имеют имя, начинающиеся с символов enp, например, enp3s0. Такое именование используется только если ваш дистрибутив использует systemd, иначе будет применена старая система именования, при которой имена начинаются с символов eth, например eth0. Беспроводные сетевые интерфейсы, обычно называются wlp или wlx при использовании systemd, например, wlp3s0. Без использования systemd имя беспроводного интерфейса будет начинаться с wlan, например wlan0. Все остальные интерфейсы обычно виртуальные. Один из самых основных виртуальных интерфейсов — lo. Это локальный интерфейс, который позволяет программам обращаться к этому компьютеру. А теперь рассмотрим несколько способов посмотреть их список.
1. Файловая система
Все файлы устройств сетевых интерфейсов находятся в папке /sys/class/net. Поэтому вы можете посмотреть её содержимое:
2. Утилита ifconfig
Утилита ifconfig выводит не только список сетевых интерфейсов, но и информацию о них, такую как состояние, IP адрес, MAC адрес и другие параметры. Для отображения всех интерфейсов достаточно выполнить программу без параметров:
3. Утилита ip
Программа ifconfig устарела и ей на смену пришла утилита ip. Она объединяет в себе функции нескольких программ, например ifconfig, route, brctl и других. Посмотреть список устройств с помощью ip можно выполнив команду:
Здесь информации намного меньше, показывается только состояние устройства, MTU и ещё несколько параметров. Можно вывести информацию в более компактном виде, использовав опцию -br:
В таком случае все данные отображаются в одну строчку, выводится состояние, MAC адрес и ещё несколько опций.
4. Утилита nmcli
Посмотреть всю нужную информацию можно и с помощью консольной утилиты управлением брандмауэром — nmcli:
Здесь выводится подключение NetworkManager, связанное с конкретным устройством, а также его состояние.
5. Утилита netstat
Программа netstat тоже умеет показывать сетевые интерфейсы и статистику по переданным данным если ей передать опцию -i:
6. Файл /proc/net/dev
В файле /proc/net/dev тоже содержится список всех сетевых интерфейсов, а также статистика их использования:
Выводы
Теперь вы знаете как посмотреть сетевые интерфейсы в Linux, как видите, это очень просто сделать. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как определить состояние сетвого интерфейса
Интересует вопрос о том как правильно проверить доступность и состояние одного или нескольких интерфейсов.
А самое интересное это как программно узнавать об изменении состояния сетевого интерфейса.
Объясни что ты понимаешь под доступностью и состоянием сетевых интерфейсов.
man ifconfig, man bash, man cron
Иногда сетевой интерфейс в ifconfig может быть не виден (если имеет неактивное состояние). В этом случае надо воспользоваться командой ip.
Я имел ввиду если в выводе команды ip a будут видны сетевые интерфейсы со STATE DOWN. ,
Иногда сетевой интерфейс в ifconfig может быть не виден
Хотя лучше таки ip, потому как ifconfig не покажет безымянные алисы, мать его.
а в каком пакете этот ваш ip?
$ dpkg -S /sbin/ip
iproute: /sbin/ip
Да, совсем забыл про опцию 🙂
>а в каком пакете этот ваш ip?
grep $interface /proc/net/dev
>Хотя лучше таки ip, потому как ifconfig не покажет безымянные алисы, мать его.
Ну и в том случае, если в файле /etc/udev/rules.d/70-persistent-net.rules окажутся одинаковые алиасы(иногда могут не переименоваться автоматически, при удалении/добавлении сетевой карты).
ethtool или miitool в зависимости от ситуации. Или смотреть на RUNNING, CARRIER и UP флаги в ifconfig.
Если хочется получать событие об изменении состояния то dbus и NetworkManager =)
Похожие темы
- Форум Несколько сетевых интерфейсов (2008)
- Форум состояние интерфейса (2004)
- Форум vmware и сетвая карта (2003)
- Форум Как определить загрузку сетевого интерфейса ? (2012)
- Форум определить интерфейс по USB ID (2019)
- Форум изменить MSS(MTU) сетевой карты (2006)
- Форум Помогите определить назначение сетевой платы (2020)
- Форум Выбор нужного сетевого интерфейса в программе. (2017)
- Форум Определить тип порта (2012)
- Форум Определить состояние ethernet-кабеля (2005)
networkctl – запрос состояния сетевых интерфейсов в Linux
Networkctl – это утилита командной строки для просмотра сводки сетевых устройств и состояния их подключения.
Она позволяет запрашивать и управлять сетевой подсистемой Linux.
Это одна из новых команд в новой версии systemd, которая присутствует в Ubuntu 18.04.
Она отображает состояние сетевых интерфейсов как показано в systemd-networkd.
Примечание. Перед запуском networkctl убедитесь, что systemd-networkd запущен, иначе вы получите неполный вывод, указанный следующей ошибкой:
WARNING: systemd-networkd is not running, output will be incomplete.
Вы можете проверить состояние systemd-networkd, выполнив следующую команду systemctl
$ sudo systemctl status systemd-networkd
Если systemd-networkd не запущен, вы можете запустить и включить его для запуска во время загрузки системы, используя следующие команды.
$ sudo systemctl start systemd-networkd $ sudo systemctlenable systemd-networkd
Чтобы получить информацию о статусе сетевых интерфейсов, запустите следующую команду networkctl без каких-либо аргументов.
$ networkctl IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp1s0 ether routable unmanaged 3 wlp2s0 wlan off unmanaged 4 vmnet1 ether routable unmanaged 5 vmnet8 ether routable unmanaged 5 links listed.
Чтобы отобразить все сетевые интерфейсы и их статус, используйте флаг -a.
$ networkctl -a IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp1s0 ether routable unmanaged 3 wlp2s0 wlan off unmanaged 4 vmnet1 ether routable unmanaged 5 vmnet8 ether routable unmanaged 5 links listed.
Чтобы получить список существующих интерфейсов и их статус, используйте команду list (эквивалентно использованию флага -a), как показано ниже:
$ networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp1s0 ether routable unmanaged 3 wlp2s0 wlan off unmanaged 4 vmnet1 ether routable unmanaged 5 vmnet8 ether routable unmanaged 5 links listed.
Для отображения информации о указанных ссылках, таких как тип, состояние, драйвер модуля ядра, аппаратное обеспечение и IP-адрес, настроенный DNS, сервер и т. д., используйте команду status.
Если вы не укажете какие-либо ссылки, маршрутизируемые ссылки отображаются по умолчанию.
$ networkctl status ● State: routable Address: 192.168.0.103 on enp1s0 172.16.236.1 on vmnet1 192.168.167.1 on vmnet8 fe80::8f0c:7825:8057:5eec on enp1s0 fe80::250:56ff:fec0:1 on vmnet1 fe80::250:56ff:fec0:8 on vmnet8 Gateway: 192.168.0.1 (TP-LINK TECHNOLOGIES CO.,LTD.) on enp1s0
$ networkctl status enp1s0 ● 2: enp1s0 Link File: /lib/systemd/network/99-default.link Network File: n/a Type: ether State: routable (unmanaged) Path: pci-0000:01:00.0 Driver: r8169 Vendor: Realtek Semiconductor Co., Ltd. Model: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller HW Address: 28:d2:44:eb:bd:98 (LCFC(HeFei) Electronics Technology Co., Ltd.) Address: 192.168.0.103 fe80::8f0c:7825:8057:5eec Gateway: 192.168.0.1 (TP-LINK TECHNOLOGIES CO.,LTD.)
Чтобы показать статус LLDP (Link Layer Discovery Protocol), используйте команду lldp.
По умолчанию вывод networkctl передается в пейджер, вы можете предотвратить это, добавив флаг -no-pager.
Вы также можете вывести данные без заголовков столбцов и нижнего колонтитула с помощью опции -no-legend.
Чтобы посмотреть дополнительную информацию:
$ networkctl -h OR $ man networkctl