Це стосовно linux, але якщо хтось знає загальний метод для *nix, було б добре.
Я вчора завантажив систему з підключеним ethernet-кабелем. "NetworkManager" не встановлений, тому після його запуску я пішов шукати ім'я інтерфейсу ethernet за допомогою ifconfig
, щоб запустити DHCP-клієнт вручну, але він не показав нічого, крім lo
.
Мережева карта була вказана через lspci
, і відповідний драйвер ядра був завантажений. Система зазвичай використовує wifi, і я пам'ятаю, що ім'я інтерфейсу для цього було wlan0
. Коли я спробував ifconfig wlan0 up
, з'явилося wlan0
. Але єдиними іменами інтерфейсів ethernet, які я зміг згадати, були eth[N]
та em[N]
- жоден з них не працював.
Цей документ посилається на &quo ;передбачувані імена інтерфейсів&quo ;, але не дуже добре пояснює, якими вони можуть бути в простих термінах. Він посилається на фрагмент вихідного коду, який передбачає, що ім'я в цьому випадку може бути виведене з номерів шини PCI та слотів, що здається невиправдано складним клопотом.
Інші пошуки привели мене до думки, що це може бути визначено ystemd
у поєднанні з udev
, але в /usr/lib/udev/rules.d
є майже 100 файлів, і витрачати годину на те, щоб визначити, де (і чи є) файл конфігурації systemd для цього, також здається смішним.
Також було б непогано знати напевно, що вони доступні, а не тільки те, як вони можуть називатися, якщо вони є, щоб я міг виключити проблеми з обладнанням тощо. **Чи не існує простого способу знайти назви доступних мережевих інтерфейсів у linux?
Найпростіший спосіб, який я знаю, щоб перерахувати всі ваші інтерфейси, це
ifconfig -a
РЕДАГУВАТИ
Якщо ви використовуєте систему, в якій ця функція застаріла, ви можете скористатися
ip link show
Ядро перелічує їх за іменами у /sys
, як окремо у (наприклад) дереві пристроїв PCI - хоча знайти їх там, якщо ви не знаєте, з чого почати, не так просто - так і разом за допомогою символічних посилань у /sys/class/net
. Наприклад:
> ls /sys/class/net
em1 lo wlp6so
Інший приклад:
> ls /sys/class/net
lo p6s1 wlan0
Якщо ви не впевнені, який з них який, ви можете просто змиритися з ними обома:
ifconfig [name] up
Або:
ip link set [name] up
А потім подивіться на (досить чіткі) підказки, перелічені ifconfig
(без аргументів). На них також посилається вихідний код systemd, на який є посилання у документі Freedesktop.org:
Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
Хоча в одному з наведених вище випадків (p6s1
) префікс відсутній.
Я завжди роблю cat /proc/net/dev
це просто і легко запам'ятовується