VirtualBox Images kopieren; Netzwerkinterfaces eth0, eth1, eth2…; Netzwerk funktioniert nicht?

Kopiert man VirtualBox Images mit Linux-Systemen als Gast (zumindest Ubuntu und Debian, ggf. weitere), funktionieren oftmals die Netzwerkeinstellungen nicht mehr.

Dies liegt daran, dass bei VirtualBox i.d. Regel nur das Festplatten-Image, nicht jedoch die Konfiguration der virtuellen Hardware kopiert wird (wie das z.B. bei vmWare der Fall ist). Vergleichbar ist dies also mit dem Einbau der Festplatte in eine andere Rechner-Hardware.

Um zu verhindern, dass Netzwerkkonfigurationen z.B. durch den Einbau neuer Hardware ungültig werden, werden die Konfigurationen (z.B. für das Device eth0) an die Hardwareadresse (MAC-Adresse) der jeweiligen Netzwerkkarte gebunden.

Das heisst also:

  • bei der Neuinstallation eines Linux-Systems befindet sich eine Netzwerkkarte im Rechner
  • diese wird als etho, also als erstes Netzwerkdevice am Bus identifiziert
  • das Betriebssystem speichert in der Datei /etc/udev/rules.d/70-persistent-net.rules die Zuordnung dieser Netzwerkkarte (über die MAC-Adresse) zum Devicenamen “eth0″
  • die Netzwerkkarte bzw. das Netzwerk wird konfiguriert (feste IP-Adresse vs. DHCP etc.) in der Datei /etc/network/interfaces

Der Eintrag in o.g. /etc/udev/rules.d/70-persistent-net.rules sieht ungefähr wie folgt aus:

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="6c:62:6d:0d:9c:93", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Wird nun das Festplattenimage auf einen anderen Rechner kopiert, so wird i.d. Regel eine neue virtuelle Maschine angelegt, wobei VirtualBox automatisch eine zufällige MAC-Adresse für die virtuelle Netzwerkkarte erzeugt.

Beim Start erkennt das Linux-System dann ein neues Interface und trägt dieses in der Datei /etc/udev/rules.d/70-persistent-net.rules ein. Da die bisher verwendete ID (in unserem Beispiel eth0) ja bereits vergeben ist, wird entsprechend hochgezählt: Die neue virtuelle Karte erhielte dann z.B. eth1.

Da in /etc/network/interfaces die Konfiguration jeweils für das spezifische Device definiert wird (z.B. eth0), greift sie entsprechend für eth1, eth2, eth3 etc. nicht – das Netzwerk funktioniert also nicht, da das in der VM verfügbare Netzwerkdevice noch unkonfiguriert ist.

Es muss also vor dem Start des Gastes manuell eingegriffen werden. Hierfür kommen 3 Optionen in Betracht:
weiterlesen »

rsync über FTP mit fuse

Es ist schon spät, daher eine eher Staccato-artige Zusammenfassung in der Hoffnung, dass das noch für andere hilfreich sein könnte:

Problem:

Man will Daten von Server A (unter Linux, voller Zugriff) auf oder von Server B (nur FTP, kein anderer Zugriff) kopieren bzw. mit diesem Server abgleichen (Konkreter Anwendungsfall: Man will verschiedene WordPress Installationen nebst Plugins automatisiert von einem zentralen Server updaten).

Normalerweise nähme man rsync – hätte man weiter reichenden Zugriff auf Server B als eben FTP:

Lösung:

Die benötigten Pakete installieren mit dem $Installer-Deiner-Wahl, hier z.B. mit apt:

apt-get install curlftpfs

Abhängigkeiten sollten dann (wenn man etwas taugliches nutzt) automatisch aufgelöst werden, das Paket curlftpfs hängt natürlich vom fuse ab. Falls das nicht automatisch passieren sollte, bitte manuell nachhelfen:

apt-get install fuse-utils libfuse2

Dann ein Verzeichnis anlegen, in das wir später das “FTP Laufwerk” mounten wollen, z.B.

mkdir /home/www/mount/servername

Nun das FTP Share mounten:

curlftpfs USERNAME:PASSWORD@SERVER-ADRESSE /home/www/mount/servername/

Und vóila: Der FTP Server sollte nun über das lokale Dateisystem verfügbar sein und somit plötzlich auch für rsync.

Bei der rsync Anwendung sind aber ein paar Sachen zu beachten, da ansonsten stets Fehler auftreten (Dateien können nicht geschrieben werden etc.).

Man will z.B. die sonst sehr gern genommene Option “-a” oder, mein Klassiker, “-avz” nicht nutzen. Mit dieser Option wird u.a. versucht, den Eigentümer oder die Gruppe einer Datei zu setzen. Dies schlägt auf dem FTP Server im Zweifelsfalle fehl, wodurch der Vorgang nicht komplett abgeschlossen werden kann. Ferner versucht rsync stets, das TMP-Verzeichnis innerhalb der tranferierten Daten abzulegen – was wiederum zu Problemen führt.

All diese Probleme kann man wie folgt umschiffen:

rsync -rltv --temp-dir=/tmp/ --stats --progress /home/www/wordpress-update/ /home/www/mount/servername

Mein aktueller Anwendungsfall war ja das Updaten von WordPress Installationen – hierbei will man einige Dateien auf keinen Fall überschreiben (die Konfigurationsdatei, die XML-Sitemap des Google-Sitemaps-Plugins und die .htaccess). Da die Anzahl der auszuschließenden Dateien recht gering ist, kann man das noch prima mittels --exclude machen:

rsync -rltv --temp-dir=/tmp/ --stats --progress --exclude=wp-config.php --exclude=robots.txt --exclude=sitemap* --exclude=.htaccess --exclude=wp-content /home/www/wordpress/ /home/www/mount/servername

Weiteres und eine auführlichere Beschreibung vielleicht schon morgen, jetzt muss ich erstmal schlafen ;-)

Danke für die Anregungen/Ideen an: blog.simlau.net, lieber-linux.de, stackoverflow.com, debiantutorials.net und commandlinefu.com.

Kurzmitteilung: Eigene IP-Adresse in Spamlisten bzw. Spamblock-Listen prüfen

Um nachzuprüfen, ob ein Mailserver in gängigen Antispam- bzw. Spamblocklisten enthalten ist, habe ich bisher immer direkt die in Frage kommenden Anbieter aufgesucht und dort jeweils nach der IP-Adresse gesucht.

Ich bin gerade über dieses sehr coole Frontend bei heise.de gestolpert – das ist nicht nur praktisch (weil eine gleichzeitige Anfrage an verschiedene Dienste möglich ist, also eine Metasuche), sondern sehr praktisch (weil es einen Link gibt, mit dem man sich die Suche gleich als Suchdienst in Firefox einrichten kann) :-)

Eigene IP-Adresse in Spamlisten prüfen

Weitere Apps aus dem Bereich “Netze” bei Heise

Kurzmitteilung: CloudCamp Berlin 2009 (30.04.2009)

  • Eine spannende Veranstaltung steht in Berlin auf der Agenda: Das CloudCamp. Zur Darstellung zitiere ich von der Veranstalter-Website:

About CloudCamp:

CloudCamp is an unconference where attendees can exchange ideas, knowledge and information in a creative and supporting environment, advancing the current state of cloud computing and related technologies. As an informal, member-supported gathering, we rely entirely on volunteers to help with meeting content, speakers, meeting locations, equipment and membership recruitment. We also have corporate sponsors that provide financial assistance with venues, food, drink, software, services and other valuable donations.

Weitere Informationen/Links: