Bisherige Beiträge in der Reihe: IPv6-Vorüberlegungen

Hier möchte ich mein Setup eines (Heim-)Servers vorstellen, das die bereitgestellten Ressourcen möglichst sinnvoll ausnutzt. Ich setze daher auf ein einzelnes Gerät, das mit Hilfe von Virtualisierung verschiedene Funktionen gleichzeitig ausfüllen kann.

Planung

Los geht es zuerst mit groben Plänen. Nachdem der Server durchaus auch zur praktischen Erprobung von technischen Szenarios und als Testumgebung geplant ist, wird nicht zu viel Zeit in Design-Dokumente gesteckt. Mit Verstand vorgehen schadet aber nie.

Geplante Rollen

Ich hätte in meinem Netzwerk gern eine gewisse Anzahl an Funktionen:

  • Host für Virtualisierung zum Testen verschiedener technischer Setups und Programme
  • VPN-Server
  • Datei- und Druckserver für das Heimnetzwerk
  • UPNP/DLNA-Dienst zum Teilen von Musik und Videos im Heimnetzwerk
  • Speicherort für Git-Repositories (mit Gogs oder Gitlab)

Daraus ergeben sich noch ein paar sinnvolle Ergänzungen an Servern:

  • Puppet Master zur zentralen Konfiguration der Infrastruktur und teilweise auch der Desktop-Maschinen
  • Zentraler Autentifizierungsserver für die Infrastruktur (LDAP, FreeIPA, Active Directory. Vielleicht nicht gerade Active Directory.)
  • Kleine Liste an Hilfsdiensten wie apt-cacher-ng zum lokalen Zwischenspeichern von Debian-Paketen für Installationen und Updates

Verwendete Hardware

An relevanter Hardware steht im Heimnetzwerk:

  • FritzBox mit Internetverbindung von M-Net, inklusive IPv6
  • HP Proliant Microserver Gen 10 mit 2x WD Red HDD als Raid 1
  • Ein Drucker für den Druckserver
  • eine externe Festplatte für Backups

Größter Kostenfaktor sind die Festplatten, je nach gewünschter Kapazität kosten die schon was, zumal im RAID-Verbund mindestens zwei benötigt werden und man im Idealfall NAS-Platten wie die WD Red einbaut, damit sie im Serverbetrieb nicht kaputtgehen. Der Microserver bietet am RAID-Adapter Platz für 4 Festplatten. Zusätzlich kann noch eine weitere SATA-Platte mit Größe 2,5” oder kleiner montiert werden, auf der etwa das Betriebssystem installiert werden kann, abseits vom RAID.

Der Microserver ist relativ günstig und verbraucht wenig Strom. Im Betrieb ist er durchaus hörbar, flüsterleise geht anders aber es ist zumindest nicht störend laut im Büro. Anders als die achte Generation kommt die zehnte allerdings ohne iLo. Nachdem der Server gleich neben meinem Schreibtisch steht, kann ich das verkraften.

Nachdem mein Internetanbieter natives IPv6 bietet (dual stack, wobei dslite die Regel ist da die IPv6-Sache gleich nochmal viel wichtiger wird), möchte ich das direkt ausnutzen und für den produktiven Einsatz konfigurieren. Zur Verwendung von IPv6 gab es bereits einige Vorüberlegungen.

Geplante Software

Dieser Punkt ändert sich natürlich am meisten, ein paar Eckpunkte in den Grundlagen zu überlegen schadet aber nicht:

  • Proxmox als Hypervisor auf OpenSource-Basis. Ich bin ein großer Anhänger von freier Software - von den zahlreichen ethischen Vorteilen abgesehen hat der Verzicht auf HyperV, ESXi, etc auch ganz pragmatische Vorteile in Sachen Lizensierung, um die man sich nicht zu kümmern braucht. Support wäre, falls benötigt, auch verfügbar.
  • pfSense bekommt eine eigene VM als Firewall auf dem Virtualisierungshost, hinter der alle VMs betrieben werden. Das ermöglicht mir eine schönere Trennung des Heimnetzwerks von meinem virtuellen Lab und dem Internet. Das wäre mit einigen Kopfständen auch direkt unter Linux möglich und könnte also auch auf der Proxmox-Installation und damit auf der Hardware gemacht werden, am Ende hätte man aber irgendwann ohnehin nur pfsense nachimplementiert und dabei Fehler gemacht, welche dort bereits wieder behoben wurden.
  • Puppet weil alles natürlich sinnvoll verwaltet und möglichst automatisiert ablaufen soll. Dazu ist Konfigurationsmanagement eine gute Idee und nachdem ich im Job auch mit Puppet arbeite, nehme ich natürlich das. Dazu gibt es dann auch eine eigene VM.

Initiales Setup

Ich treffe einige Vorannahmen:

  • FritzBox und Internetverbindung funktionieren bereits wie gewünscht.
  • Hardware ist angekommen, ein LAN-Kabel liegt ebenfalls bereit.
  • Übergangsweise steht ein Bildschirm bereit, damit am Server die initiale Einrichtung gemacht werden kann, bevor er nur noch über das Netzwerk konfiguriert wird.
  • Ein USB-Stick steht zur Verfügung, der neu bespielt werden kann.
  • Ein Schraubendreher - Torx im Idealfall, ein kleiner Schlitz-Schraubendreher schafft es aber auch.
  • Optional: Zusätzliche SATA-Platte oder gleich SSD mit 2,5” Größe und passendem Caddy von HP, ein SATA-Kabel und ein Stromkabel mit SATA auf einer Seite und kleinem Molex auf der anderen

Server aufbauen

Dieser Teil bezieht sich ausdrücklich auf den Microserver G10, danach wird’s wieder allgemeiner.

Das Aufstellen des Servers ist nicht besonders schwierig: man braucht eine Steckdose (wer noch keine mit Überspannungsschutz oder, besser, gleich eine USV hat, kann an der Stelle darüber nachdenken, sich sowas zu besorgen) und ein Netzwerkkabel. An der FritzBox kann man ggf. nochmal kontrollieren, ob der verwendete Netzwerkport auch auf 1GBit/s eingestellt ist oder noch auf 100mbit/s. Für den Desktop-Betrieb ist letzteres vielleicht schon noch ok, vor allem bei Verwendung als NAS darf man ruhig das ganze Gigabit ausnutzen, was aus der Leitung kommen kann.

Wer, wie ich, die Anleitung nicht vorher aus dem Internet runterlädt und durchliest, wird am Anfang merken, dass man hinten den Microserver zwar aufmachen kann und wie erwartet an das Mainboard kommt, die Festplatten aber vorn eingeschoben werden. Dazu macht man das Türchen auf und entnimmt pro zu installierender Platte vier Schrauben, die dort mitgeliefert wurden. Diese Schrauben dreht man an den Seiten in die Platten und schiebt die so vorbereiteten Platten bei 1 beginnend in die Schächte, bis die Sata-Ports hinten klicken. Türchen wieder zu.

Wer eine zusätzliche Platte außerhalb des RAIDs verwendet, etwa eine SSD oder einfach eine 2,5” HDD für das Betriebssystem kann auch hinten die beiden blauen Schrauben lösen, um das restliche Gehäuse abzunehmen. Dann lässt sich oben auf dem Server die Platte montieren (geeignete Caddies gibt’s bei HP zu kaufen) und ein SATA-Kabel zum freien Port auf dem Mainboard durch die Löcher im Gehäuse fummeln. Weiterhin wird das Stromadapterkabel montiert. Wenn alles fest verzurrt ist, kann man den ganzen Server wieder schließen.

Die Rückseite ist unspannend. Kaltgerätekabel anstecken, Netzwerkkabel anstecken, fertig.

BIOS aktualisieren und RAID konfigurieren

HP hat eine Downloadseite für Updates aller Art, die etwas hangelig zu navigieren ist. Filtert man diese Seite auf „Treiber und Software”, dort nach „OS Independent”, findet man auch die Links zum Update des BIOS sowie das Marvell BIOS Utility. Dabei handelt es sich um die Konfigurationssoftware für den eingebauten RAID-Controller. Beides brauchen wir.

Die Vorgehensweise ist jeweils gleich. Die Archive sind zu entpacken und die Inhalte auf den USB-Stick zu kopieren. Vor dem Booten des Servers steckt man den Stick an, schaltet den Server an und drückt F11, um in das Bootmenü zu gelangen. Man wählt die embedded UEFI shell und wechselt das Arbeitsverzeichnis auf den USB-Stick, zumeist mit der Eingabe von fs0: oder fs1:. Ob man richtig ist, erfährt man mit ls. Hat man Verzeichnisse auf dem Stick angelegt, wechselt man erst mit cd dort hinein. Die Eingabe des Dateinamens für das jeweilige Dienstprogramm startet dann den weiteren Vorgang:

  • flashbios.nsh für das BIOS-Update
  • ui64.efi für die Konfiguration des RAIDs

Nach dem BIOS-Update lohnt sich ein Blick in die Einstellungen dort. Bootet man nicht von UEFI, kann man sich die Verwendung des Sticks für die Konfiguration des RAID auch sparen, aber wieso sollte man das tun?

RAID konfigurieren

Der Microserver kommt mit einem Hardware-RAID-Controller und den nutzen wir natürlich auch. Dazu muss, wie oben beschrieben, die Konfigurationsoberfläche dafür von USB gebootet werden und man landet in einer recht einfachen Oberfläche. Die Bedienung ist relativ einfach, das meiste wird auf dem Bildschirm erklärt. Man hat unten unverwendete Festplatten und kann die zur Verwendung markieren. Dann wählt man aus, welche Art von RAID man möchte (Raid 1 in meinem Fall), wartet während das konfiguriert wird und startet dann neu. Ab sofort ist das RAID als Festplattengerät auch für das Betriebssystem sichtbar.

Proxmox installieren

Das Installations-ISO für Proxmox Virtual Environment gibt’s zum Download, ich habe die aktuellste Version 5.0 genommen. Nachdem es sich dabei um ein hybrides ISO handelt, reicht zum Bespielen des USB-Sticks dd:

sudo dd if=proxmox-ve-5.0-iso /dev/<devicenodedesusbsticks> bs=1M

Davon kann dann der Server gebootet werden. Nachdem ich keine zusätzliche Festplatte eingebaut habe, installiere ich meinen Server direkt auf das RAID und lasse das Installationsprogramm den kompletten Platz übernehmen und mit LVM verwalten. ZFS wäre auch nett gewesen, aber dafür habe ich zu wenig Arbeitsspeicher. Also LVM.

Netzwerkkonfiguration

Die Netzwerkkonfiguration ist nicht besonders aufwendig. Initial habe ich einfach per DHCP von der FritzBox eine IPv4 zuweisen lassen und den Server nach der Installation damit gestartet.

Shellzugang

Für detaillierte Konfiguration des Servers ist die Shell am nützlichsten. Um dort hinzukommen, sieht man im Router erst mal nach, welche IP-Adresse der Server bekommen hat. Falls man da nicht ran kommt, kann man auch wieder einen Bildschirm an den Server anschließen und auf dem Login-Bildschirm die aktuelle IP-Adresse des Servers ansehen.

Die Weboberfläche ist unter https://<ipdesservers>:8006 erreichbar. Nur wenn man sowohl https als auch den Port 8006 wählt, funktioniert der Zugang. Man verwendet als Benutzernamen root und das vergebene Kennwort. Linker Hand sieht man Datacenter und darunter den Namen, den man der Proxmox-Installation gegeben hat. Klickt man darauf, gibt es rechts oben einen Knopf Shell. Man erhält eine Root-Shell. Keine Angst davor; es ist nur Debian.

Ich lege mir zunächst einen unprivilligierten Nutzer an: adduser florian , installiere apt install sudo und füge meinen Nutzer zur Gruppe derer hinzu, die das benutzen dürfen: usermod -a -G sudo florian. Von meinem Desktop aus kann ich in einer shell dann auch gleich meinen SSH-Key übertragen: ssh-copy-id <ipdesservers>.

Paketquellen

Proxmox baut finanziell auf die Kunden seiner Enterprise-Edition, die wir aber nicht verwenden. Ich habe keine Subscription, also muss ich für Updates noch die Paketquellen etwas modifizieren:

rm /etc/apt/sources.list.d/pve-enterprise.list
echo 'deb http://download.proxmox.com/debian stretch pve-no-subscription'

Die Fehlermeldung, dass ich keine Subscription habe, kommt dann zwar weiterhin aber ich bekomme Updates aus der OpenSource-Schiene von Proxmox - nebst den normalen Updates für das zugrundeliegende Debian Linux.

Ausblick

Nun haben wir einen Server, bereit für die Behausung virtueller Maschinen und für Linux-Container. Im nächsten Artikel behandle ich die Netzwerkkonfiguration für die virtuelle Umgebung: Ich möchte getrennte Netzbereiche für VMs und an die FritzBox angeschlossene Geräte haben. Das schließt die Installation von pfsense als Firewall-VM mit ein.