VirtualBox

Eindeutige Maschinen-ID

Beim Klonen von virtuellen Maschinen wird auch die Datei ‚/etc/machine-id‘ mit geklont. Das kann je nach Netzwerkanwendung zu Problemen führen!

Wir wollen speziell für Debian 9 eine neue ID erzeugen. Zu Kontrollzwecken sollte man sich vor und nach dem Ausführen der folgenden Zeilen den Inhalt eben dieser Datei anzeigen lassen:

$# dbus-uuidgen > /var/lib/dbus/machine-id
$# rm /etc/machine-id
$# systemd-machine-id-setup

VirtualBox Tipps

VirtualBox-VM für existierendes Festplattenimage einrichten

  1. Festplattenimage herunterladen, entpacken (Ordner: Downloads)

  2. Neue VM OHNE virtuelle Festplatte anlegen

  3. Festplattenimage in den Ordner der neuen VM verschieben

    (TIPP: im VirtualBox-Manager einfach mit Rechtsklick auf die neue VM klicken: „Im Explorer zeigen“ dann bekommt man den Zielordner am schnellsten geöffnet)

  4. Einbinden des Images im VirtualBox-Manager

    • In die Ansicht „Konfiguration“ umschalten

    • Einfacher Linksklick auf „Massenspeicher“

    • Nun markieren wir „Controller: SATA“

    • Linksklick auf das Festplattensymbol (ganz rechts)

    • Im sich startenden Manager für virtuelle Medien nun einfach über „Vorhandene Platte auswählen“ die heruntergeladene Festplatte auswählen

TCP-Forwarding in die Übungsumgebung hinein

Es sind nur zwei Einträge erforderlich, um vom Windows-Host aus gesendete Datenpakete durch VirtualBox hindurch an den VBox-Gast „Deb9-LXC-Host“ weiterzuleiten. Der erste Eintrag leitet Zugriffe auf einen im Inneren laufenen Linux-Container für HTTP weiter, der zweite dient als Eintrittspunkt in die Übungsumgebung via SSH:

../_images/port-forwarding-VBox.png

Die beiden folgenden Zeilen sind im VirtualBox-Gast „Deb9-LXC-Host“ auszuführen, um den Webserver im dort laufenden Linux-Container mit der IP-Adresse 192.168.122.200 zu erreichen:

iptables -t nat -I PREROUTING -p tcp -d 10.0.2.15 --dport 80 -j DNAT --to-destination 192.168.122.200:80
iptables -I FORWARD -m state -d 192.168.122.9/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

Siehe dazu auch https://ubuntuforums.org/showthread.php?t=2261173

Szenario mit statischer IP-Adressierung

Auch wenn die Standardeinstellung „Network Address Translation“ (NAT) für die Netzwerkadapter innerhalb von VirtualBox beibehalten werden soll, kann es unter Umständen hilfreich sein, sich nicht vom internen DHCP-Server bedienen zu lassen und die IP-Adressierung im Gastsystem statisch zu hinterlegen. Das kann z.B. sinnvoll sein, wenn in der Datei ‚/etc/resolv.conf‘ nicht nur der eigene bind9-Nameserver mittels ‚nameserver 127.0.0.1‘ auftaucht, sondern weitere externe DNS-Server, die von einer statischen DNS-Client Konfiguration des Windows-Hosts herrühren und in die VM weitergereicht werden. Daher wurde die Konfiguration von ‚Deb9-LXC-Host‘ manuell mit der Adresse 10.0.2.150 vorgenommen, anstelle sich per DHCP mit der Adresse 10.0.2.15 versorgen zu lassen.

Um wie oben ausgeführt in die Übungsumgebung und zu weiteren Gästen zu gelangen, führen wir insgesamt 3 mal klassisches TCP-Forwarding (Port-Forwarding) aus:

  1. Windows Host => Debian LXC-Host (mittels grafischem VirtualBox Manager), siehe dazu die folgende Abbildung:

    ../_images/port-forwarding_VBox-Linux-Linux_mit_Adressierung.png
  2. Debian LXC-Host => Debian Container

    Hier gibt es wegen den vorkonfigurierten libvirt/virt-manager Frontends schon einige iptables-Regeln. Wir fügen die zwei folgenden hinzu, wobei wir als Zielport für diese Weiterleitung 8888 wählen, was uns die Möglichkeit offenhält, auf dem Router ‚debian9-1‘ selber HTTP am Standardport anbieten zu können:

    iptables -t nat -I PREROUTING -p tcp -d 10.0.2.150 --dport 80 -j DNAT --to-destination 192.168.122.200:8888
    iptables -I FORWARD -m state -d 192.168.122.200/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
    

    Zur Kontrolle empfiehlt sich folgende Kommandozeile: iptables -t nat -vnL PREROUTING

  3. Debian Container => CentOS7 Container

    Im Container „debian9-1“ (= IP-Adresse 192.168.122.200) aktivieren wir abermals TCP-Forwarding, hier benötigen wir allerdings nur eine einzige Zeile in klassischer Reinform:

    iptables -t nat -A PREROUTING -i eth0 -j DNAT -p tcp --dport 8888 --to-destination 10.20.30.7:80
    

    Damit haben wir das Ende der Kette erreicht: den am Standardport lauschenden Webserver auf CentOS7 (= IP-Adresse 10.20.30.7).