====== 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}}