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

109

Многие мои скрипты перестали работать после установки Ubuntu 15.10, и у меня возникают проблемы с запоминанием этого нового имени, так как я годами привык к ethx и wlanx. Есть ли причина для этого изменения? Должен ли я привыкнуть к этому или я могу просто переименовать его и вернуться к старому доброму eth0?

$ ifconfig

enp0s25   Link encap:Ethernet  HWaddr 77:5a:5e:a6:86:d5  
      inet addr:192.168.31.239  Bcast:192.168.31.255  Mask:255.255.255.0
      inet6 addr: fe80::725a:b6ff:fea6:86d7/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:4833 errors:1332 dropped:0 overruns:0 frame:666
      TX packets:5589 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3266446 (3.2 MB)  TX bytes:1046654 (1.0 MB)
      Interrupt:20 Memory:d3500000-d3520000
Майк
источник
2
увидеть это, который также имеет дополнительную ссылку на более подробную информацию.
Дуг Смитис
4
Оооооооооооо исправлять ваши сценарии раз и навсегда и удалить ссылку (и изменить ее на команду для определения имени устройства) ;-) (вот несколько указателей: askubuntu.com/questions/396837/… )
Rinzwind
@Rinzwind Это отличная идея.
Майк
@ Майк, мой босс (= ведущий программист), тоже всегда соглашается со мной, но тогда он всегда использует жестко закодированные пути и устройства ... и я ругаю его снова и снова;)
Rinzwind

Ответы:

105

Это называется предсказуемым именованием сетевого интерфейса и является частью systemd , к которому Ubuntu переходила с версии 15.04.

Основная идея заключается в том, что в отличие от предыдущей схемы именования * nix, где зондирование оборудования происходит в произвольном порядке и может меняться между перезагрузками, здесь имя интерфейса зависит от физического местоположения оборудования и может быть предсказано / угадано путем просмотра lspciили lshwвывода . И наоборот, мы можем угадать информацию о его физическом положении в системе pci. В вашем случае это будет шина pci 0, слот 2. Согласно статье freedesktop.org , на самом деле существует 3 способа назначения имени интерфейса: на основе BIOS / встроенного программного обеспечения для встроенных плат, на основе информации PCI и на основе MAC адрес интерфейса. Обратитесь сюда для других примеров .

Согласно странице freedesktop.org, одной из причин перехода к предсказуемому именованию является то, что классическое соглашение об именах может привести к угрозе безопасности программного обеспечения в многоинтерфейсных системах, когда устройства добавляются и удаляются при загрузке. Кроме того , в соответствии с комментарием по Сэму Хейнса , «На большом сервере с большим количеством портов Ethernet это неоценимо: вы можете сразу сказать , какой интерфейс идет к какому порту и добавление или удаление аппаратных средств не изменяют имена других портов.»

См. Как переименовать сетевой интерфейс в 15.10, если вы решите вернуться к другой версии именования.

Сергей Колодяжный
источник
40
Я вижу небольшую иронию в слове «предсказуемый» :), спасибо за указатели.
Майк
11
«предсказуемо», да, конечно. У меня отключение Ethernet после обновления до 15.10 (чистая установка, старая / домашняя). Зачем нарушать API и соглашения? Теперь я должен выяснить, что терпит неудачу. Я очень расстроен этим :(
Горлок
13
неудача предсказуема, я думаю;)
Анвар
6
э, расскажите это systemdразработчикам, ребята.
Сергей Колодяжный
22
Предсказуемое присвоение имен не особенно полезно в настольных системах с одним интерфейсом, и в этом случае это несколько неприятно. На большом сервере со многими портами Ethernet это бесценно: вы можете сразу сказать, какой интерфейс идет к какому порту, а добавление или удаление оборудования не меняет названия других портов. Это тот случай, для которого он предназначен.
Сэм Хейнс
1

FWIW файл freedesktop.org PredictableNetworkInterfaceNames ссылается на комментарии исходного файла как канонические, но этот файл был изменен для удаления комментариев - см. Https://github.com/systemd/systemd/pull/12518 .

pbhj
источник