Як ви автоматично визначаєте нову мережеву карту в CentOS 6 / RedHat?


46

Я використовую CentOS 6 у віртуальному середовищі. Під час клонування віртуальної версії CentOS старі адаптери et «видаляються» та замінюються новими та чистими MAC-адресами. Однак файли ifcfg-ethn все ще існують. Я намагаюся розібратися, як змусити CentOS автоматично пересканувати і відтворити мережеві адаптери / et файли, як це було зроблено при встановленні.

В іншому випадку я переживаю тугу процес, як описано тут: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

Я знаю, що це швидкий спосіб зробити це в GUI, але ми використовуємо сервер, так що GUI не застосовується в цьому випадку. Допомога?

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

Відповіді:


52

З CentOS 6 зараз все реалізується удевом. Увійдіть /etc/udev/rules.dі видаліть 70-persistent-net.rulesфайл і перезавантажте. Якщо ви відкриєте його перед рукою, вам найбільше сподобається побачити оригінальний NIC MAC у списку як eth0і новий як eth1.

Тепер вам потрібно відредагувати /etc/sysconfig/network-scripts/ifcfg-eth0та вручну оновити MAC нової карти NIC.

Видалення файлу змушує процес виявлення повторно запускатися під час завантаження, не залишившись багажу від процесу клонування, а саме старих MAC-адрес NIC.

Мені доводиться це робити зі своїми клонами CentOS 6 на VMware ESXi 4.1 постійно. Це болю, кудзу просто би впорався з цим у минулому з попередніми версіями.


2
Це звучало чудово, але це не спрацювало так, як ви описали. Старий файл ifcfg-eth0 все ще був із оригінальною MAC-адресою тощо замість правильної нової.
Джошуа

2
Вибачте, що я забув. Ви також РУЧНО оновити mac-адресу в ifcfg-eth0, а також вибачте. Це змусить його працювати. Можливо, буде простіший спосіб, але мені ще належить його знайти ...
Трейсі Карлтон

Це було гарним початком. Здається, можна було б написати сценарій, який автоматизує процес - навіть описані вручну біти - під час завантаження. Проблема полягає в активації сценарію лише після клонування / переміщення машини. На це все ще немає повної відповіді ...
Джошуа

5
Увійдіть /etc/udev/rules.dі видаліть 70-persistent-net.rulesфайл і НЕ перезавантажуйте. Зайдіть /etc/sysconfig/network-scripts/ifcfg-eth0і вручну оновіть MAC нової карти NIC. Перезавантаження та мережа повинні ожити.

2
@ user151091 Замість перезавантаження, start_udevтоді service network restartпрацював для мене.
doshea

5

Ви також можете використовувати цей інструмент (Це не інструмент GUI, його інструмент TUI, текстовий інтерфейс користувача)

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

Наберіть вище команду та натисніть Enter

Потім з'явиться цей екран

введіть тут опис зображення

Виберіть Конфігурація пристрою та натисніть Enter

Потім з'явиться цей екран

введіть тут опис зображення

Тут посилається eth0 /etc/sysconfig/network-scripts/ifcfg-eth0

Незалежно від зміни, внесеної до eth0цього, вплине на ifcfg-eth0файл


Хоча це може бути корисною відповіддю для деяких людей / випадків, метою цього було скриптування або автоматизація конфігурації мережевих адаптерів, що неможливо зробити через TUI / GUI. Прочитайте оригінальний пост: "Я намагаюся розібратися, як дозволити CentOS автоматично пересканувати і відтворити мережеві адаптери / et файли, як це було зроблено при встановленні".
Джошуа

@Joshua вибачте це отримав ... + 1
макс

@max, system-config-networkздається, також відкривається цей інтерфейс.
Acumenus

2
@QiFan Спробуйте виконати цю командуyum install system-config-network-tui
макс

1
@QiFan Щоб дізнатися, який пакет містить цю команду, спробуйте цеyum whatprovides */system-config-network-tui
макс

4

Видаліть файл стійких правил:

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

Редагувати ifcfg-eth0:

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

ВИДАЛИТЕ HWADDRрядок цілком (або змініть його так, щоб він відповідав новому MAC-адресу нового NIC).

Перезавантажте систему:

reboot

Якщо ви знову поміните NIC, просто повторіть кроки №1 та №3.


Вам справді потрібно перезавантажити? Чому б просто не перезапустити послугу мережі?
vgoff

Хоча це може бути корисною відповіддю для деяких людей / випадків, метою цього було скриптування або автоматизація конфігурації мережевих адаптерів. З початкової публікації: "Я намагаюся розібратися, як дозволити CentOS автоматично пересканувати і відтворити мережеві адаптери / et файли, як це було зроблено при встановленні".
Джошуа

@vgoff так, перезапуск послуги мережі, очевидно, працює нормально :) Можливо, він має на увазі перезавантаження самого мережевого пристрою, наприклад, "ifup eth0" тощо.
Джошуа

Це може бути, але він каже, що "система" не "пристрій".
vgoff

Можливо, я помиляюся, але думаю, що "перезапуск сервісної мережі" не призведе до перейменування ваших адаптерів після того, як ви видалили стійкий файл правил, і для перейменування потрібно перезавантажити або "start_udev".
doshea

4

Змінення файлів після клонування не працювало б для мого використання, тому я вирішив проблему наступним чином.

Вам потрібно відредагувати два файли, видаливши посилання на адреси Mac у кожному:

/etc/sysconfig/network-scripts/ifcfg-eth0 - видаліть рядок HWADDR =

/etc/udev/rules.d/70-persistent-net.rules - видалити з ATTR {адреса} == до наступної коми.

Тепер, коли ви клонуєте VM та зміните mac-адресу, мережа працюватиме, оскільки адреса Mac ніколи не записується в жоден файл.


Це працювало для мене - як зазначалося, MAC-адреса ніколи не записується до жодного файлу, тому ви можете продовжувати її змінювати, і ваш інтерфейс залишатиметься "eth0" з тим же конфігурацією. Це, здається, працює лише в тому випадку, якщо у вас є один мережевий адаптер, але в іншому випадку я отримав тривалу затримку завантаження на "Починаючи з udev:", і мій другий пристрій був названий "перейменувати3", імовірно, оскільки правила пропонували обидва пристрої називатися "eth0 ".
doshea

Працездатне рішення для 1 адаптера. Також не забудьте внести тип з'єднання як міст у мережевих налаштуваннях.
Вишня

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, щоб перевірити, чи виявляє він нове обладнання. Можливо, вам доведеться перезавантажити.


Наприклад, я спробував вручну змінити MAC-адресу на eth0, але все одно не вийшло. Подальші спроби "прискореного перезавантаження службової мережі", "ifup eth0" тощо завжди завжди закінчуватимуться "Схоже, що пристрій eth0 не присутній ..." Довідка?
Джошуа

Який тип віртуалізації ви використовуєте та як клонували систему?
OldWolf

VirtualBox, але я не думаю, що віртуалізація має значення. Це має бути як вимкнення фізичного вікна, видалення існуючих мережевих адаптерів та додавання різних.
Джошуа

@Josh Де файли ifcfg- *, які ви редагуєте, оскільки можливі три набори - перевірити / etc / sysconfig / network-script і / etc / sysconfig / networking / пристрої та / etc / sysconfig / networking / профілі / за замовчуванням ( так, я знаю - це, здається, щось стосується того, який інструмент (и) ви використовуєте для установки адаптерів). Першими повинні стати ті, що впливають на зміну, але, можливо, вам доведеться розібратися і з іншими.
Linker3000

1
Причина, яку я запитав, і те, що тип віртуалізації має значення, полягає в тому, що вона визначає, як виглядає процес клонування. Клон VMware на тому ж хості не змінює апаратне забезпечення віртуальної мережі, якщо ви цього не сказали. У вашому випадку проблема не в мак-адресі, ані в процесі клонування, це в тому, що ви змінюєте віртуальне обладнання.
OldWolf

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-skripts / ifcfg-eth0 з HWADDR або UUID, а також видалено правила udev з /etc/udev/rules.d/70-persistent-net.rules.

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

Сподіваюся, допоможе.


0

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

Ось, READMEщо йде з цим:

  • Цей тарбол та пов’язані з ним сценарії змінять MAC-адресу вашої недавно клонованої машини VMware CentOS 6 або нижче (без систематизації).
  • Все, що вам потрібно зробити в машині, ви будете клонувати лише один раз:

    1. встановити lshw
    2. замінити MAC - адреса у всіх ваших /etc/sysconfig/network-scripts/ifcfg-eth?з MACDADDY Num де NUM це кількість мережевого інтерфейсу. Потрібно слідувати шаблону іменування файлу.
    3. запустити:

      chckconfig change_mac_address on
      

      Слід додати символьні посилання на належних рівнях запуску, визначених у файлі

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

Проблеми:

  • Не впевнений чому, але іноді вам потрібно перезапустити мережу вдруге, щоб визнати всі NIC:

    /etc/init.d/network restart
    

    Виправлено це, поставивши sleep 20на початку/etc/init.d/network

  • Це не було проблемою для мене, але сценарій покладається на lshwповернення NIC в тому ж порядку, що і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
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.