Hallo,
ich machen der dhcpdv6.conf Änderungen hinzufügen um meine eigenen hooks laufen zu lassen.
immer wenn ich den dienst neu starte wird jedoch "/var/dhcpd/etc/dhcpdv6.conf" überschrieben und meine Änderungen sind weg.
Gibt es da eine Möglichkeit die dauerhaft zu machen? Der GUI bietet keine Möglichkeit für eigene Hooks/Skripte...
habe es rausgefunden:
/usr/local/etc/inc/plugins.inc.d/dhcpd.inc muss man ändern.(an den richtigen Stellen)
leider scheint es keinerlei gute Dokumentation zu OPNsense zu geben bis auf ein nicht aktuelles wiki von deciso.
Details sind dort jedenfalls nicht zu finden
Tu das nicht. Das ist beim nächsten Update wieder weg.
Und da es keinen Weg gibt, eigene Hooks einzubauen, gibt es auch keine Doku dazu. Du manipulierst Dateien, die zum Core von OPNsense gehören und definitiv bei jedem Update überschrieben werden. Es gibt die Features im UI und das ist es.
Was Du tun könntest, wäre in Github einen Feature Request anlegen. Oder das Feature gleich programmieren und einen Pull Request abliefern ;)
Aber ernsthaft: was genau möchtest Du tun? Vielleicht kann ich's einbauen ...
Grüße
Patrick
Also für den ISC DHCP Server gibt es Möglichkeiten für Hooks. Die sind auch dokumentiert. "on commit {hier code}" zum Beispiel.
Was ich möchte:
Wenn der DHCP Server eine IPv6 Adresse vergibt soll er prüfen ob der Hostname in einem externen Nameserver bereits mit der Adresse registriert ist.
Wenn er registriert ist mache nichts. Wenn er nicht registriert ist registriere ihn (nsupdate....).
Ja so etwas ist auch im GUI vorgesehen, aber dort kann für IPv6 Adressen kein Nameserver eingetragen werden der über IPv4 erreichbar ist. Diese Begrenzung ist sinnlos, da ein Nameserver AAAA records enthalten kann und diese auch ausliefern kann selbst wenn er keine public IPv6 Adresse hat.
Guck ich mir heute Abend an.
Da ist dann doch nicht so einfach wie einen zu engen Check im UI anzupassen. Während der Standard nicht sagt, dass man per DHCPv6 nicht auch IPv4 Resolver verteilen darf, kann der ISC DHCPd das aber nur so:
https://kb.isc.org/v1/docs/isc-dhcp-44-manual-pages-dhcp-options
Quoteoption dhcp6.name-servers ip6-address [, ip6-address ... ] ;
The name-servers option instructs clients about locally available recursive DNS servers. It is easiest to describe this as the "nameserver" line in /etc/resolv.conf.
Allerdings kannst Du untern im UI bei "Dynamic DNS" durchaus eine IPv4-Adresse angeben für den Server, über den die Registierung läuft. Der Server, der an die Clients ausgeliefert wird, kann wieder nur IPv6 sein wegen der Beschränkung im DHCPd oben.
Siehe Screenshot.
Gruß
Patrick
Nachtrag: kannst Du mal detailliert beschreiben, was Du in der ".inc" Datei änderst? Einige Dienste haben ein Konzept eines dedizierten "<dienst>.opnsense.d" directories. Da kann man dann Konfig-Schnipsel reinwerfen, die zum einen Updates überleben, zum anderen automatisch gemerged werden, wann immer man im UI irgendetwas tut.
Also genau so ein "hook" Konzept.
Ist das, was Du einbauen willst, isoliert, also kann man den gesamten Teil einfach an das Ende der .conf klatschen? Dann wäre das mit dem ".opnsense.d" Feature vielleicht einfach gebaut. Wenn es in eine spezifische Section reingfriemelt werden muss, wird es schon schwieriger.
So was wie https://github.com/opnsense/core/pull/5313 ?
Grüsse
Franco
ich schaue mir heute abend mal genau an was euch eingefallen ist
Alsooooo
dein Screenshot zeigt das Problem schon sehr gut, solange ich das richtig verstehe gehört in das 1. Feld der Domain Name, zum Beispiel "meinedynamischedomain.de".
Das zweite Feld ist die IP des Primären Nameserver dieser Domain, und genau HIER ist nur IPv6 möglich, was so keinen Sinn ergibt und ich lese das so auch nicht im Standard. Da steht "option dhcp6.name-servers..... locally available recursive" und so weiter. Da geht es im Standard also nicht im den DDNS Server zum Namen registrieren.
Feld 3,4 und Dropdown 5 sind klar.
Meine Änderungen an der ".inc" Datei stehen ab Zeile 1428 und sind 5 Zeilen lang. Über die genaue Position habe ich mir gar keine Gedanken gemacht, bin die Datei überflogen, habe gesehen das es da um die dhcpv6.conf geht weil auf Zeile 1420 die default-lease-time ist und habe mich da mit rangehangen.
Hier sind meine 5 Zeilen die ich da habe:
1428 on commit {
1429 set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
1430 set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
1431 execute("testscript.sh");
1432 }
Das wird auch in die dhcpv6.conf übernommen wenn der Dienst neu gestartet wird. Funktioniert momentan noch nicht, da muss ich mich mal mit den Pfaden auseinandersetzen.
Wo genau das in der dhcpv6.conf am ende steht ist so weit ich weiß egal, daher ist die Idee mit dem "<dienst>.opnsense.d" sicher gut.
Wenn man sich da "reinhängen" kann gibt es neben ddns auch noch andere ganz praktische Sachen. "on commit" wird nämlich ausgeführt bevor der Lease and den Client geht und kann daher noch als veto benutzt werden.
Hast Recht, da habe ich mich verlesen. Hatte "DNS domain" als "DNS domain name server" gelesen. Ja, als DNS-Server geht nur IPv6. Du musst hier aber m.E. zwei unterschiedliche Dinge berücksichtigen:
1. Der DNS-Server der per DHCPv6 an die Clients verteilt wird - der kann beim ISC DHCPd nur IPv6 sein, siehe mein Link und Zitat aus der ISC-Doku. Da kann OPNsense auch nichts dran ändern.
2. Der DNS-Server, an den die dynamischen Updates gehen. Der kann IPv4 oder IPv6 sein. Das Problem ist, das OPNSense den im Moment nicht separat im UI anbietet.
Gruß
Patrick
Punkt 1 ist mir ja recht wie es ist, Punkt 2 würde ich gerne ändern.
Wobei mir da ein eigenes script lieber wäre, bietet mehr Freiheiten.
Gibt es Dokumentation wo ich das mit dem "<dienst>.opnsense.d" nachlesen kann?
Und kannst du etwas zu den Pfaden und Standardshell für den dhcp dienst sagen?