Как вы автоматически обнаруживаете новую сетевую карту в CentOS 6 / RedHat?
Я использую 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 ответов
С CentOS 6 все теперь обрабатывается udev. Войти в /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 все время. Это боль, кудзу просто справится с этим в предыдущих версиях.
Удалите файл постоянных правил:
rm /etc/udev/rules.d/70-persistent-net.rules
Отредактируйте ifcfg-eth0:
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Удалить HWADDR
в целом (или измените его в соответствии с MAC-адресом вашего нового сетевого адаптера).
Перезагрузите вашу систему:
reboot
Если вы снова измените NIC, просто повторите шаги № 1 и № 3.
Вы также можете использовать этот инструмент (это не инструмент с графическим интерфейсом, его инструмент TUI, текстовый интерфейс пользователя)
[root @ localhost ~] # system-config-network-tui
Введите вышеуказанную команду и нажмите Enter
Тогда этот экран появится
Выберите конфигурацию устройства и нажмите Enter
Тогда этот экран появится
Здесь eth0 относится /etc/sysconfig/network-scripts/ifcfg-eth0
Независимо от редактирования, сделанного в eth0
это повлияет на ifcfg-eth0
файл
Изменение файлов после клонирования не будет работать для моего варианта использования, поэтому я решил проблему следующим образом.
Вам нужно отредактировать два файла, удалив ссылки на адреса Mac в каждом:
/etc/sysconfig/network-scripts/ifcfg-eth0
- удалите строку HWADDR=.
/etc/udev/rules.d/70-persistent-net.rules
- удалить из ATTR{адрес}== до следующей запятой.
Теперь, когда вы клонируете виртуальную машину и измените MAC-адрес, сеть будет работать, так как MAC-адрес никогда не будет записан ни в один из файлов.
Я создаю и удаляю столько виртуальных машин 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
Я не использую 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).
Надеюсь поможет.
Если ваша единственная проблема - это 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, чтобы увидеть, обнаруживает ли оно новое оборудование. Вам может потребоваться перезагрузка.
Я имел дело с несколькими сетевыми картами, и ничто из вышеперечисленного не работало для меня (VMware Fusion 7/VMware 6 и ниже), поэтому я написал сценарий. Тарбол здесь.
Здесь README
что идет с этим:
- Этот tar-архив и связанные с ним сценарии изменят MAC-адрес вашего недавно клонированного компьютера VMware CentOS 6 или ниже (без systemd.)
Все, что вам нужно сделать на машине, вы будете клонировать только один раз:
- устанавливать
lshw
- заменить MAC-адрес во всех ваших
/etc/sysconfig/network-scripts/ifcfg-eth?
с MACDADDYnum, где num - номер сетевого интерфейса. Вы должны следовать шаблону именования для файла. бежать:
chckconfig change_mac_address on
Это должно добавить ссылки sym на правильных уровнях выполнения, указанных в файле
- Клонируйте машину как обычно и запустите ее. Это должно изменить 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