DNS-Maskierung: dnsmasq

Es kommt vor, dass die Installation in einem Netzwerk durchgeführt werden muss, wo es bereits einen DHCP-Server gibt. Der DCHP-Dienst, der mit FAI mitgeliefert wird, kann in diesem Fall nicht genutzt werden. In einem privaten Netzwerk, wo zum Beispiel eine Fritz!Box die Verbindung nach außen übernimmt, kommt ein weiteres Problem hinzu: Die Fritz!Box ist bezüglich der Anpassung des DHCP nicht gerade benutzerfreundlich. Des weiteren beherrscht die Fritz!Box die Installation über PXE nicht. Hier kommt das Programm dnsmasq ins Spiel, welches alle PXE-Anfragen an den entsprechenden TFTP-Server weitergibt.


Installation

Das Programm kann unter DEBIAN aus dem Repository installiert werden:

~# apt-get install dnsmasq


Konfiguration

Die Konfigurationsdatei /etc/dnsmasq.conf muss angepasst werden:

resolv-file=/etc/resolv.conf.dnsmasq
domain-needed
bogus-priv

# Hier wird das eigene Netzwerk eingetragen
dhcp-range=192.168.178.0,proxy

# Hier wird die IP-Adresse vom TFTP-Server angegeben
dhcp-boot=pxelinux.0,192.168.178.101,192.168.178.0

# Keine '0' bei 'pxelinux' anhängen
pxe-service=x86PC,"Netzwerk Boot",pxelinux

# Auf 'enabled' setzen, wenn der TFTP-Server lokal läuft,
# andernfalls die Zeile deaktivieren
enable-tftp
tftp-root=/srv/tftp/fai


Erstellen der Datei /etc/resolv.conf.dnsmasq:

# Der Namensserver der Fritz!Box
nameserver 192.167.178.1


Der Dienst muss zum Schluss neu gestartet werden:

~# /etc/init.d/dnsmasq restart


Angepasste PXE-Datei

Wird die FAI-Installation wie oben beschrieben in einem privaten Netzwerk mit einer Fritz!Box durchgeführt, kann es unter Umständen vorkommen, dass während der Installation der Rechnername nicht richtig vom DHCP erkannt oder zugewiesen wird. Nach der Installation und einem Neustart erscheint dann als Rechnername „none.“


Abhilfe schafft das Erstellen einer PXE-Datei speziell für diesen Rechner, wo per Kernelparameter der Rechnername mit übergeben wird.


Das Erstellen einer PXE-Datei geschieht auf dem FAI-Server mit dem Programm fai-chboot. Leider können dort nicht alle Parameter übergeben werden, was mit Hilfe eines Wrapper-Skriptes aber korrigiert wird. Es wird das Skript /usr/local/sbin/fai-chboot mit folgendem Inhalt erstellt:

#!/bin/bash
CLIENT="${1}";
if [ -z "${CLIENT}" ]; then
        echo "Bitte Rechnernamen angeben.";
else
        AUSGABE=$(/usr/sbin/fai-chboot -IFv -k nfsroot=192.168.178.101:/srv/fai/nfsroot -u \
        nfs://192.168.178.101/srv/fai/config "${CLIENT}" 2>&1);
        echo "${AUSGABE}";
        HEX=$(echo "${AUSGABE}" | grep "Writing file" | awk '{print $3}');
        sed -i "s/FAI_ACTION=install/FAI_ACTION=install HOSTNAME=${CLIENT}/g" "${HEX}";
        sed -i "s|root=/srv/fai/nfsroot|root=/dev/nfs|g" "${HEX}";
fi;

Die Adresse des FAI-Servers muss dann unter Umständen angepasst werden.


Das Skript muss für den Administrator ausführbar sein:

~# chmod 755 /usr/local/sbin/fai-chboot


Ein neuer Rechner wird dann wie folgt generiert:

~# fai-chboot fai-client
Booting kernel vmlinuz-3.16.0-4-amd64
 append initrd=initrd.img-3.16.0-4-amd64 ip=dhcp  nfsroot=192.168.178.101:/srv/fai/nfsroot
   FAI_FLAGS=verbose,sshd,createvt FAI_CONFIG_SRC=nfs://192.168.178.101/srv/fai/config

fai-client has 192.168.178.102 in hex C0A8B266
Writing file /srv/tftp/fai/pxelinux.cfg/C0A8B266 for fai-client
Kernel parameters: nfsroot=192.168.178.101:/srv/fai/nfsroot


Die Datei /srv/tftp/fai/pxelinux.cfg/C0A8B266 sieht dann wie folgt aus:

# generated by fai-chboot for host fai-client with IP 192.168.178.102
default fai-generated

label fai-generated
kernel vmlinuz-3.16.0-4-amd64
append initrd=initrd.img-3.16.0-4-amd64 ip=dhcp  root=/dev/nfs aufs \
nfsroot=192.168.178.101:/srv/fai/nfsroot FAI_FLAGS=verbose,sshd,createvt \
FAI_CONFIG_SRC=nfs://192.168.178.101/srv/fai/config \
FAI_ACTION=install HOSTNAME=fai-client





 
 software/dnsmasq.txt · Zuletzt geändert: 2025/05/08 22:16 von 127.0.0.1
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: GNU Free Documentation License 1.3
Recent changes RSS feed Driven by DokuWiki