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

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

$ ifconfigenp0s25   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

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

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

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

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

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

Вот краткое исправление, которое я использую в системах на базе Debian и RHEL

#Редактировать /etc/grub/по умолчанию

Шаг 1. ) Добавьте это в строку ниже "net.ifnames=0 biosdevname=0";

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0";

Шаг 2.) Обновление ЛИЧИНКИ

Это зависит от вашей операционной системы.

Ubuntu/Mint на базе Debian:

обновление-grub

Centos/RHEL

grub2-mkconfig -o /boot/grub2/grub.cfg

Источник: http://realtechtalk.com/Linux_How_To_Change_NIC_Name_to_eth0_instead_of_enps33_or_enp0s25-2303-articles

Oooooooooooooooor исправьте свои скрипты раз и навсегда и удалите ссылку (и измените ее на команду для определения имени устройства) :wink: (вот несколько указателей: Detecting the name of a network device in bash? - Ask Ubuntu )

видишь это, в котором также есть дополнительная ссылка на более подробную информацию.

Обманутый этим: linux - Why is my ethernet interface called enp0s10 instead of eth0? - Unix & Linux Stack Exchange

@Rinzwind, это отличная идея.

@Mike мой босс (= ведущий программист) тоже всегда соглашается со мной в этом, но тогда он всегда использует жестко закодированные пути и устройства… и я ругаю его снова и снова :wink: