Сетевой интерфейс в Linux представляет собой объект ядра, через который система принимает и отправляет сетевой трафик. Его имя нужно для настройки IP-адресов, маршрутов, firewall, NAT, VPN, VLAN, bridge и контейнерных сетей.
Быстрее всего получить список интерфейсов и их состояние помогают команды ip -br link и ip -br addr. Чтобы узнать интерфейс, через который система отправит пакет к конкретному адресу, используйте ip route get 1.1.1.1. В выводе будет поле dev, например dev enp3s0.
ip -br link
ip -br addr
ip route get 1.1.1.1Имя enp3s0 может обозначать физический сетевой адаптер, а br0, vlan20 или veth1234 будут виртуальными интерфейсами. Статус UP показывает административное включение, а флаг LOWER_UP обычно подтверждает наличие физического линка. На сервере с несколькими картами, VLAN или VPN эти различия определяют, какую команду и какой интерфейс нужно использовать.
Если требуется полный набор команд для проверки IP-адресов, линка, маршрутов, DNS и портов, пригодится шпаргалка по диагностике сетевых интерфейсов Linux. Облачный VDS с несколькими сетевыми подключениями можно развернуть в Timeweb Cloud, а команды из этой статьи применять для проверки сетевой конфигурации.
1. Что такое сетевой интерфейс в Linux
Сетевой интерфейс связывает сетевой стек Linux с конкретным каналом передачи данных. Через него проходят Ethernet-кадры, IP-пакеты, ARP-запросы и другой трафик. Интерфейс может быть связан с физическим устройством, виртуальным каналом или логической сетевой функцией.
У интерфейса есть несколько независимых характеристик:
- имя, например
enp3s0илиlo; - тип устройства, например Ethernet, bridge, VLAN или loopback;
- MAC-адрес, если он предусмотрен типом интерфейса;
- IPv4- и IPv6-адреса;
- административный статус, обычно
UPилиDOWN; - состояние физического канала, например
LOWER_UPилиNO-CARRIER; - связанные маршруты и правила фильтрации.
Имя интерфейса не совпадает с именем сетевой карты. Один физический адаптер может иметь несколько логических интерфейсов, например родительский enp3s0 и VLAN enp3s0.20. Bridge может объединять физический порт и виртуальные порты, а VPN создаёт отдельный туннельный интерфейс.
2. Какие бывают сетевые интерфейсы
Для практической работы удобно разделять интерфейсы по способу создания и назначению.
| Тип | Примеры имён | Назначение |
|---|---|---|
| Физический Ethernet | eth0, enp3s0, ens18 | Подключение к сетевой карте или виртуальному сетевому адаптеру гипервизора |
| Loopback | lo | Связь процессов с самим хостом через адреса 127.0.0.1 и ::1 |
| Bridge | br0, docker0, cni0 | Объединение портов на канальном уровне |
| VLAN | enp3s0.20, vlan20 | Работа с тегированным трафиком 802.1Q |
| Bond | bond0 | Агрегация или резервирование физических подключений |
| Veth | veth0, длинные имена контейнеров | Виртуальная пара Ethernet для связи пространств имён |
| Туннельный | wg0, tun0 | Передача трафика через VPN или другой туннель |
Один хост может одновременно содержать десятки интерфейсов. Например, сервер Kubernetes часто имеет физический порт, loopback, bridge, veth-порты контейнеров, интерфейс CNI и туннель overlay-сети.
3. Как посмотреть сетевые интерфейсы в Linux
Команда ip link show выводит список интерфейсов на уровне канала. Она показывает порядковый номер, имя, флаги, MTU, состояние и MAC-адрес.
ip link show
ip link show dev enp3s0
ip -br linkСокращённый формат удобен для первичной проверки. Пример вывода:
lo UNKNOWN 00:00:00:00:00:00
ens18 UP 52:54:00:12:34:56
br0 UP 02:42:ac:11:00:01IP-адреса и префиксы показывает команда ip addr show:
ip addr show
ip addr show dev ens18
ip -br addrВ выводе ищите строки inet для IPv4 и inet6 для IPv6. Строка inet 192.0.2.15/24 означает IPv4-адрес 192.0.2.15 с маской /24. Один интерфейс может иметь несколько адресов.
Имена можно получить отдельно через виртуальную файловую систему sysfs:
ls -1 /sys/class/netФайл /proc/net/dev содержит счётчики принятых и переданных байтов, пакетов и ошибок:
cat /proc/net/devПрактические примеры просмотра списка, IP- и MAC-адресов собраны в материале как посмотреть сетевые интерфейсы в Linux. Команды подходят для первичной проверки на сервере и рабочей станции.
4. Как определить тип интерфейса
Тип устройства удобнее всего проверять несколькими командами. Универсального поля, которое одинаково подробно описывает каждое виртуальное устройство, нет.
Для расширенной информации используйте:
ip -d link show dev enp3s0
ip -d link show dev br0
ip -d link show dev enp3s0.20В выводе VLAN будет видна строка с идентификатором VLAN, у bridge появятся параметры моста, а для виртуальных пар будет указано связанное устройство.
Физический или подключённый к шине интерфейс часто имеет каталог device в sysfs:
test -e /sys/class/net/enp3s0/device && echo bus-backed || echo virtual
readlink -f /sys/class/net/enp3s0/deviceПуть с компонентами pci обычно указывает на PCI-сетевую карту. Компоненты usb говорят о подключении через USB. Отсутствие каталога device часто встречается у bridge, VLAN, veth и loopback, но этот признак служит быстрым ориентиром, а не полной классификацией.
Драйвер и параметры физического адаптера показывает ethtool:
ethtool -i enp3s0
ethtool enp3s0Первая команда выводит имя драйвера, версию и сведения о шине. Вторая показывает скорость, дуплекс, поддержку автосогласования и наличие линка. Для виртуальных интерфейсов часть полей может отсутствовать.
5. Что означают имена eth0, enp3s0, ens18 и lo
eth0 - старый короткий формат имени Ethernet-интерфейса. Он зависит от порядка обнаружения устройств, поэтому после добавления карты или изменения конфигурации имя может измениться. На новых системах чаще встречаются предсказуемые имена.
enp3s0 обычно расшифровывается как Ethernet, PCI-шина 3, слот 0. Такая схема связывает имя с расположением устройства в аппаратной топологии.
ens18 обычно встречается у виртуальных машин. Имя может отражать виртуальный слот, который гипервизор показывает гостевой операционной системе. Конкретная схема зависит от дистрибутива, udev, systemd и настроек гипервизора.
eno1 часто используют для встроенного Ethernet-порта. Для Wi-Fi применяются имена, начинающиеся с wl, например wlp2s0.
lo - loopback-интерфейс. Через него программы обращаются к локальной системе. Он обслуживает 127.0.0.0/8 и IPv6-адрес ::1. Отключать lo на рабочем сервере нельзя: это может нарушить работу баз данных, агентов мониторинга, прокси и локальных API.
Имя интерфейса содержит максимум 15 символов. Поэтому длинные имена контейнерных veth могут обрезаться, а два потенциально одинаковых имени требуют отдельного контроля со стороны системы.
6. Loopback, bridge, VLAN, bond и другие виртуальные устройства
Loopback
lo не связан с кабелем или сетевой картой. Пакет, отправленный на 127.0.0.1, остаётся внутри хоста. Сервисы, которые слушают адрес 127.0.0.1, обычно доступны только локальным процессам.
Bridge
Linux bridge работает как программный коммутатор. Интерфейс br0 может объединить физический порт, виртуальный адаптер виртуальной машины и veth-порты контейнеров.
ip link show type bridge
bridge link show
bridge fdb show br br0У bridge собственный интерфейс может иметь IP-адрес. Физические порты, подключённые к мосту, часто не получают IP-адрес напрямую. На сервере с виртуальными машинами это частая причина ошибки, когда администратор проверяет адрес на enp3s0, хотя адрес назначен br0.
VLAN
VLAN-интерфейс добавляет тег 802.1Q к трафику через родительский интерфейс. Для VLAN с идентификатором 20 типичный пример имени - enp3s0.20.
ip -d link show type vlan
ip addr show dev enp3s0.20
ip route showРодительский интерфейс должен подключаться к порту коммутатора с подходящей trunk-конфигурацией. Полная последовательность настройки trunk, VLAN, forwarding и nftables приведена в статье про маршрутизацию между VLAN на Linux-сервере.
Bond
bond0 объединяет несколько физических интерфейсов. Режим зависит от задачи: active-backup даёт резервирование, LACP требует согласованной настройки коммутатора. Состояние bond можно проверить так:
cat /proc/net/bonding/bond0
ip -d link show dev bond0Адрес шлюза обычно назначают на bond0, а не на его ведомые интерфейсы. Ошибка в выборе устройства приводит к непредсказуемой маршрутизации.
Veth и туннели
Veth создаётся парами. Пакет, вошедший в один конец, появляется в другом. Один конец может находиться в сетевом пространстве имён контейнера, второй подключается к bridge на хосте.
ip -d link show type veth
ip link show type tun
ip link show type wireguardVPN-интерфейсы часто получают имена wg0, tun0 или tap0. Они не отражают наличие физического адаптера. Маршруты через такой интерфейс задают путь трафика, а firewall определяет, разрешена ли пересылка.
7. Как определить USB-сетевой адаптер
USB-Ethernet-адаптер обычно получает имя вида enx001122334455, где последние символы связаны с MAC-адресом. В отдельных системах устройство может получить имя eth1, enp0s20u1 или другой вариант. На результат влияют правила именования и версия системы.
Сначала найдите новый интерфейс:
ip -br link
ls -1 /sys/class/netЗатем проверьте драйвер и физический линк:
ethtool -i enx001122334455
ethtool enx001122334455
readlink -f /sys/class/net/enx001122334455/deviceЕсли путь содержит usb, интерфейс связан с USB-шиной. Сведения об обнаруженном USB-устройстве можно получить командой lsusb, если пакет с этой утилитой установлен.
После переподключения USB-адаптера имя чаще сохраняется, если в нём используется MAC-адрес. Полагаться на это без проверки не стоит. Для постоянных сетевых профилей привязывайте конфигурацию к имени, MAC-адресу или пути устройства согласно используемому менеджеру сети.
8. Как посчитать количество сетевых интерфейсов
Сначала определите, что именно нужно посчитать. В Linux в список входят lo, bridge, VLAN, bond, veth, VPN и другие виртуальные устройства. Поэтому количество строк в списке не всегда совпадает с количеством физических сетевых карт.
Количество всех интерфейсов через sysfs:
ls -1 /sys/class/net | wc -lКоличество интерфейсов, которые видит команда ip:
ip -o link show | wc -lКоличество интерфейсов без loopback:
ls -1 /sys/class/net | grep -vx lo | wc -lКоличество административно включённых интерфейсов:
ip -o link show up | wc -lКоманда считает интерфейсы с флагом UP. Она не подтверждает наличие кабеля или радиосоединения. Для физического линка смотрите LOWER_UP в выводе ip link или результат ethtool.
Быстрый список устройств, у которых есть привязка к шине:
for i in /sys/class/net/*; do test -e ${i}/device && basename ${i}; doneЭтот список помогает приблизительно отделить физические и bus-backed устройства от чисто виртуальных. Для точного анализа каждого интерфейса проверяйте его отдельно через ip -d link и sysfs.
9. Как определить интерфейс для выхода в сеть
Таблица маршрутизации может содержать несколько default-маршрутов, policy-based routing и отдельные правила для разных источников. Поэтому имя интерфейса нельзя надёжно выбирать по первому совпадению в выводе ip addr.
Проверьте маршрут до конкретного адреса:
ip route get 1.1.1.1
ip route get 192.0.2.10
ip -4 route show default
ip -6 route show defaultТипичный результат содержит элементы dev и src:
1.1.1.1 via 192.0.2.1 dev enp3s0 src 192.0.2.15 uid 0В этом примере внешний трафик пойдёт через enp3s0, а исходным IPv4-адресом станет 192.0.2.15. Для автоматизации извлекайте значение после слова dev, а не поле с фиксированным номером:
ip route get 1.1.1.1 | awk '{for (i=1; i<=NF; i++) if ($i == "dev") {print $(i+1); exit}}'Если команда возвращает ошибку маршрутизации или пустой вывод, скрипт не сможет определить внешний интерфейс. Проверьте default-маршрут, состояние устройства, адрес шлюза и правила ip rule.
ip route
ip rule
ip route get 1.1.1.1Найденное имя часто передают в правила NAT. Пример для интерфейса enp3s0:
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADEДля VPN-туннеля интерфейс может участвовать в правилах пересылки:
iptables -I FORWARD -i wg0 -j ACCEPTЭти правила требуют проверки существующей политики firewall. На системах с nftables команда iptables может работать через совместимый слой, а итоговые правила нужно проверять в фактическом менеджере firewall.
Параметр AllowedIPs = 0.0.0.0/0, ::/0 в конфигурации VPN задаёт IPv4- и IPv6-сети всего адресного пространства для маршрутизации через туннель. Итоговый путь зависит от настроек peer, таблиц маршрутов и исключений для самого VPN-сервера. Дополнительные сценарии проверки маршрутов, MTU и firewall описаны в шпаргалке по диагностике Linux-маршрутизатора.
10. Практический алгоритм проверки и частые ошибки
Для неизвестного сервера используйте последовательность из пяти шагов:
- Получите имена и административный статус:
ip -br link. - Проверьте адреса:
ip -br addr. - Определите тип спорного устройства:
ip -d link show dev имя. - Проверьте маршрут до нужного узла:
ip route get адрес. - Для физического порта проверьте линк и драйвер:
ethtool имяиethtool -i имя.
| Симптом | Что проверить | Вероятная причина |
|---|---|---|
| Интерфейс отсутствует в списке | lspci, lsusb, dmesg, драйвер | Устройство не обнаружено, драйвер не загружен или интерфейс переименован |
DOWN | ip link show dev имя | Интерфейс выключен административно |
UP и NO-CARRIER | ethtool имя, кабель, порт коммутатора | Нет физического линка или не завершилось автосогласование |
| Интерфейс включён, IP-адреса нет | ip addr show dev имя, DHCP-клиент, профиль сети | Не сработал DHCP или адрес не назначен статически |
| Маршрут использует неправильный интерфейс | ip route get адрес, ip rule | Конфликт default-маршрутов, метрик или policy routing |
| После перезагрузки имя изменилось | Профили NetworkManager или systemd-networkd, MAC-адрес | Конфигурация привязана к старому имени |
Для включения, отключения и безопасного перезапуска интерфейса используйте отдельную инструкцию по управлению сетевым интерфейсом в Linux. На удалённом сервере заранее проверьте способ восстановления доступа: команда ip link set dev имя down сразу разрывает активные соединения через этот интерфейс.
Короткая шпаргалка для большинства задач:
ip -br link # имена и состояние
ip -br addr # IP-адреса
ip -d link show dev enp3s0 # тип и параметры
ip -s link show dev enp3s0 # счётчики и ошибки
ethtool enp3s0 # линк, скорость, дуплекс
ip route get 1.1.1.1 # интерфейс выхода
ls -1 /sys/class/net | wc -l # количество интерфейсовГлавное правило выбора интерфейса простое: сначала найдите имя через ip, затем проверьте его тип, адрес, состояние и маршрут. Для физической сети ищите линк и драйвер, для bridge и VLAN проверяйте родительские устройства, для VPN анализируйте таблицы маршрутизации и правила firewall.