null

Настройка сети в RHEL при клонировании виртуальных машин

Виртуальные машины - безусловно удобное средство для пробы какого-нибудь программного продукта. Однако если он еще и распределенный, как в моем случае - Sun Grid Engine - требуется несколько виртуальных машин, и естественно хотелось бы клонировать их из одной проинсталлированной. Но после клонирования настройка сети превращается в маленькую головную боль, поэтому я написал эту памятку. В ней рассматривается случай для VirtualBox 4 и CentOS 5.6

Меняем MAC-адрес

После экспорта-импорта OVA-образа новая виртуальная машина получает такой же мак-адрес как и изначальная, так что необходимо сменить его. Это легко достигается посредством VBoxManage:

$ VBoxManage modifyvm CentOS --macaddress1 auto

Здесь цифра 1 обозначает номер виртуального интерфейса в VirtualBox.
В некоторых дистрибутивах (в частности, такая проблема проявлялась на Oracle Enterprise Linux 6 и Debian 5) после перезагрузки вы можете увидить интерфейс с новым макадресом под именем... eth1 вместо старого eth0. Связано это с тем, что в этих системах привязка имен устройств демоном udev ведется также и по мак-адресу:
[root@oel6 ~]# tail -5 /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x8086:0x100e (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:4a:df:90",
        ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:ba:ce:1d", 
        ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

В этом случае необходимо удалить устаревшую запись, а в новой сменить имя на eth0.

Меняем настройки IP

Основное дерево конфигурационных файлов в RedHat-подобных дистрибутивах хранится в директории /etc/sysconfig и управляется утилитами system-config-*. Для настройки сети, в частности, таких утилит целых три: system-config-network-cmd, предоставляющий коммандный интерфейс, system-config-network-tui, представляющий интерфейс на псевдографике и system-config-network-gui, полноценную графическую программу. Однако CLI мне представляется здесь крайне неочевидным (чего только стоят имена параметров DeviceList.Ethernet.eth0.bak.Device), а в TUI нет важной настройки - необходимость поднимать интерфейс при загрузке, поэтому я предпочитаю непосредственно редактировать текстовые конфиги.

Итак, топаем в /etc/sysconfig/network-scripts и редактируем файл ifcfg-<имя интерфейса>:

[root@centos-1 ~]# cd /etc/sysconfig/network-scripts 
[root@centos-1 network-scripts]# vi ./ifcfg-eth0

Сразу удаляем строки HWADDR (MAC-адрес мы сменили!) и NM_CONTROLLED (NetworkManager не нужен). Для DHCP файл будет выглядеть следующим образом:
DEVICE=eth0 
BOOTPROTO=dhcp 
ONBOOT=yes

Для статического назначения IP:
DEVICE="eth0" 
BOOTPROTO=static 
NETWORK=192.168.50.0 
NETMASK=255.255.255.0 
IPADDR=192.168.50.124 
GATEWAY=192.168.50.254 
ONBOOT="yes"

Полный список параметров можно найти например здесь: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaces.html

Меняем имя хоста и тестируем

Ну и напоследок, меняем имя хоста в /etc/hosts и параметр HOSTNAME в файле /etc/sysconfig/network:

[root@centos-1 sysconfig]# sed -i 's/HOSTNAME=centos-1/HOSTNAME=centos/g' /etc/sysconfig/network
[root@centos-1 sysconfig]# sed -i 's/centos-1/centos/g' /etc/hosts
Параметр -i в данном случае означет in-place редактирование указанного файла, "centos-1" - старое имя хоста, "centos" - новое.

Перезагружаем службу сети и имени хоста:
[root@centos-1 sysconfig]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0: 
Determining IP information for eth0... done.
                                                        [  OK  ]
Смена имени хоста требует перезагрузки системы, что мы собственно и делаем:
[root@centos-1 sysconfig]# init 6
Если в выводе команды service все статусы OK и зеленые, а после перезагрузки мы видим обновленное имя хоста, значит мы все сделали правильно.

К списку статей

 

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

Основная сфера моей деятельности связана с поддержкой Solaris и оборудования Sun/Oracle, хотя в последнее время к ним прибавились технологии виртуализации (линейка Citrix Xen) и всякое разное от IBM - от xSeries до Power. Учусь на кафедре Вычислительной Техники НИУ ИТМО.

See you...out there!

http://www.facebook.com/profile.php?id=100001947776045
https://twitter.com/AnnoyingBugs

Ещё на эту же тему:

Ручное изменение типа сети Windows
Конфигурируем статический IP в openSUSE
Oracle Linux System Administration III
Установка ArchLinux в Windows Subsystem for Linux
Настройка OpenLDAP в RedHat 6 со статической конфигурацией
Настройка статической маршрутизации в Solaris
Настройка NIC Teaming на Windows 2003 R2 для адаптеров Intel
Подключение bluetooth гарнитуры к Arch Linux
Основы LXD
Андрей Максимов