46

Я использую CentOS 6 в виртуальной среде. При клонировании виртуальной версии CentOS старые адаптеры eth "удаляются" и заменяются новыми и сетевыми MAC-адресами. Тем не менее, файлы ifcfg-ethn все еще существуют. Я пытаюсь выяснить, как заставить CentOS автоматически повторно сканировать и воссоздавать файлы сетевых адаптеров / eth, как это делалось при установке.

В противном случае мне остается утомительный процесс, как описано здесь: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

Я знаю, что есть быстрый способ сделать это в графическом интерфейсе, но мы используем сервер, поэтому в этом случае графический интерфейс не применяется. Помогите?

Редактировать: @OldWolf предложил Kudzu, однако Kudzu был удален с Centos 5, поэтому я бы предпочел этого избежать. Существует процедура, которую Linux запускает при первоначальной установке. Может ли кто-нибудь помочь мне понять, что это такое, чтобы я мог запустить его вручную?

8 ответов8

51

С CentOS 6 все теперь обрабатывается udev. Перейдите в /etc/udev/rules.d удалите файл 70-persistent-net.rules и перезагрузите компьютер. Если вы откроете его перед рукой, вы, скорее всего, увидите исходный MAC-адрес NIC, обозначенный как eth0 а новый как eth1 .

Теперь вам нужно отредактировать /etc/sysconfig/network-scripts/ifcfg-eth0 и вручную обновить до MAC вашей новой сетевой карты.

Удаление файла вынуждает процесс обнаружения снова запускаться при загрузке без остатка багажа от процесса клонирования, а именно старого MAC-адреса NIC.

Я должен делать это с моими клонами CentOS 6 на VMware ESXi 4.1 все время. Это боль, кудзу просто справится с этим в предыдущих версиях.

5

Вы также можете использовать этот инструмент (это не инструмент с графическим интерфейсом, его инструмент TUI, текстовый интерфейс пользователя)

[root @ localhost ~] # system-config-network-tui

Введите вышеуказанную команду и нажмите Enter

Тогда этот экран появится

Выберите конфигурацию устройства и нажмите Enter

Тогда этот экран появится

Здесь eth0 ссылается на /etc/sysconfig/network-scripts/ifcfg-eth0

Какое бы редактирование в eth0 не влияло на ifcfg-eth0

4

Удалите файл постоянных правил:

rm /etc/udev/rules.d/70-persistent-net.rules

Отредактируйте ifcfg-eth0:

nano /etc/sysconfig/network-scripts/ifcfg-eth0

УДАЛИТЕ линию HWADDR целом (или измените ее в соответствии с MAC-адресом вашего нового сетевого адаптера).

Перезагрузите вашу систему:

reboot

Если вы снова измените NIC, просто повторите шаги № 1 и № 3.

4

Изменение файлов после клонирования не будет работать для моего варианта использования, поэтому я решил проблему следующим образом.

Вам нужно отредактировать два файла, удалив ссылки на адреса Mac в каждом:

/etc/sysconfig/network-scripts/ifcfg-eth0 - удалить строку HWADDR =.

/etc/udev/rules.d/70-persistent-net.rules - удалить из ATTR {адрес} == до следующей запятой.

Теперь, когда вы клонируете виртуальную машину и измените MAC-адрес, сеть будет работать, так как MAC-адрес никогда не будет записан ни в один из файлов.

3

Я создаю и удаляю столько виртуальных машин CentOS 6, что написал Bashfu для исправления eth0 при клонировании в VirtualBox.

   [root@jp-xm-base ~]# cat fixeth0.sh
if grep -q eth1 /etc/udev/rules.d/70-persistent-net.rules; then
   sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules;
   sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules;
   ETHERNET=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules | awk -F"," '{print $4}' | awk -F"\"" '{print $2}'`;
   echo Ethernet Addr: $ETHERNET;
   sed -i 's/HWADDR=".*"/HWADDR="'$ETHERNET'"/' /etc/sysconfig/network-scripts/ifcfg-eth0;
   /sbin/start_udev
   /sbin/service network restart;
fi
1

Если ваша единственная проблема - это MAC-адрес, вы можете запустить что-то похожее на

TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0

Чтобы обновить запись HWADDR.

Изменить: так как похоже, что проблема заключается в реальном изменении виртуального оборудования, вы можете попробовать следующее. (не проверено и упоминается здесь )

отредактируйте /etc /sysconfig /hwconf и удалите все ссылки на предыдущий NIC и повторно запустите kudzu, чтобы увидеть, обнаруживает ли оно новое оборудование. Вам может потребоваться перезагрузка.

1

Я не использую Vmware, но KVM с virsh - это то, что я сделал.

Создал «базовое» изображение с CentOS 6.4, это источник всех моих клонов. После первой загрузки я создал такой скрипт

cat /etc/init.d/manglemac 
#!/bin/bash
#
# manglemac        This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg

mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut   -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)

if [ -z "$match_mac" ];
then
   echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi

Добавил его в init с

chkconfig --add manglemac

Удалил все ссылки в /etc /sysconfig /network-scripts /ifcfg-eth0 HWADDR или UUID, а также удалил правила udev из /etc/udev/rules.d/70-persistent-net.rules.

В этот момент я выключил машину и начал клонировать. Все работает отлично. Сценарий, который я сделал, очень прост, но работает нормально, однако он делает несколько предположений относительно вашей настройки сети (только для eth0).

Надеюсь поможет.

0

Я имел дело с несколькими сетевыми картами, и ничто из вышеперечисленного не работало для меня (VMware Fusion 7/VMware 6 и ниже), поэтому я написал сценарий. Тарбол здесь.

Вот README который идет с этим:

  • Этот tar-архив и связанные с ним сценарии изменят MAC-адрес вашего недавно клонированного компьютера VMware CentOS 6 или ниже (без systemd.)
  • Все, что вам нужно сделать на машине, вы будете клонировать только один раз:

    1. установить lshw
    2. заменить MAC-адрес во всех ваших /etc/sysconfig/network-scripts/ifcfg-eth? с MACDADDY num, где num - номер сетевого интерфейса. Вы должны следовать шаблону именования для файла.
    3. бежать:

      chckconfig change_mac_address on
      

      Это должно добавить ссылки sym на правильных уровнях выполнения, указанных в файле

    4. Клонируйте машину как обычно и запустите ее. Это должно изменить MAC-адрес в каждом из ваших ifcfg-eth? файлы,
      • стереть файл udev,
      • повторно просканируйте ваше устройство e1000,
      • и перезагрузите сеть

Проблемы:

  • Не знаю почему, но иногда вам нужно перезапустить сеть во второй раз, чтобы все сетевые карты были распознаны:

    /etc/init.d/network restart
    

    Исправлено это, поместив sleep 20 в начале /etc/init.d/network

  • Для меня это не было проблемой, но скрипт полагается на то, что lshw возвращает сетевые карты в том же порядке, что и ifcfg-eth?
  • Это предполагает, что ваше устройство (-а) NIC e1000. Стандарт VMware?
  • Возможно, стоит поменять нумерацию вашего ifcfg-eth? файлы, чтобы они соответствовали тому, что lshw возвращает в маловероятном случае, если он не работает, и вы работаете с большим количеством машин с большим количеством сетевых карт.
  • С одним NIC это должно просто работать.
  • После первого запуска /usr/bin/change_mac_address.pl перемещается в /usr/bin/change_mac_address.pl.old
  • Это будет препятствовать запуску при каждой перезагрузке, даже если он не будет ничего делать, если нет MACDADDY? в твоем ifcfg-eth?
  • Вы также можете и, вероятно, должны бежать

    chkconfig change_mac_address off
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .