heise online
  • c't
  • iX
  • Technology Review
  • Mac & i
  • mobil
  • Security
  • Netze
  • Open Source
  • Developer
  • c't-TV
  • Download
  • Telepolis
  • Resale
  • Foto
  • Autos
  • Preisvergleich
  • Stellenmarkt
  • Abo
  • weitere Angebote
    • Shop
    • Artikel-Archiv
    • Veranstaltungen
    • Whitepapers
    • heise-marktplatz
    • IT-Markt
    • Tarifrechner
    • Jobs bei Heise

c't Magazin
  • Startseite
  • Artikel
  • c't-Projekte
  • Hotline & FAQ
  • Treiber & mehr
  • Kolumnen
Software zu Projekten Allgemeine Hinweise
Archiv-Suche Newsletter RSS-FeedRSS

c't › c't-Projekte

c't
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Start Page
  • Index
  • History
  • Last Change

Basisinstallation

  1. Basisinstallation
    1. Installationsmedium
    2. Manuelle Installation
      1. Auswahl der primären Netzwerkkarte
      2. Einrichtung des Netzwerks (1)
        1. Beispiel
      3. Einrichtung des Netzwerks (2)
      4. Partitionierung
        1. LVM
        2. Partitionierungsvorschlag
    3. Nächste Schritte
      1. Grundkonfiguration
      2. Bugfix in /etc/network/interfaces
      3. Verhalten bei Strg+Alt+Entf
      4. Shutdown und automatischer Start von XEN-Domains
      5. Bugfix in den XEN-Skripten
    4. Wie geht es weiter?

Installationsmedium

Die Installation kann wahlweise von der Heft-DVD ( c't 17/2009) oder von USB-Stick durchgeführt werden. Hat der Server kein internes DVD-Laufwerk, bietet sich bei halbwegs modernen Mainboards die Verwendung eines externen USB DVD-Laufwerks an.

Beim Booten von DVD wird durch die Eingabe von manual bzw. manual64 die manuelle Installation gestartet. Diese wird in der folgenden Beschreibung verwendet.

Während der Installation kann an vielen Stellen durch Auswahl des <Zurück>-Buttons das Hauptmenü des Debian-Installers aufgerufen werden. Hierüber können auch Punkte konfiguriert werden, die normalerweise übersprungen werden.

Manuelle Installation

Auswahl der primären Netzwerkkarte

Als erstes wird die primäre Netzwerkkarte abgefragt. Diese Karte wird später für das interne Netz (grün) verwendet. Eine ggf. vorhandene 2. Netzwerkkarte kann später z. B. für die Verbindung zum DSL-Modem eingerichtet werden.

Um Konflikte mit meinem bestehenden Netzwerk zu vermeiden, habe ich den Server erst einmal nicht an mein Netzwerk angeschlossen. Hiermit vermeide ich auch, dass der Installer meinen bestehenden DHCP-Server findet und evtl. später keine IP-Adresse mehr abfragt.

Einrichtung des Netzwerks (1)

Als IP-Adresse für die Dom0 kann z.B. 192.168.0.2 vergeben werden. In diesem Fall bleibt die Adresse 192.168.0.1 frei für die (Endian-)Firewall. Im übernächsten Schritt wird das Standardgateway abgefragt. Diese Adresse (bei mir 192.168.0.1) wird außerdem später vom Installer für die Firewall vergeben.

Sollen später einmal mehrere Heimnetze über das Internet (z.B. mit OpenVPN) gekoppelt werden, müssen alle beteiligten Netzwerke unterschiedliche Adressen verwenden. Außerdem sollten natürlich auch noch Adressen für ein WLAN- bzw. ein DMZ-Netzwerk reserviert werden. Bei OpenVPN kann ohne Weiteres pro Verbindung nur eine Route festgelegt werden, daher sollten sich alle Netzwerke innerhalb eines Heimnetzes über eine Adresse/Netzmaske? beschreiben lassen.

Beispiel

Heimnetzwerk 1:

intern (grün):
192.168.0.0/24
dmz (orange):
192.168.1.0/24
wlan (blau):
192.168.2.0/24

Heimnetzwerk 2:

intern (grün):
192.168.4.0/24
dmz (orange):
192.168.5.0/24
wlan (blau):
192.168.6.0/24

Bei diesem Beispiel würde die Route zu Heimnetzwerk 2 die Adresse/Maske? 192.168.0.4/22 und die Route zu Heimnetzwerk 1 die Adresse/Maske? 192.168.0.0/22 haben.

Wer das Konzept mit den Netzmasken noch nicht so ganz verinnerlicht hat, reserviert am besten mit jedes Heimnetzwerk 4 Subnetze, wobei das erste davon durch 4 teilbar sein muss (z.B. 192.168.4.0, 192.168.8.0 oder 192.168.12.0).

Einrichtung des Netzwerks (2)

Als DNS-Server gebe ich die Adresse der Dom0 an, da ich vorhabe, später dort Bind als DNS-Server zu installieren. Wer keinen eigenen DNS-Server betreiben möchte, kann auch die IP-Adresse der Firewall angeben. Dort läuft später ein DNS-Proxy, der alle Anfragen an den Nameserver des Providers weiterleitet. Der Rechnername kann frei gewählt werden, als Domainname verwende ich name.xx. Da .xx als Top-Level Domain nicht existiert, bekomme ich so später keine Probleme beim Zugriff auf eine identische Domain im Internet.

Auch wer eine eigene Domain im Internet besitzt, sollte diese bei Heimnetzwerken nicht verwenden. Ansonsten kann es später Schwierigkeiten geben, wenn ein eigener DNS-Server in dem Heimnetz betrieben werden soll.

Partitionierung

Spätestens bei der der Partitionierung scheiden sich normalerweise die Geister (und das nicht nur unter Linux). Während einige User gerne das gesamte System auf nur einer einzigen Partition installieren möchten, wählen andere Administratoren aus gutem Grund ein anderes Schema:

Ähnlich wie auch bei anderen Betriebssystemen mag Linux (bzw. die darauf laufenden Dienste) es nicht besonders, wenn die Root-Partition voll "läuft". Das kann ganz schnell passieren, wenn sich Verzeichnisse wie z.B. /home, /var/log oder /tmp darauf befinden. Der Ausweg besteht darin, möglichst alle Verzeichnisse mit schwer vorhersehbaren Datenaufkommen auf andere Partitionen auszulagern.

Leider hat diese Methode den Nachteil, dass sich bei "traditioneller" Partitionierung die Größe der einzelnen Dateisysteme nachträglich nur schwierig (bzw. überhaupt nicht) ändern lässt. Daher müsste man eigentlich schon vorab wissen, wieviel Speicherplatz jemals auf den jeweiligen Dateisystemen benötigt werden wird. Diese Abschätzung dürfte Anfängern aber auch erfahrenen Usern immer wieder Schwierigkeiten bereiten. Eine "Überdimensionierung" der einzelnen Partitionen schadet zwar nicht, schmälert aber unter anderem den später auf der /home-Partition zur Verfügung stehenden Speicherplatz.

LVM

Der Ausweg aus diesem Dilemma lautet Logical Volume Manager (LVM) ( c't 25/2005). Bei dieser Art der Partitionierung können die einzelnen Dateisysteme (Logical Volumes) später vergrößert werden. Dieses ist möglich weil im Gegensatz zum "traditionellen" Partitionierungsschema ein Dateisystem nicht unbedingt einen zusammenhängenden Bereich auf der Platte einnehmen muss, sondern auch aus mehreren Segmenten bestehen kann.

Bevor man LVM verwendet, sollte man sich zumindest grob mit der Funktionsweise beschäftigt haben. Basis von LVM ist die Volume group. Dieses ist ein Pool von Speicherplatz, aus dem die einzelnen Logical volumes allokiert werden. Jedes Logical volume wird dann später mit einem Dateisystem formatiert (ähnlich wie eine "normale" Partition). Bevor jedoch Logical volumes angelegt werden können, muss zuerst Speicherplatz zur Volume group hinzugefügt werden. Hierfür kommen in der Regel leere Partitionen (ohne Dateisystem) oder auch ganze Festplatten in Frage.

Falls einmal der komplette Speicherplatz der Volume group erschöpft sein sollte (weil sämtlicher Speicher auf die einzelnen Logical volumes verteilt wurde), kann auch später noch "frischer" Speicher in Form von zusätzlichen Festplatten hinzugefügt werden. Anstelle einer unpartitionierten Festplatte sollte aber besser eine große Partition für LVM angelegt werden, damit Programme wie fdisk nicht Aufgrund der fehlenden Partitionstabelle davon ausgehen, dass die Platte leer wäre...

Ganz nebenbei erleichtert LVM auch die zukünftige Installation einer neuen Version von c't-Debian-Server auf der gleichen Festplatte: Solange noch nicht der gesamte Speicherplatz der Volume group irgendwelchen Volumes zugewiesen wurde, können einfach alle für das neue System erforderlichen Logical volumes zusätzlich in dem LVM angelegt werden. Dabei wird das aktuelle System nicht beeinträchtigt. Steht das neue System und werden die alten Dateien nicht mehr benötigt, können die Volumes des alten Systems einfach freigegeben werden und der Speicherplatz später z.B. für eine notwendig gewordene Vergrößerung der /home-Partition "recycled" werden.

Bei Verwendung von LVM muss sich die Boot-Partition (/boot) außerhalb des LVMs befinden, da ansonsten der Bootloader (Grub) nicht auf den Kernel zugreifen kann. Diese Einschränkung wird wohl irgendwann einmal in Grub2 beseitigt werden. Bis es so weit ist, lege ich einfach zwei "normale" Partitionen für das /boot-Verzeichnis an. Die zweite der beiden Partitionen ist reserviert für eine eventuelle zukünftige Installation eines neueren c't-Debian-Servers (falls ich mir bis dahin nicht (wie fast immer) eine neue Festplatte gekauft habe).

Partitionierungsvorschlag

Im Installer habe ich zuerst einmal folgende Partitionen angelegt:

PartitionGrößeTypBenutzen als Mount pointBermerkung
/dev/hda1 100 MB Primär ext3 /boot Boot-Flag: Ein
/dev/hda2 100 MB Primär Nicht benutzen - reserviert
/dev/hda5 <Rest> logisch phys. Volume für LVM - -

Darauf wird der Befehl "Logical Volume Manager konfigurieren" aufgerufen. Dabei müssen die bisher angelegten Partitionen erst einmal auf die Festplatte geschrieben werden.

In dem LVM-Dialog muss zuerst die Volume group ertellt werden. Der Name ist dabei nicht so wichtig, ich selber verwende hier "server". Darauf muss mindestens ein Physical volume (in meinem Fall "/dev/hda5") zu der Volume group hinzugefügt werden.

Darauf werden die einzelnen Logical volumes in der Volume group ("server") angelegt. Die Spalte "belegt" gibt an, wieviel Platz auf meinem (fertig eingerichteten) System tatsächlich belegt ist.

NameGrößebelegt
root 250 MB 160 MB
swap 512 MB -
tmp 100 MB 5 MB
usr 3 GB 1,6 GB
var 5 GB 1)2)
home 3)

1) Der unter /var belegte Speicherplatz hängt stark von der individuellen Nutzung ab. Das Konfigurationstool ctsrvcfg bietet beim ersten Start an, alle Pakete von der DVD auf die Festplatte zu kopieren. Allein hierdurch werden ca. 1,5 GB belegt. Während der Installation der Endian-Firewall wird die gesamte Distribution erst einmal unter /var entpackt, auch wenn später LVM-Volumes für die VM benutzt werden. Für eine reibungslose Installation muss daher /var mindestens 5 GB groß sein (oder entsprechend kleiner wenn die Pakete nicht kopiert werden sollen).

2) Falls später ClarkConnect verwendet werden soll, muss /var evtl. sogar noch größer sein (habe ich nicht ausprobiert).

3) Die /home-Partition soll natürlich so groß wie möglich sein, dabei müssen aber zwei Punkte beachtet werden. Zum einen müssen noch mindestens 1,2 GB für die Installation der Endian-Firewall frei gehalten werden, zum anderen macht es wenig Sinn, von vornherein den gesamten Speicherplatz der Volume group zu vergeben. Hierbei verspielt man die Möglichkeit, später noch andere Partitionen nachträglich zu vergrößern (zumindest ohne dabei eine zusätzliche Festplatte einbauen zu müssen).


Wie in Fußnote 3) angedeutet, sollte also das Volume für das /home-Verzeichnis nicht den gesamten restlichen Platz in der Volume group einnehmen. Wer z.B. später noch eine virtuelle Maschine mit VDR oder für File-Sharing aufsetzen möchte, wird sicherlich dafür auch noch einige Gigabyte an Festplattenspeicher benötigen. Wer sich noch unschlüssig ist, kann das Volume für /home einfach zu einem späteren Zeitpunkt noch vergrößern bzw. erst nach Basisinstallation anlegen (hier aber nicht beschrieben).

Nachdem alle Logical volumes angelegt wurden, geht es über das Kommando "Fertigstellen" zurück zur Partitionierung. Hier erscheinen die Volumes jetzt zusammen mit den vorher angelegten Partitionen.

VolumeBenutzen alsMount pointName1)Bemerkung
root ext3 / /
swap Swap
tmp ext3 /tmp /tmp
usr ext3 /usr /usr
var ext3 /var /var
home ext3 /home /home Reserv. Blöcke: 0%

1) Der Name eines Dateisystems ist rein dekorativ und hat keine tiefere Bedeutung.


Nachdem alle Angaben noch einmal überprüft wurden, geht es über den Befehl "Partitionierung beenden und Änderungen übernehmen" weiter zum Kopieren der Daten. Darauf folgt die Festlegung des Root-Passwords und der Neustart des Systems.

Nächste Schritte

Grundkonfiguration

Nach den Neustart des Systems wird automatisch ctsrvcfg gestartet. Als erstes wird angeboten, alle Debian-Pakete von der DVD auf die Festplatte zu kopieren.

Als nächstes wird die Zuordnung der Netzwerkkarten angezeigt. Darauf bekomme ich eine Fehlmeldung, das Speicherplatz nicht an den LVM zurückgegeben werden konnte. Diese Meldung kann man wahrscheinlich ignorieren, da sie nur für die automatische Installation relevant sein sollte.

Im letzten Schritt erscheint das Hauptmenü, in den einzelne Softwarepakete an-/ bzw. abgewählt werden können. Per Default sind folgende Funktionen aktiviert und werden beim Aufruf von "Fertig" installiert:

  • Endian Firewall (unter "domus")
  • ISC DHCP Server (unter "infra")
  • ISC Bind (ebenfalls unter "infra")
  • ssh (unter "util")

Ich rufe unmittelbar die Funktion "Fertig" auf, damit erst einmal die Grundkonfiguration abgeschlossen wird. Zuvor habe ich alle o.g. Dienste (bis auf ssh) erst einmal deaktiviert.

Ich empfehle, die Grundkonfiguration auf jeden Fall über den Befehl "Fertig" zu verlassen, auch wenn eigentlich gar keine Pakete installiert werden sollen. Tatsächlich installiert ctsrvcfg nämlich noch diverse weitere Software (u.a. XEN), die teilweise für die spätere Einrichtung von anderen Paketen benötigt wird.

Bugfix in /etc/network/interfaces

In der Datei /etc/network/interfaces steht ab Zeile 12:

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
	up ifconfig eth0 promisc up

Dabei sollte dort anstelle von static wohl manual stehen (wie bei eth1). Scheinbar enstehen hieraus aber keine unmittelbaren Probleme, eventuell kann man das auch einfach so lassen.

Verhalten bei Strg+Alt+Entf

Normalerweise fährt das System beim gleichzeitigen Drücken von Strg+Alt+Entf herunter und startet neu. Mir ist es lieber, wenn der Rechner sich dann abschaltet, so kann ich den Server auch ohne Bildschirm einfach herunterfahren.

Dazu muss die Datei /etc/inittab angepasst werden:

--- vorher ---
# What to to when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

--- nachher ---
# What to to when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now

Die Änderung ist nach dem nächsten Neustart gültig. Durch Eingabe von 'kill -HUP 1' wird die Datei sofort neu eingelesen.

Shutdown und automatischer Start von XEN-Domains

Standardmäßig werden beim Herunterfahren des Systems alle zur Zeit laufenden XEN-Domains "eingefroren" und beim nächsten Booten wieder fortgesetzt. Das bedeutet, dass die XEN-Domains (außer Dom0) nicht wirklich neu gestartet werden und dass außerdem unter Umständen nicht alle Domains beim Booten automatisch gestartet werden (z.B. wenn eine Domain vor dem Neustart manuell heruntergefahren wurde).

Um dieses Verhalten zu ändern muss eine Zeile in der Datei /etc/default/xendomains auskommentiert werden:

--- vorher ---
## Type: string
## Default: /var/lib/xen/save
#
# Directory to save running domains to when the system (dom0) is
# shut down. Will also be used to restore domains from if # XENDOMAINS_RESTORE
# is set (see below). Leave empty to disable domain saving on shutdown
# (e.g. because you rather shut domains down).
# If domain saving does succeed, SHUTDOWN will not be executed.
#
XENDOMAINS_SAVE=/var/lib/xen/save

--- nachher ---
[...]
#XENDOMAINS_SAVE=/var/lib/xen/save

Nach dieser Änderung werden beim Herunterfahren von Dom0 alle laufenden Domains ebenfalls heruntergefahren. Beim Booten von Dom0 werden alle Domains automatisch gestartet, welche einen Symlink in /etc/xen/auto besitzen:

server:/etc/xen/auto# ls -l
insgesamt 0
lrwxrwxrwx 1 root root 9  6. Aug 20:17 endian -> ../endian

Bugfix in den XEN-Skripten

In dem  Artikel zu c't-Debian-Server 4 wird erwähnt, dass die DomUs teilweise beim ersten Aufruf nicht starten wollen. Auf eines meiner Systeme ist das Problem so lästig geworden, dass ich nach einer Lösung gesucht habe.

Beim Starten einer XEN-DomU werden die virtuellen Netzwerkinterfaces (vifx.y) im Kernel angelegt. Dabei wird in der Dom0 für jedes Interface einmal udev aufgerufen, welcher daraufhin das Skript /etc/xen/scripts/vif-bridge startet. Udev wartet dabei jeweils nicht, bis das Skript fertig durchgelaufen ist. Falls das Skript nicht 100%  reentrantfähig ist, dürfte eine der Ursachen für das genannte Problem hier liegen.

Ich habe mir beholfen, indem ich mit Hilfe des  flock-Kommandos einen Wrapper um das vif-bridge Skript gebaut habe. Seitdem ist das Problem bei mir nie wieder aufgetreten.

# cd /etc/xen/scripts
# mv vif-bridge vif-bridge.locked
# vi vif-brigdge

--------->8---------
#!/bin/sh

script="$0".locked

flock -x /var/lock/vif-bridge $script $@
---------8<---------

# chmod 0755 vif-bridge

Wie geht es weiter?

Als nächstes möchte ich die Endian-Firewall installieren. Da diese aber über einen Webbrowser von einem Client-PC aus konfiguriert wird (der Server selbst hat ja keine GUI), richte ich zuerst DHCP und DNS ein. Hierdurch erspare ich mir die manuelle Konfiguration der IP-Adresse(n) auf den Client-PCs.

Auf einen meiner Systeme musste ich erst einmal einen neuen Kernel einrichten?, da nach dem ersten Neustart der SATA-Controller nicht mehr erkannt wurde, und die Netzwerkkarte nicht so recht funktionieren wollte. Sollte mit dem mitgelieferten Kernel alles so weit funktionieren, rate ich aber von der Installation eines neueren (Xen-)Kernels ab, da dieses mit einigen Aufwand sowie späteren Überraschungen verbunden sein kann.

Download in other formats:

  • Plain Text

Trac Powered

Powered by Trac 0.11.7
By Edgewall Software.

http://www.ctmagazin.de/
http://www.ctmagazin.de/projekte/

  • Datenschutzhinweis
  • Impressum
  • Kritik, Anregungen bitte an c't-WWW
  • Mediadaten
  • Copyright © 2011 Heise Zeitschriften Verlag
  • International: The H, The H Security, The H Open Source