Вопрос:
Я хотел бы найти способ, чтобы строка HWADDR в скрипте ifcfg-eth0 проверялась/обновлялась при загрузке в случае ее изменения при клонировании или копировании виртуальной машины. Есть ли способ это сделать? В CentOS 6 удаление строки HWADDR из скрипта ifcfg-eth0 сделало его гораздо более динамичным, но мне еще предстоит найти способ не допустить обратного изменения ifcfg-eth0 на ifcfg-eno1677776 без строки HWADDR в CentOS 7. Заранее спасибо за помощь!
Фон:
Я использую виртуальную машину CentOS 7.2.1511 через VMware Workstation. По умолчанию CentOS 7 избавился отeth0соглашение об именовании сетевых скриптов и теперь настроено на использование сетевых скриптов с именамиifcfg-eno1677776или что-то подобное. У меня есть программное обеспечение, котороетяжелополагается наeth0схема именования. Поэтому я перенастроил свойifcfg-eno1677776сценарий:
- Переименование
/etc/sysconfig/network-scripts/ifcfg-eno1677776
в/etc/sysconfig/network-scripts/ifcfg-eth0
Модифицирующийifcfg-eth0быть (получено HWADDR от
/sys/class/net/eno1677776/address
):BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes NM_CONTROLLED=no HWADDR=00:0c:29:d6:d2:65
Добавленnet.ifnames=0до концаGRUB_CMDLINE_LINUXстрока в
/etc/sysconfig/grub
файле.Перезагрузитесь и запустите ifconfig (и празднуйте!):
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.176.15.148 netmask 255.255.252.0 broadcast 10.176.15.255 inet6 fe80::20c:29ff:fed6:d265 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d6:d2:65 txqueuelen 1000 (Ethernet) RX packets 2141073 bytes 749959853 (715.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 65237 bytes 35352127 (33.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Каждый раз при загрузке этот интерфейс eth0 остается. Однако эта виртуальная машина должна быть распределена между членами команды и в конечном итоге доставлена клиентам. Вот тут-то и возникает проблема. VMware хорош тем, что вы можете клонировать снимок виртуальной машины для распространения, но это меняет MAC-адрес виртуальной машины.
РЕДАКТИРОВАТЬ:
Вы должны запустить grub2-mkconfig -o /boot/grub2/grub.cfg
после внесения изменений, рекомендованных @larsks ниже, чтобы это сработало. У меня сработало!
решение1
Вероятно, самым простым решением будет отключить функцию «предсказуемого именования устройств», установив следующие параметры в командной строке ядра:
biosdevname=0 net.ifnames=0
При этом первый интерфейс Ethernet в вашей системе будет называться eth0
, второй — eth1
и т. д. Это задокументировано.здесь.
После этого просто удалите HWADDR
строку из файла конфигурации, и все должно работать так, как вы ожидаете.