Я переименовываю сетевые интерфейсы, изменяя файлы в /etc/sysconfig/network-scripts
.
- eth0 -> nic0
- eth1 -> nic1
Содержимое сетевых скриптов после модификации выглядит следующим образом:
# cat /etc/sysconfig/network-scripts/ifcfg-nic0
DEVICE=nic0
BOOTPROTO=static
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
USERCTL=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes
Перезагрузка активирует новый конфиг. Но как мне активировать эту конфигурацию без перезагрузки?
А systemctl restart network
не делает трюк.
Я могу закрыть один интерфейс по его старому имени ( ifdown eth0
), но в ifup
результате появляется следующее сообщение, независимо от того, было ли предоставлено старое или новое имя:
ОШИБКА: [/ etc / sysconfig / network-scripts / ifup-eth] Устройство nic0 отсутствует, что задерживает инициализацию.
/etc/init.d/network status
показывает этот вывод:
Configured devices:
lo bond0 nic0 nic1
Currently active devices:
lo eth0 eth1 bond0
И то, ifconfig
и другое ip a
покажет имена старых интерфейсов.
centos
configuration
network-interface
udondan
источник
источник
Ответы:
Вы можете переименовать устройство с помощью команды ip:
Редактировать :
Вы также можете убедиться, что вы настроили правило udev, чтобы оно работало и при следующей перезагрузке. Путь для udev перенесен в CentOS 7 в /usr/lib/udev/rules.d/60-net.rules, но вы все равно можете управлять им тем же способом. Если вы добавили "net.ifnames = 0 biosdevname = 0" в строку загрузки ядра, чтобы вернуться к старой схеме именования для ваших nics, вы можете удалить
И заменить его на
Вам нужна одна запись на ник. Обязательно используйте правильный MAC-адрес и обновите поле ИМЯ. Если вы не использовали "net.ifnames = 0 biosdevname = 0", будьте осторожны, так как это может привести к непреднамеренным последствиям.
источник
/etc/udev/rules.d/90-eno-fix.rules
потому что он переопределяет все ранее работавшие решения для переименования сетевых устройств.eno########
значением, которое переопределяет все эти попытки переименовать его в нечто подобноеeth0
. Имеет ли это смысл? Мне нужно будет проверить на своей машине, какую версию я использую, но вчера я обновил до последней версии CentOS 7.3, так что я думаю, что у меня будет упомянутая версия.На самом деле, лучший ответ, который я считаю, это сочетание двух уже опубликованных ответов. Чтобы изменить имя устройства без перезапуска сетевых служб, используйте
ip link
команды, предложенные Джеймсом Шевей (ip link set <old_device_name> name <new_device_name>
).Чтобы изменения сохранились после перезагрузки в Red Hat Linux, измените соответствующий файл в
/etc/sysconfig/network-scripts/
. Переименуйте файлifcfg_<old_device_name>
вifcfg_<new_device_name>
и изменитеDEVICE
переменную внутри на<new_device_name>
. Также убедитесь, чтоHWADDR
переменная установлена и является правильной. Не нужно трогать правила udev , так60-net.rules
как на самом деле они есть для чтения файлов конфигурации ifcfg/etc/sysconfig/network-scripts
.источник
Чтобы восстановить старое соглашение об именах, вам нужно отредактировать
/etc/default/grub
файл и добавить следующеев конце
GRUB_CMDLINE_LINUX
переменнойисточник
biosdevname
пакет, если он установленисточник
Ответ, данный @James Shewey, кажется правильным способом сделать это.
Если вы хотите просто поработать с конфигурационными файлами
/etc/sysconfig/network-scripts
и затем запустить перезагрузку, выгрузка и загрузка модуля ядра, как упомянуто @Tom Hunt в комментариях, также работает:Если вы получаете удаленный доступ к машине, убедитесь, что вы выполняете все команды в nohup, иначе вы заблокируете себя:
Драйвер для перезагрузки, конечно, зависит от вашего интерфейса.
источник
Я попробовал вышеупомянутое с Vagrant / VirtualBox и ansible, но почему-то это не сработало вообще в моей среде разработки.
Старые имена интерфейсов сохранялись, что бы я ни делал, до полного перезапуска.
Я добавил следующие правила в
/etc/udev/rules.d/60-persistent-net.rules
(на основе: https://access.redhat.com/solutions/112643 )Моя цель состояла в том, чтобы дать интерфейсу определенное имя на основе адреса PCI.
Пример:
После добавления этих правил я выполнил следующие команды:
Сообщение об ошибке было
Cannot find device "int0"
вip link set * up
команде. И/var/log/messages
я заметил следующие сообщенияНо следующее сработало, получив доступ к ВМ через VirtualBox и выполнив следующие команды, чтобы удалить и повторно добавить модуль ядра.
Я нашел это в следующей теме: https://www.centos.org/forums/viewtopic.php?t=54695
Странная вещь, которую я заметил, это то, что
lsmod
дает мне (обратите внимание наUsed by
)источник
ip link set eth0 down; ip link set eth0 name int0; ip link set int0 up
:? Нетudev...
команды!