====== 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
\\
\\
\\
\\
{{tag>DEBIAN dnsmasq PXE FAI}}