Desinfec’t vom Linux-Server booten

Seite 3: Der Reinraumansatz

Inhaltsverzeichnis

FĂĽr all diejenigen, die es genauer wissen wollen, folgt jetzt die klassische Methode, einen PXE-Boot-Server zu bauen: Ein frisch installiertes System auf Debian-Basis motzt man mit einigen Paketen geeignet auf. Wer schon Teile der Dienste in Betrieb hat, pickt sich einfach die entscheidenden Punkte aus der Anleitung heraus:

apt-get install tftpd-hpa isc-dhcp-server openbsd-inetd

Den TFTP-Server konfigurieren Sie in der Datei /etc/default/tftpd-hpa

TFTP_OPTIONS="--secure"
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"

Im Verzeichnis /srv/tftp braucht jedermann Leserechte, damit der Server die Dateien auch ausliefern kann. Anders als viele gängige Dienste bringt der tftp-Server kein Init-Skript mit. Stattdessen spannt man den Inet-Daemon (bei Debian openbsd-inetd) ein, um den Dienst zu starten. In der Datei /etc/inetd.conf sorgt die Zeile

tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd -s /srv/tftp

dafĂĽr, dass der inet-Daemon bei Verbindungsanfragen auf dem tftp-Port den TFTP-Server startet.

Dem DHCP-Server (jetzt kein Proxy mehr) sollten Sie in /etc/default/isc-dhcp-server explizit mitteilen, auf welcher Schnittstelle er Anfragen beantworten soll, etwa eth0:

interfaces="eth0"

AuĂźerdem mĂĽssen Sie den DHCP-Dienst grundlegend konfigurieren, eine minimale Konfigurationsdatei sieht so aus:

authoritative;
allow booting;
allow bootp;
option domain-name-servers 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.40;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}
host desinfect {
next-server 192.168.1.2;
hardware ethernet 00:01:02:03:04:05;
fixed-address 192.168.1.50;
filename "ct/pxelinux.0";
}

Die Anweisungen erklären den DHCP-Server für aktiv und zuständig (authoritative;), aktivieren die Boot-Dienste (allow booting; allow bootp;) und richten einen Adresspool für das private Netz 192.168.1.0 ein.

Clients erhalten nach dem Start (/etc/init.d/isc-dhcp-server start) Adressen ab 192.168.1.20. Als Nameserver und Gateway gibt der Server die Adresse 192.168.1.1 heraus. Das könnte ein Router im lokalen Netz sein, auf dem dann – sofern vorhanden – der DHCP-Dienst zu deaktivieren wäre.

In der host-Deklaration schließlich ordnen Sie dem System mit der Hardware-Adresse (MAC) 00:01:02:03:04:05 eine feste IP-Adresse zu und verweisen ihn auf den Boot-Server und eine dort abgelegte Boot-Datei. Die IP-Adresse 192.168.1.2 sollte dabei die des Servers selbst sein, also des Systems, auf dem Sie DHCP-Server und TFTP-Server gerade einrichten. Ein Bootmenü analog zu dem per Dnsmasq realisierten macht mit dem ISC-DHCP-Server mehr Arbeit: Hier greift man am besten auf die Möglichkeiten von ISOLINUX/Syslinux zurück.

Klappt die Inbetriebnahme nicht ad hoc oder bleibt das Booten mittendrin stecken, so gilt der erste Blick den Log-Dateien des Systems. Die enthalten oft sinnvolle Hinweise auf nicht gefundene Dateien, falsche Pfade et cetera. Aber nicht jede Fehlermeldung, die dort herumschwirrt, deutet gleich auf ein Problem hin: Ein PXE-Client probiert mehrere Dateinamen aus, die gehen von der MAC-Adresse aus und verallgemeinern immer weiter.

Auch dem startenden Desinfec’t kann man detailliert auf die Finger sehen. Lässt man in /srv/tftp/ct/pxelinux.cfg/default in der APPEND-Zeile die Option splash weg, dann sieht man die Ausgaben des bootenden Systems. Wenn Sie sich im startenden System umsehen wollen, noch bevor das eigentliche Live-System richtig zum Leben erwacht, können Sie die APPEND-Zeile um die Option break=init ergänzen. Bei hartnäckigen Problemen hilft nur ein Paketsniffer.

(rs)