Vendor Options in Kea-dhcp auf Pfsense
Hallo!
nachdem ich fast 2 Wochen damit verbracht habe herauszufinden, dass der KEA DHCP-Server in Pfsense (noch) keine Vendor-Optionen unterstützt, hier meine Erfahrungen und eine vorübergehende Lösung für alle Betroffenen. (Allerdings keine "saubere" Lösung!)
Über die Web-Oberfläche von Pfsense sind diese Optionen (z.B. Option 43 für CISCO WLAN Controller) nicht konfigurierbar. Das liest man auch überall. Also ist die einfachste Lösung, möchte man meinen, die Konfigurationsdatei zu bearbeiten. Also bearbeitet, getestet, funktioniert. - Nur nicht sehr lang.
Besonders seltsam war, dass Kea für das bearbeitete Subnet bzw den WLC dann *gar keine* DHCP Responses mehr geliefert hat. Tcpdump/Wireshark und erweitertes Logging waren deutlich. Kurzum: Das Bearbeiten der Konfigdatei genügt nicht. Pfsense schreibt bei jeder Änderung und jedem Neustart des DHCP-Servers die Konfigdatei neu, so gehen die Änderungen zum einen verloren, und, da der WLC Option43 explizit anfordert, sendet der Server keine Responses dafür.
Ich hab nun entweder wie Wahl, statt Kea wieder ISC zu nehmen, oder vorübergehend, bis diese Optionen korrekt unterstützt werden, einen kleinen Hack anzuwenden. Hab mich für letzteres entschieden:
Auf Pfsense werden die Konfigurationsdateien aktuell durch das php-Script /etc/inc/services.inc beim Service-Start neu generiert. Dort ist die Funktion services_kea4_configure() definiert, die die Konfiguration aus der Pfsense-DB liest, das Array $keaconf aus allen Daten zusammengestellt, nach JSON konvertiert und damit die Konfigdatei generiert.
Da ich nur einen WLC im Netz habe, kann ich meine Option43 global konfigurieren, d.h. ich kann ziemlich weit oben in dieser Array-Hierarchie ansetzen. Hier mein Beispiel:
Wer das ganze Subnet-spezifisch konfigurieren will, der muss dies weiter unten in der FOR-Schleife erledigen und das jeweilige interface checken. Die betreffende FOR-schleife:
Wichtig ist natürlich zu erwähnen, dass auch diese Anpassung bei einem Update vom Pfsense ziemlich sicher überschrieben wird, daher immer ein Backup der Originaldatei UND der manipulierten Datei behalten. Aber man kann so eben weiterhin seinen DCHP-Server über die GUI konfigurieren und dennoch die Vendor Options nutzen.
Um letzteres Problem zu umgehen, habe ich mir aus dieser Anpassung einen Patch generiert, welcher beim Booten von Pfsense auf die Originaldatei angewandt wird. Daher bleiben meine Änderungen auch nach einem Update und Reboot von Pfsense mit hoher Wahrscheinlichkeit erhalten.
Was haltet Ihr davon? Bitte dran denken, ist ein (mini-)Hack, keine Lösung!
Viele Grüße,
McJoey
nachdem ich fast 2 Wochen damit verbracht habe herauszufinden, dass der KEA DHCP-Server in Pfsense (noch) keine Vendor-Optionen unterstützt, hier meine Erfahrungen und eine vorübergehende Lösung für alle Betroffenen. (Allerdings keine "saubere" Lösung!)
Über die Web-Oberfläche von Pfsense sind diese Optionen (z.B. Option 43 für CISCO WLAN Controller) nicht konfigurierbar. Das liest man auch überall. Also ist die einfachste Lösung, möchte man meinen, die Konfigurationsdatei zu bearbeiten. Also bearbeitet, getestet, funktioniert. - Nur nicht sehr lang.
Besonders seltsam war, dass Kea für das bearbeitete Subnet bzw den WLC dann *gar keine* DHCP Responses mehr geliefert hat. Tcpdump/Wireshark und erweitertes Logging waren deutlich. Kurzum: Das Bearbeiten der Konfigdatei genügt nicht. Pfsense schreibt bei jeder Änderung und jedem Neustart des DHCP-Servers die Konfigdatei neu, so gehen die Änderungen zum einen verloren, und, da der WLC Option43 explizit anfordert, sendet der Server keine Responses dafür.
Ich hab nun entweder wie Wahl, statt Kea wieder ISC zu nehmen, oder vorübergehend, bis diese Optionen korrekt unterstützt werden, einen kleinen Hack anzuwenden. Hab mich für letzteres entschieden:
Auf Pfsense werden die Konfigurationsdateien aktuell durch das php-Script /etc/inc/services.inc beim Service-Start neu generiert. Dort ist die Funktion services_kea4_configure() definiert, die die Konfiguration aus der Pfsense-DB liest, das Array $keaconf aus allen Daten zusammengestellt, nach JSON konvertiert und damit die Konfigdatei generiert.
Da ich nur einen WLC im Netz habe, kann ich meine Option43 global konfigurieren, d.h. ich kann ziemlich weit oben in dieser Array-Hierarchie ansetzen. Hier mein Beispiel:
//...
function services_kea4_configure()
{
// ...
$keaconf = [];
$keaconf['Dhcp4'] = [
// ...,
'option-data' => [
...,
[ 'name' => 'vendor-encapsulated-options',
'code' => 43,
'data' => '0104********' ]
],
// ...,
'option-def' => [
// ...,
[ 'name' => 'vendor-encapsulated-options',
'code' => 43,
'type' => 'string',
'space' => 'dhcp4' ]
],
// ...
];
// ...
}
// ...
Wer das ganze Subnet-spezifisch konfigurieren will, der muss dies weiter unten in der FOR-Schleife erledigen und das jeweilige interface checken. Die betreffende FOR-schleife:
foreach ($dhcpdcfg as $dhcpif => $dhcpifconf)
Wichtig ist natürlich zu erwähnen, dass auch diese Anpassung bei einem Update vom Pfsense ziemlich sicher überschrieben wird, daher immer ein Backup der Originaldatei UND der manipulierten Datei behalten. Aber man kann so eben weiterhin seinen DCHP-Server über die GUI konfigurieren und dennoch die Vendor Options nutzen.
Um letzteres Problem zu umgehen, habe ich mir aus dieser Anpassung einen Patch generiert, welcher beim Booten von Pfsense auf die Originaldatei angewandt wird. Daher bleiben meine Änderungen auch nach einem Update und Reboot von Pfsense mit hoher Wahrscheinlichkeit erhalten.
Was haltet Ihr davon? Bitte dran denken, ist ein (mini-)Hack, keine Lösung!
Viele Grüße,
McJoey
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42807629769
Url: https://administrator.de/contentid/42807629769
Ausgedruckt am: 24.11.2024 um 03:11 Uhr