OS X DHCP (bootpd)
nur statische IP-Adresszuweisung
Der OS X DHCP Server bootpd vergibt in der Standardeinstellung dynamisch IP-Adressen in alles konfigurierten Subnetzen. Leider lässt sich dieses verhalten weder in der Server.app noch mit dem serveradmin
Tool verändern.
Einzig über die KonfigurationsDatei /etc/bootpd.plist
ist das deaktivieren der dynamischen Addresszuweisung möglich. Ich empfehle zusätzlich die man-page zu bootpd zu lesen, da es noch mehr Optionen gibt, die sich nur so setzen lassen. Glücklicherweise hat Apple die Server.app so gebaut, dass Änderungen an der Konfiguration erkannt und nicht überschrieben werden.
Zuerst lasse ich mir alle konfigurierten Subnetze anzeigen:
# sudo /usr/libexec/PlistBuddy -c "print :Subnets" /etc/bootpd.plist
Array {
Dict {
uuid = 423E141B-9AB3-4D35-B462-6A11CE77A88F
dhcp_router = 10.0.3.1
dhcp_domain_name = my.home
net_range = Array {
10.0.2.1
10.0.3.253
}
lease_max = 3600
dhcp_domain_name_server = Array {
10.0.0.10
10.0.0.11
}
net_mask = 255.255.254.0
allocate = true
net_address = 10.0.2.0
dhcp_domain_search = Array {
my.home
}
selected_port_name = bond0
name = 10.0.2/23 Ethernet (bond0)
}
Dict {
uuid = B177A962-EE8A-4AAE-BFCB-5C23A7C4A517
dhcp_router = 10.0.79.1
dhcp_domain_name = my.home
net_range = Array {
10.0.78.5
10.0.78.6
}
lease_max = 3600
dhcp_domain_name_server = Array {
10.0.0.10
10.0.0.11
}
net_mask = 255.255.254.0
allocate = false
net_address = 10.0.78.0
dhcp_domain_search = Array {
my.home
}
selected_port_name = bond0
name = 10.0.78.0/23
}
}
Relevant ist dabei die Option allocate, die für jedes Subnetz einzeln auf false gestellt werden kann (default: true). Und das geht so:
sudo /usr/libexec/PlistBuddy -c "set :Subnets:0:allocate false" /etc/bootpd.plist
Null (0) ist dabei das erste Subnetz, eins (1) das zweite und so weiter.
Interessant dabei ist, dass die Server.app nun einen Button aktivieren für die Subnetze hat. Scheint also, als wäre auch das deaktivieren vorgesehen, aber schon seit ein paar Versionen vergessen worden ;-).
Noch ein Hinweis dazu: macht man das für alle konfigurierten Subnetze, so wird der DHCP Dienst in der Server.app immer als deaktiviert dargestellt. Weil aber DHCP und NetInstall beide von bootpd
zur Verfügung gestellt werden, läuft der Dienst trotzdem, sobald NetInstall aktiviert ist. Zur Not einfach den NetInstall Dienst (unkonfiguriert) laufen lassen.
statische IP Zuweisungen erstellen
Die statischen mappings zwischen IP und MAC-Adresse können an zwei stellen gemacht werden:
/etc/bootptab
- im (lokalen) LDAP des Macs
Weil letzteres der Weg ist, den auch die Server.app geht, beschreibe ich nur diesen. Das Format der bootptab Datei wird in der man-page erklärt.
Das LDAP kann entweder lokal (default) sein, oder ein OpenDirectory/ActiveDirectory/LDAP im Netz. Das lässt sich, neben der Server.app z.B. mit dem Workgroup Manager bearbeiten - oder mit dscl
bzw. jedem LDAP Browser.
Ein paar Beispiele:
- Alle Rechner auflisten:
dscl . -list /Computers
- IP und MAC-Adresse eines Rechners anzeigen:
dscl . -read /Computers/*Computername* ENetAddress IPAddress
- Rechner löschen:
dscl . -delete /Computers/*Computername*
- Rechner anlegen:
dscl . -create /Computers/*Computername* ENetAddress aa:bb:cc:dd:ee:ff
dscl . -append /Computers/*Computername* IPAdress 10.0.78.5
dynamische DHCP leases löschen
gespeichert werden die in /var/db/dhcpd_leases
. Die Datei einfach löschen/verschieben und den bootpd
neustarten.