Wie diese Hosts in unbound eintragen? DNS-SD statt mDNS. Gelöst!

Started by Schnuffel2008, August 15, 2025, 04:00:09 PM

Previous topic - Next topic
August 15, 2025, 04:00:09 PM Last Edit: August 18, 2025, 05:37:49 PM by Schnuffel2008 Reason: Thema hat sich erledigt
Hallo,

ich benötige mal wieder Eure Hilfe. Es funktioniert immer noch nicht optimal mit meinem HP-Drucker im Heimnetz mit mehreren VLANs.
Ich möchte den Drucker in Iphones und IPads, in Android-Handys und in PCs nutzen aber es funktioniert nicht richtig. Habe schon alles versucht mit mDNS und Avahi etc. Aber alles geht nicht so wie ich es gerne möchte.
Ich hatte ja schon einmal einen anderen Thread aufgemacht, weil ich diese Lösung mit DNSSD gefunden hatte, konnte es aber nicht umsetzen.

Jetzt wäre ich da wohl weiter, müsste aber Einträge bei unbound machen.
Das Beispiel aus dem Netz sieht so aus:

# /etc/unbound/unbound.conf
# Unbound DNS-SD Network Printer Configuration Example.

local-zone: "_tcp.home.macdougal.com." static
local-zone: "_udp.home.macdougal.com." static

# Some of the lines in this block may be unnecessary.
local-data: "b._dns-sd._udp.home.macdougal.com. 60    IN PTR home.macdougal.com."
local-data: "lb._dns-sd._udp.home.macdougal.com. 60    IN PTR home.macdougal.com."
local-data: "_services._dns-sd._udp.home.macdougal.com. 60 IN PTR _ipp._tcp.home.macdougal.com."
local-data: "_universal._sub._ipp._tcp.home.macdougal.com.    60    IN    PTR    HP\032Tango\032X._ipp._tcp.home.macdougal.com"
local-data: "_ipp._tcp.home.macdougal.com. 60 IN PTR HP\032Tango\032X._ipp._tcp.home.macdougal.com"

local-data: "HP\032Tango\032X._ipp._tcp.home.macdougal.com. 60 IN SRV 0 0 631 HP\032Tango\032X._ipp._tcp.home.macdougal.com"
local-data: "HP\032Tango\032X._ipp._tcp.home.macdougal.com. 60 IN A 172.16.50.50"
local-data: 'HP\032Tango\032X._ipp._tcp.home.macdougal.com. 60 IN TXT "txtvers=1" "adminurl=https://printer.home.macdougal.com./#hId-pgAirPrint" "note=201 Macdougal St Apt 3W New York, NY 10011" "priority=30" "qtotal=1" "TLS=1.2" "rp=ipp/print" "UUID=70aa8120-f2f7-4766-9527-69eb36c3d062" "product=(HP Tango)" "ty=HP Tango" "Color=T" "Duplex=F" "pdl=application/vnd.hp-PCL,image/jpeg,image/urf,image/pwg-raster,application/PCLm" "PaperMax=legal-A4" "URF=CP1,MT1-2-8-9-10-11,PQ3-4-5,RS300-600,SRGB24,OB9,OFU0,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,IS1,V1.4,FN3" "kind=document,envelope,photo,postcard" "Scan=F" "mopria-certified=1.3" "Fax=F"'

So einen Eintrag habe ich jetzt für meinen Drucker angepasst aber wie funktioniert das jetzt mit unbound.
Ich wüsste nicht wie ich das in der GUI zu unbound eintragen könnte.
Ich habe das Ganze jetzt einfach in die host_entries.conf im unbound-Verzeichnis kopiert. Aber immer wenn ich unbound neu starte, löscht er meine Einträge und stellt die alte Datei mit meinen restlichen Host-Einträgen wieder her, wobei die neuen Einträge verloren gehen. Ich habe unbound auch schon gestoppt und dann die Datei ersetzt. Aber auch das bringt nichts. Er stellt immer die alte Datei wieder her.

Ich würde sehr gerne austesten ob das mit den DNSSD-Einträgen funktioniert.
Hat jemand eine Idee?


Enschuldige bitte.. aber der Zusammenhang was der Drucker mit Umbound zu tun hat fehlt mir....

ich nutze zwar einen Brother Drucker im Vlan und greife auf den von allen anderen Vlans zu,
dafür benötige ich aber kein DNS dienst.

Was möchtest du erreichen? über ddns auf die Duckerdienste zugreifen von aussen? Drucker über DNS Namen ansprechen?

Wie gesagt, ich habe die Probleme mit meinem HP Drucker.
Und wenn ich das als Laie richtig verstehe, dann kann man Airprintfähige Drucker auch anstatt per Mulicast über Unicast DNS ansprechen.
Damit entfielen dann die mDNS-Repeater oder Avahi-Lösungen und ich sollte meine Sorgen los sein.
Vielleicht verstehe ich das auch falsch, aber wer nichts versucht, der weiß auch nicht, ob es geht.
Das Ganze ist hier beschrieben:
https://www.reddit.com/r/PFSENSE/comments/gdi6h1/dnssd_with_pfsense_dns_resolver_unbound/?tl=de&rdt=60251
http://www.dns-sd.org/ServerStaticSetup.html
https://www.synology-forum.de/threads/dns-sd-oder-wie-zeigt-dns-den-ios-geraeten-den-drucker-aus-anderem-subnetz.102150/
Ich habe mittlerweile mit dem Vorgehen im letzten Post mittels Apple-Bonjour-SDK die entsprechenden Einträge gefunden und versuche diese nun wie im ersten Post beschrieben in unbound einzubinden. Das gelingt mir aber nicht.
Ich glaube ich muss es in die Datei zones.conf schreiben und nicht in unbound.conf oder host_entries.conf.
Aber es funktioniert dennoch nicht.
Wahrscheinlich muss man auch noch etwas im DHCP-Server eintragen DNSMASQ.
Ist für jemanden der nur wenig Ahnung hat schon recht schwer zu verstehen, obwohl die Posts eigentlich sehr verständlich sind.
Aber ich versuch es weiter. Vielleicht findet sich noch jemand, der mir helfen kann.

nun ja ich habe keine IOS erfahrung, aber ich schätze du brauchst einen UDP/Multicastrelay
so wie:

System>firmware>erweiterungen>os-mdns-repeater und/oder os-udpbroadcastrelay (show community pluins) anhaken.

Damit solltest du mDNS/Bonjour von einem zum anderen Vlan durchleiten können so sollte der Drucker auch gefunden werden...

August 16, 2025, 08:22:00 AM #4 Last Edit: August 16, 2025, 09:49:36 AM by Schnuffel2008
Wie gesagt, diese Lösungen habe ich alle schon versucht mit mDNS. Aber das funktioniert bei mir einfach nicht zuverlässig. HP ist da vielleicht etwas zickig?
Bei der angegebenen Lösung benötigt man das ja scheinbar gar nicht.

Nochmal eine ergänzende Frage.
Ich benötige ja den Domainnamen für den DHCP-Server.
Ich habe aber mehrere Namen und es ist mir nicht klar welchen ich nehmen muss.
Ich habe in der OPnsense meine öffenliche Domain angegeben, die ich per Dyndns aktualisiere, also so etwas wie subdomain.ipv64.de
Dann habe ich in DNSMasq eingetragen unter Domain internal. Das ist jetzt auch die Domain die für das obige Vorgehen vorgesehen habe.
Und dann steht zu meiner Verwirrung unter /var/etc/dhcpd.conf noch option domain-name "localdomain". Ich dachte hier würde DNSMASQ "internal" eintragen.
Wird diese Datei benutzt, müsste ich das ändern oder kann ich die ignorieren?

Was im DHCP-Server steht, ist die Domain, die deine Clients mitgeteilt bekommen. Also z.B bei "ping foo" macht der Resolver des Clients dann "ping foo.mydomain.lan" daraus.

".local" sollte man grundsätzlich nicht nehmen, es sei denn, man will mDNS kaputt machen 🙂
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

August 16, 2025, 11:17:43 AM #7 Last Edit: August 16, 2025, 11:23:56 AM by Schnuffel2008
Hallo Patrick,

d.h. wenn ich in DNSMASQ unter "Allgemein" "DHCP default Domain" den Eintrag "internal" erstelle, dann heißen meine Geräte z.B. HPXXXX.internal, oder (wobei HPXXXX der Name ist, den ich im Drucker direkt als Namen unter Netzwerkidentifikation eingebe, wenn ich dort eine statische Adresse als IP angebe. Ansonsten wäre es der Name, den ich unter Host bei der Namensreservierung für eine MAC-Adresse angebe.)? Korrekt?
Und was ist mit dem Eintrag "localdomain" unter /var/etc/dhcpd.con. Der wäre nur relevant, wenn ich einen anderen DHCP-Server benutze?
Noch eine blöde Nachfrage. Muss der FQDN immer die Struktur *.* haben, also z.B. internal.lan oder funktioniert auch nur internal?

Quote from: Schnuffel2008 on August 16, 2025, 11:17:43 AMdann heißen meine Geräte z.B. HPXXXX.internal,

Nein, das heißt, deine Geräte *suchen* unter der Domäne "internal", wenn du nur einen unqualifizierten Hostnamen irgendwo eingibst.

Wie deine Geräte im DNS registriert werden, weiß ich bei DNSmasq nicht, ich benutze Kea und Unbound. Die Domain, die im DNS die lokale ist, in der die Registrierungen landen, wird dort im Unbound eingestellt. Bzw. gleich die globale aus System > Settings > General benutzt.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

So,
Dank Eurer Hilfe und mit viel Lesen ist es mir endlich gelungen das Ganze aufzusetzen. Und was soll ich sagen, das Ergebnis ist wirklich optimal für mich, genau wie ich es erhofft hatte.
Die Ios-Geräte erkennen die Drucker sofort in jedem Netzwerk und das ohne AVAHI oder mDNS-Repeater. Einfach als Eintrag in unbound. Auch die neuen Windows Rechner erkennen den Drucker als Netzwerkdrucker und installieren den passenden Treiber einschließlich Scanner-Unterstützung bei meinem Drucker. Fax habe ich nicht versucht. Weiß nicht, ob das auch gehen würde. Die Android-Geräte erkennen den Drucker ebenfalls. Dafür habe ich das Mopria-Plugin installiert. Mit dem HP-Plugin ging es nicht. Die native Android-Drucker Unterstützung kann den Drucker wahrschenlich einbinden, wenn man manuell die IP-Adresse eingibt. Habe ich jedoch nicht ausprobiert. Aber wie gsagt, so funktioniert der Drucker für alle Geräte auch ohne mDNS.
Wie habe ich es gemacht?
Den Drucker habe ich mit einer festen IP eingerichtet (geht aber wahrscheinlich auch per DHCP).
Als Netzwerkidentifikation habe ich hpofficejet8020 und als Domain "internal" gewählt. (Ich habe nur ipv4 konfiguriert. Ob das genauso mit ipv6 funktioniert, da musss ich passen).
Im DHCP-Server (bei mir neuerdings DNSMASQ) habe ich als Domain, dann ebenfalls "internal" gewählt. Ich habe hier keinen Hosteintrag für den Drucker gemacht. Wie DNSMASQ mit Unbound zusammenspilet steht ja ausführlich in den entsprechenden tollen Anleitungen. Das lasse ich jetzt außen vor.
Jetzt fehlen nur noch die Einträge in unbound.
Dazu eine einfache Text-Datei angelegt im Verzeichnis: /usr/local/etc/unbound.opnsense.d
Der Name ist egal. Wichtig Endung .conf
Inhalt der Datei:

server:
local-zone: "internal." static
local-data: "b._dns-sd._udp.internal. 3600 IN PTR internal"
local-data: "lb._dns-sd._udp.internal. 3600 IN PTR internal"
local-data: "_universal._sub._ipp._tcp.internal. 60 IN PTR hpofficejet8020._ipp._tcp.internal"
local-data: "_ipp._tcp.internal. 60 IN PTR hpofficejet8020._ipp._tcp.internal"
local-data: "hpofficejet8020._ipp._tcp.internal. 60 IN SRV 0 0 631 hpofficejet8020._ipp._tcp.internal"
local-data: "hpofficejet8020.internal. 60 IN A 192.168.20.2"
local-data: "hpofficejet8020._ipp._tcp.internal. 60 IN A 192.168.20.2"
local-data: 'hpofficejet8020._ipp._tcp.internal. 60 IN TXT "txtvers=1" "adminurl=http://hpofficejet8020.internal./#hId-pgAirPrint" "note=Buero" "priority=20" "qtotal=1" "TLS=1.2" "rp=ipp/print" "UUID=xxxxxxxxxxxx" "product=(HP OfficeJet Pro 8020 series)" "ty=HP OfficeJet Pro 8020 series" "usb_MFG=HP" "usb_MDL=OfficeJet Pro 8020 series" "Color=T" "Duplex=T" "pdl=application/vnd.hp-PCL,image/jpeg,image/urf,image/pwg-raster,application/PCLm" "PaperMax=legal-A4" "URF=CP1,MT1-2-8-9-10-11,PQ3-4-5,RS300-600,SRGB24,OB9,OFU0,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,DM3,IS1,V1.4,FN3" "kind=document,envelope,photo,postcard" "Scan=T" "mopria-certified=2.0" "rfo=ipp/faxout" "Fax=T"'

Wichtig war bei mir, dass man als Local-zone den gleichen Domainnamen nimmt, den man im Drucker und im DHCP vorgibt. In den anderen Anleitungen stand immer etwas von einer neuen Subdomain anlegen. Das funktionierte bei mir nicht.
Außerdem drauf achten, dass beim Eintrag TXT vorneweg und zum Schluss ein einfaches Anführungszeichen steht. Ich habe häufiger gefunden, dass man alles nach TXT in Klammern setzen soll, das funktionierte bei mir nicht.
Sobald man unbound neu startet, sieht man schnell ob ein fehlerhafter Eintrag vorhanden ist, oder nicht, denn dann startet unbound einfach nicht mehr. Lässt sich aber alles wieder rückgängig machen. Im Notfall einfach die angelegte Datei löschen. Dann startet unbound auf jeden Fall.
Die ganzen Einträge zum Drucker bekommt man wie in diesem bereits vorher aufgeführten Tutorial beschrieben:
https://www.synology-forum.de/threads/dns-sd-oder-wie-zeigt-dns-den-ios-geraeten-den-drucker-aus-anderem-subnetz.102150/
Das Ganze ist eigentlich sehr einfach wenn man weiß wie es geht. Der Drucker muss nur Airprint fähig sein. Mein Drucker ist noch Mopria zertifiziert. Darum funktioniert das Mopria-Plugin unter Android. Aber das steht ja in den Angaben zum Drucker.
So, mein Problem ist nun gelöst.
Nochmals vielen Dank für die Hilfe und ich setze den Thread nun damit auch auf gelöst. :-)