Почему мой сетевой интерфейс называется enp0s10 вместо eth0?

65

Когда я запускаю ifconfig -a, я получаю только интерфейсы lo и enp0s10 , а не классический eth0

Что значит enp0s10 ? Почему нет eth0 ?

Нико Родсевич
источник
5
ifconfigне рекомендуется. Подумайте о переходе на ipот в iproute2ближайшее время .
SolsTiCe
1
Поскольку ответ говорит, что это изменение в systemd. Чтобы получить eth0обратно, используйте опцию ядра net.ifnames=0 biosdevname=0(см. Эту тему ). Использование ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.ruleответа ниже не работает в Debian 10 (Buster)
MrCalvin

Ответы:

56

Это изменение в том, как теперь udevd присваивает имена устройствам Ethernet. Теперь ваши устройства используют «Предсказуемые имена интерфейсов», которые основаны на ( и цитируют источники ):

  1. Имена, включающие индексные номера встроенного ПО / BIOS для встроенных устройств (пример: eno1)
  2. Имена, включающие встроенное ПО / BIOS, снабженные индексными номерами слотов горячего подключения PCI Express (пример: ens1)
  3. Имена, включающие физическое / географическое расположение соединителя оборудования (пример: enp2s0)
  4. Имена, включающие MAC-адрес интерфейсов (пример: enx78e7d1ea46da)
  5. Классическое, непредсказуемое именование ядра ethX для ядра (пример: eth0)

Почему это изменилось, описано на странице systemd freedesktop.org , вместе с методом, позволяющим отключить это:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

или если вы используете более старые версии:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
Braiam
источник
7
После ссылки freedesktop, org, главное:The classic naming scheme for network interfaces applied by the kernel is to simply assign names beginning with "eth" to all interfaces as they are probed by the drivers. As the driver probing is generally not predictable for modern technology this means that as soon as multiple network interfaces are available the assignment of the names is generally not fixed anymore and it might very well happen that "eth0" on one boot ends up being "eth1" on the next. This can have serious security implications...
lepe
87

Ответ на вопрос "Что означает enp0s10?" вопрос:

enp0s10:
| | |
v | |
en| |   --> ethernet
  v |
  p0|   --> bus number (0)
    v
    s10 --> slot number (10)

Источник: udev-builtin-net_id.c на GitHub

DIG MBL
источник
6
Пришёл искать это.
Неопытный
5
Поскольку ...fNв конце имени сетевой карты нет части, мы можем сделать вывод, что номер функции равен 0. После перевода чисел в шестнадцатеричное (10 = «a» в шестнадцатеричном формате) мы знаем, что это enp0s10означает идентификатор устройства PCI 00:0a.0.
TelcoM