wtorek, 2 sierpnia 2011

Interfejsy sieciowe w CentOS 6 i 5

VMware może i jest fajny, ale ma zwyczaj zmiany adresów sprzętowych emulowanych kart po klonowaniu. Efekt jest taki, że sklonowany np CentOS (i wszystkie redhato-fedoro pochodne dystrybucje) rozpoznają karty klona jako zupełnie nowe adaptery. O ile w CentOSie 5 powodowało to, że np eth0 wstawało domyślnie z DHCP, to w wersji 6 jest już o wiele śmieszniej, bo po klonowaniu, wspomniane eth0 zupełnie znika!
W wersji 5, jeśli klon miał mieć te same ustawienia IP co oryginał wystarczyło przekopiować plik /etc/sysconfig/network-scripts/ifcfg-eth0.bak na /etc/sysconfig/network-scripts/ifcfg-eth0 i zmienić bądź całkowicie usunąć linię HWADDR=...

W 6 jest trochę inaczej. Po pierwsze udev trochę się wtrąca i przypisuje konkretnym interfejsom nazwy. W /var/log/messages objawia się to tak:

Aug 2 20:05:24 lnx100 kernel: udev: renamed network interface eth0 to eth1

A odpowiedzialna jest za to reguła z pliku /etc/udev/rules.d/70-persistent-net.rules:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c0:1f:24", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c0:1f:2e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"


Każdy nowy interfejs (MAC adres) zostaje tutaj wpisany i dostaje koleny numerek ethX. Kopiowanie, przenoszenie czy klonowanie maszyn wirtualnych ZAWSZE
zmienia MAC adres kart, w efekcie klon zawsze ma opisy "starych" kart i dodane "nowe" z kolejnymi numerkami.

Jak to poprawiłem? Wyciąłem stare karty z tego pliku a nowym przypisałem nowe niższe numerki :-) i teraz zamiast kart eth2 i eth3 mam jak trzeba eth0 i eth1.