Derzeit werden die DNS-Einträge (sowohl "Vorwärts" als auch Reverse) im Active-Directories vom Skript dhcpd-update-samba-dns.py im Rahmes eines DHCP-Leases gesetzt. Dies funktioniert allerdings nur, wenn der entsprechende Hostname mit der zugehörigen MAC-Adresse dem DHCP-Server bekannt ist. Daher werden in der devices.csv ja auch die MAC-Adressen erfasst.
Hat ein Rechner aber mehrere Netzwerkkarten (und damit MAC-Adressen), dann wird die Identifizierung eines Endgerätes schwierig. Doppelte Rechnerführung in der devices.csv sind da eine Lösung (allerdings kann der Rechnername nicht doppelt verwendet werden). Allerdings wird das schnell kompliziert, wenn Dockingstationen mit eigenen MAC-Adressen und Netzwerksegmentierung via VLANs ins Spiel kommen.
Wir verwenden bei uns an der Schule Ansible für die Installation und Konfiguration der Endgeräte. Da wäre uns die "momentante" IP-Adresse des Geräts eigentlich egal. Wichtig wäre, dass wir den Rechner unter seinem Namen erreichen können.
Die MAC-basierte Namenszuordnung bietet natürlich ein gewisses Maß an Sicherheit, wobei dies dank MAC-Spoofing nur eine scheinbare Sicherheit ist.
Folgender Änderungsvorschlag:
/etc/dhcp/events.conf
statt nur host-decl-name (das ist der Hostname basierend auf der MAC-Adresse) übergibt man zusätzlich
pick-first-value(option fqdn.hostname, option host-name) (das sind die vom Client übermittelten Hostnamen) an das Skript dhcpd-update-samba-dns.py
/usr/lib/linuxmuster/dhcpd-update-samba-dns.py
Hat man kenen "host-decl-name" bekommen und statt dessen einen "Wunschnamen" vom Client, dann muss man checken, ob dieser akzeptiert werden kann. Da fallen mir jetzt zwei Check-Möglichkeiten ein:
Das Skript ermittelt die die Sophomorix-Rolle des angegebenen "Computerobjekts".
Wenn dies ein classroom-teachercomputer, classroom-studentcomputer, facultiy-teachercomputer oder ein staffcomputer ist, dann glaubt es dem Namen und nimmt die DNS-Änderung vor.
Nachteil: Alle Computer müssen dann auch entsprechend im AD vorhanden sein (in der devices.csv eingepflegt sein).
Das Skript macht einen DNS-Lookup des gewünschten Namens.
Wenn dieser bereits im DNS vorhanden ist und einem gewissen IP-Range zugeordnet ist (Servernetz, DMZ, ...), dann wird der DNS-Eintrag geblockt. Sonst wird er getätigt.
Der Check der geschützten IP-Segmente könnte man über Wildcard-Masken realisieren.
Ich würde auch eine entsprechende Lösung ausarbeiten und einen Pull-Request stellen. Ich erachte eine Diskussion vorab allerdings als zielführend.
Derzeit werden die DNS-Einträge (sowohl "Vorwärts" als auch Reverse) im Active-Directories vom Skript dhcpd-update-samba-dns.py im Rahmes eines DHCP-Leases gesetzt. Dies funktioniert allerdings nur, wenn der entsprechende Hostname mit der zugehörigen MAC-Adresse dem DHCP-Server bekannt ist. Daher werden in der devices.csv ja auch die MAC-Adressen erfasst.
Hat ein Rechner aber mehrere Netzwerkkarten (und damit MAC-Adressen), dann wird die Identifizierung eines Endgerätes schwierig. Doppelte Rechnerführung in der devices.csv sind da eine Lösung (allerdings kann der Rechnername nicht doppelt verwendet werden). Allerdings wird das schnell kompliziert, wenn Dockingstationen mit eigenen MAC-Adressen und Netzwerksegmentierung via VLANs ins Spiel kommen.
Wir verwenden bei uns an der Schule Ansible für die Installation und Konfiguration der Endgeräte. Da wäre uns die "momentante" IP-Adresse des Geräts eigentlich egal. Wichtig wäre, dass wir den Rechner unter seinem Namen erreichen können.
Die MAC-basierte Namenszuordnung bietet natürlich ein gewisses Maß an Sicherheit, wobei dies dank MAC-Spoofing nur eine scheinbare Sicherheit ist.
Folgender Änderungsvorschlag:
/etc/dhcp/events.conf statt nur host-decl-name (das ist der Hostname basierend auf der MAC-Adresse) übergibt man zusätzlich pick-first-value(option fqdn.hostname, option host-name) (das sind die vom Client übermittelten Hostnamen) an das Skript dhcpd-update-samba-dns.py
/usr/lib/linuxmuster/dhcpd-update-samba-dns.py Hat man kenen "host-decl-name" bekommen und statt dessen einen "Wunschnamen" vom Client, dann muss man checken, ob dieser akzeptiert werden kann. Da fallen mir jetzt zwei Check-Möglichkeiten ein:
Wenn dies ein classroom-teachercomputer, classroom-studentcomputer, facultiy-teachercomputer oder ein staffcomputer ist, dann glaubt es dem Namen und nimmt die DNS-Änderung vor. Nachteil: Alle Computer müssen dann auch entsprechend im AD vorhanden sein (in der devices.csv eingepflegt sein).
Ich würde auch eine entsprechende Lösung ausarbeiten und einen Pull-Request stellen. Ich erachte eine Diskussion vorab allerdings als zielführend.
Ich freue mich Kritik und Vorschläge
Raphael