1 (2015-05-15 10:00:06 отредактировано mozg1986)

В Systemd изменилась система именования интерфейсов, теперь они по-умолчанию имеют имена вида enp1s0, enp3s0 и т.д.
Подробности тут

Я создал файл /etc/udev/rules.d/70-persistent-net.rules (скопировал со старой системы), в которых конкретным сетевушкам назначены свои имена вида eth0, eth1 и т.д.

Возник конфликт, так как теперь udev/systemd не может переименовать одним махом все интерфейсы после того, как их обозвало ядро при загрузке.
В логе загрузки следующее:

май 12 11:10:36 server.stadis.pro systemd-udevd[487]: starting version 217
май 12 11:10:40 server.stadis.pro systemd-udevd[500]: error changing net interface name 'eth0' to 'eth1': File exists
май 12 11:10:40 server.stadis.pro systemd-udevd[492]: error changing net interface name 'eth1' to 'eth0': File exists

Да к тому же ядро раздает имена интерфейсам при каждой загрузке случайно. То есть иногда имена, разданые ядром совпадают с именами, которые прописаны в udev.

В тот же документе выше описано, что можно отключить раздачу имен интерфейсам ядром. Для этого в коммандную строку ядра нужно вписать net.ifnames=0
И вот именно этот последний пункт мне и не понятен. Куда нужно это прописывать?

2

Предположу что в /etc/sysctl.conf

имена вида enp1s0, enp3s0 и т.д.

А чем новые не устроили? Понимаю что не очень привычно, но по сути настроил один раз и все. Любоваться что ли на названия smile

MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================

3

mozg1986⇓ пишет:

name 'eth0' to 'eth1': File exists
май 12 11:10:40 server.stadis.pro systemd-udevd[492]: error changing net interface name 'eth1' to 'eth0': File exists

Оно, говоря простым языком, не может поменять два интерфейса местами...
т.е. если переименовывать eth0>>eth2; eth1>>eth3 - будет норм... правда не понятно почему оно у вас изначально имеет номера eth*... Но то уже детали... А вообще эту тему мне еще на 4.1 пришлось пережевать, тогда, после очередного обновления, начали жестоко прыгать имена интерфейсов... Изначально тоже пытался выставить их со старыми именами - получилось ровным счетом ничерта, в итоге, когда все надоело, снес все что касалось хоть каких либо параметров сети и интерфейсов, перезагрузил машину, чтобы оно расставило интерфейсы в определенном порядке и слепил все настройки с нуля, но уже с наличием новых имен, в итоге все чудненько заработало... Так что, ИМХО, если все это делается только из-за привычки что они когда-то назывались по другому - не стоит оно потраченного времени...

[[SUSE Leaр 42.3 x64@RealHW]] + [[Mageia 6 i586@RealHW]] + [[Manjaro 17.0.5 i586@RealHW]] + [[LinuxMint 17.1 x64@VM]]

Сын спрашивает отца-линуксоида:- Пап, а вирусы под линукс есть? 
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.

4

Ох уж эти systmd-писатели(((
Вообще напоминает ситуацию с Apple - мы сами знаем, что нужно пользователям. Несерьезно это(( Я хочу работать с такими именами, с которыми всегда работал, и точка.

5

Нашел куда вписывать - нужно в GRUB это вписывать в строку, передаваемую ядру.
Добавляется конкретно к ней net.ifnames=0 biosdevname=0

Тогда при загрузке:

май 13 09:28:36 server.stadis.pro kernel: Kernel command line: BOOT_IMAGE=linux root=UUID=cfcc8dbe-9d33-4bb6-a4d3-a8b3d343f8aa splash quiet noiswmd resume=UUID=fa9d08bb-510b-4cbc-a828-34c60c8ea479 net.ifnames=0 biosdevname=0 vga=788

Только это не помогло:

май 13 09:28:30 server.stadis.pro systemd-udevd[469]: starting version 217
май 13 09:28:30 server.stadis.pro systemd-udevd[469]: Network interface NamePolicy= disabled on kernel commandline, ignoring.
май 13 09:28:36 server.stadis.pro systemd-udevd[503]: error changing net interface name 'eth1' to 'eth0': File exists
май 13 09:28:36 server.stadis.pro systemd-udevd[493]: error changing net interface name 'eth0' to 'eth1': File exists

systemd-udevd тупо игнорирует эти правила.

Почему, если программист написал багу, он подает её как фишку? Ну вот нельзя было сначала всем интерфейсам раздать временные имена, а потом переименовать их правильно?

6

mozg1986 пишет:

Я хочу работать с такими именами, с которыми всегда работал, и точка.

Я ни в коем разе не критикаю вашу позицию, но мир на месте не стоит и с этим лучше смирится smile

Да, отличаются наименования интерфейсов, а в systemd компонеты могут ещё и правила игнорировать, зато с новой системой голова уже не болит о том, что сегодня карточка была eth0, а завтра eth1 она же будет. Вся фишка с новыми интерфейсами задумана для того, чтобы если единожды интерфейс получил имя, он всегда в будущем получал это же имя. Актуально, например, на серверах, где интерфейсы могут динамически подцепляться/отцепляться.

Fedora & GNOME

7

xxblx⇓ пишет:

зато с новой системой голова уже не болит о том, что сегодня карточка была eth0, а завтра eth1 она же будет. Вся фишка с новыми интерфейсами задумана для того, чтобы если единожды интерфейс получил имя, он всегда в будущем получал это же имя.

А у меня по факту интерфейсы даже с теми странными именами прыгали при каждой перезагрузке. И именно с этой проблемой я боролся. И раньше эту проблему вроде как успешно решал файл /etc/udev/rules.d/70-persistent-net.rules

xxblx⇓ пишет:

Да, отличаются наименования интерфейсов, а в systemd компонеты могут ещё и правила игнорировать

Меня больше пугает наличие тонны конфигов по-умолчанию и скриптов в системе, которые еще не знают, что у нас оказывается интерфейсы теперь не ethX, а enpXsY. Вот когда буду точно уверен, что назови я его хоть Skynet - оно работать будет, вот тогда можно говорить об этом. А на текущий момент они только приступили к этому, да и то криво реализовали.

8

Пришли новые обновления, обновился systemd, и правила вроде как стали работать. Во всяком случае после 3-х перезагрузок подряд интерфейсы не поменялись местами. Посмотрим что будет дальше, тему пока решенной не отмечаю.

9

Когда то давно тоже бился. Делал так http://wiki.mageia.org.ru/index.php?tit … 1%81%D1%83

MXLinux 19.3 - xfce
Чем больше я работаю админом, тем больше понимаю,
насколько волшебна фраза - "Нет технической возможности!"

==============================================

10

XliN, Сейчас вышеприведенная ссылка только часть рецепта. Для полного счастья необходимо:
1) Создать файл /etc/udev/rules.d/70-persistent-net.rules и заполнить его содержимым. У меня выглядит так

# Drakx-net rule for eth0
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="aa:aa:aa:aa:aa:aa", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# Drakx-net rule for eth1
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bb:bb:bb:bb:bb:bb", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# Drakx-net rule for eth2
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="cc:cc:cc:cc:cc:cc", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

2) Создать пустой файл /etc/udev/rules.d/80-net-name-slot.rules (пишут что это тоже нужно)
3) В drakboot в параметры ядра добавить net.ifnames=0 biosdevname=0 (это там где splash=verbose и так далее).
4) Обновить systemd до последней версии.

Сейчас все работает после этих танцев с бубном. Тему думаю можно отметить решенной