DHCP option boot-server

Für VoIP phone-provisioning müsste der DHCP Server die option “boot-server” senden mit einer http-url.
Stelle ich aber im UDM des UCS 3.2 z.B. in der dhcp policy “DHCP Boot” unter “Boot server” die URL ein, meldet der DHCP server
bei Anfrage einen Fehler im syslog:

dhcpd: LDAP-HOST line 2: semicolon expected.
dhcpd: next-server http:

Es wird hier also die DHCP option “next-server” gesetzt und nicht “boot-server”. Und hier wird nur ein Rechner/eine IP
erwartet.

Wie stelle ich die option “boot-server” z.B. als policy ein?

Hallo,

eine DHCP-Option »boot-server« gibt es offiziell nicht (siehe IANA oder auch in »man dhcpd.conf«). Haben Sie schon mal probiert, die URL in die zwei Bestandteile Hostname und Dateiname aufzusplitten und in UCS bei der DHCP Boot Policy in den zwei Feldern einzutragen?

Falls das nicht das gewünschte tut und die Telefone wirklich Hersteller-spezifische Erweiterungen nutzen, kann man aber dem DHCP-Server allgemein unbekannte Optionen beibringen und diese verschicken lassen. Allerdings lässt sich das nicht über die Oberfläche einrichten. Dafür müssen Sie aber zwingend in Erfahrung bringen, welche ID diese Option »boot-server« eigentlich sein soll, denn das DHCP-Protokoll kennt nur 1-Byte-lange IDs (z.B. die 6 für den DNS-Server), und die sprechenden Namen sind nur für Konfigurationsdateien relevant.

Wenn Sie die ID haben, können Sie auf dem DHCP-Server die Datei /etc/dhcp/local.conf anpassen. Sie müssen dort auf die Telefone matchen, das geht z.B. über die class & den Herstellernamen. Sieht dann grob so aus:

option boot-server code 214 = text; class … { option boot-server "http://…"; }

Hallo,

oh, daß diese Option nicht offiziell ist hätte ich nicht gedacht. Ich habe das Vorgehen zu phone-provisioning
hier gefunden:
https://wiki.asterisk.org/wiki/display/DIGIUM/Provisioning

Da das Phone selbst noch den Dateinamen anhängt, ist mit einer festen Einstellung über die beiden Optionen
in der DHCP Boot Policy nicht getan.
Wenn ich es richtig verstehe, ist boot-server wohl in dem Beispiel die Option 66 im DHCP.

Also müsste ich ich dann doch über /etc/dhcp/local.conf gehen? Dann würde es aber global gelten und nicht als
Policy für nur die Telefone?

Mit freundlichen Grüßen
Armin Schindler

Das bei Asterisk angegebene Beispiel zeigt ja auch schon, dass die Option manuell angelegt werden muss.

Das Problem mit der local.conf ist, dass ein Subnetz nur einmalig in der Konfiguration vorkommen darf. Wenn Sie also im UDM selber schon ein Subnetz angelegt haben, so können Sie nicht dasselbe Subnetz in die local.conf schreiben; dann verhindert der DHCP-Server nämlich mit Fehlern den Start.

Wenn Sie die Option also wirklich für alle mitschicken wollen, dann ja, das geht, indem Sie die Option global in die local.conf eintragen (global im Sinne von »außerhalb jeglicher subnet-Anweisungen«). Wenn das andere Clients nicht stört, dann sind Sie schon fertig; grob halt so:

option boot-server code 66 = string; option boot-server "http://…/…";

Wollen oder müssen Sie aber die Empfänger so beschränken, dass nur den Telefonen diese Option mitgeteilt wird, so wird das halt schwieriger.

Wir müssen die Empfänger beschränken, da andere DHCP clients ggf. andere URLs/Server Einträge bekommen sollen, bzw. einige Clients diese Info gar nicht.
Auch wenn es komplizierter ist, geht es denn irgendwie ohne etwas zu “verbiegen”?

Dafür nutzt man dann oftmals das »client classing« (siehe »man dhcpd.conf«). Sprich man definiert eine Klasse anhand gewisser Attribute, die die Clients schicken, und setzt dann die Optionen für die Klasse. So etwas wie das hier (ausgedacht):

[code]option boot-server code 66 = string;

class “ip-phones” {
match if substring (option dhcp-client-identifier, 1, 7) = “POLYCOM”;
option boot-server “http://…/…”;
}[/code]

Mastodon