Gelöst: HP Drucker mit DNS-SD

Started by Schnuffel2008, February 06, 2025, 05:33:12 PM

Previous topic - Next topic
February 06, 2025, 05:33:12 PM Last Edit: February 09, 2025, 02:43:05 PM by Schnuffel2008
Hallo,

nachdem mir vor kurzem hier schon so super geholfen wurde, hoffe ich erneut auf Eure Hilfe.
Kurz zu meinem Problem. Ich habe ein Netz mit mehreren VLANs eingerichtet und das funktioniert auch sehr gut.
Mein Problem ist wieder einmal der Drucker. Eigentlich hätte ich den gerne in einem eigenen VLAN, aber da wir zu Hause
Menschen haben, die geschäftlich mit IPADs und IPhones arbeiten müssen, möchte ich diese über AirPrint ansprechen können.
Derzeit habe ich den Drucker in dem "Apple-Geschäfts-VLAN", aber so können die anderen Menschen nicht so gut damit arbeiten.
Ich habe jetzt schon alles versucht. Mit mDNS Repeater und udpbroadcast habe ich alles mögliche versucht. Maanchmal finden die dämlichen HP-APPS bei den Iphones und bei Android den Drucker. Dann, obwohl ich nichts an der Konfiguration ändere wieder nicht.
Das hat mich völlig zur Verzweiflung gebracht. Dann habe ich einen externen Rechner mit AVAHI aufgesetzt. Das habe ich so weit gebracht, dass der mir den Drucker anzeigt, aber irgendwie bekomme ich es nicht auf die andern VLANS. Am Besten ging es noch mit CUPS und AVAHI. Aber irgendwie befriedigt mich das auch nicht.
Zuletzt habe ich jetzt diese Möglichkeit mit DNS-SD gefunden. Nach viel Recherche kam ich auf diese Seite: https://www.reddit.com/r/PFSENSE/comments/gdi6h1/dnssd_with_pfsense_dns_resolver_unbound/?tl=de&rdt=60251
Das hörte sich ganz vielversprechend an, aber als nicht Profi ist das schon schwierig zu verstehen.
Also ich habe mir Wireshark besorgt und habe den entsprechenden MDNS-Broadcast aufgezeichnet.
Aber jetzt komme ich nicht mehr weiter.
Die erste Frage: Ich habe bekomme keine Domain angezeigt. Funktioniert das ganze nur, wenn ich mir eine Domain besorge und den Drucker so wie für DynDNS irgendwie per DNS erreichbar mache? (wie gesagt bin Laie, also nicht schlagen, wenn das doof klingt).
Ich habe jetzt mehrere Einträge als MDNS Response gefunden. Ein A Eintrag mit der IP Adresse und dann mehrere SRV Einträge und dann mehrere NSEC Einträge. Ich habe nun versucht diese Einträge entsprechend an das Schema aus dem Post anzupassen und das Ganze sieht gar nicht mal so schlecht aus nur wie gesagt ohne Domain irgendwas.com. Dann habe ich versucht das in die unbound.conf einzufügen. Das funktioniert aber nicht. Nachdem ich weiter recherchiert habe, habe ich eine hp.conf in usr/... angelegt, so wie das bei unbound nun vorgegeben ist. Dann liest er die Datei scheinbar auch, aber unbound schaltet danach einfach ab, wahrscheinlich weil die Config völlig falsch ist.
Das Ganze wäre mir so wichtig, dass ich auch gerne weiter bastele, aber vielleicht hat ein Profi einfach den Tipp, ob das überhaupt etwas bringen könnte oder ob ich mich einfach damit abfinden muss, dass das so nicht geht.
Zum Schluss noch. Mir ist aufgefallen, dass die Einträge, die derzeit in unbound eingetragen sind von der Struktur anders aussehen, als die in diesem Link. Hat sich da etwas geändert, oder ist das richtig so und es ist nur weil die Art der Einträge anders ist?
Bei Interesse kann ich gerne die Config und die gefunden Einträge zeigen.
Ich glaube nicht, dass das kompromittierend wäre, da ich den Drucker ja nur intern erreichbar machen möchte.

Hoffentlich kann mir jemand helfen

Wie hast Du denn den Dienst und die Firewallregeln für die beteiligten Interfaces konfiguriert?
OPNsense 24.7.11_2-amd64

February 08, 2025, 06:40:43 AM #2 Last Edit: February 08, 2025, 06:57:05 AM by Schnuffel2008
Hallo Schnipp,

meinst Du jetzt wie ich es vorher mit mDNS-Repeater versucht habe oder wie ich das jetzt mit unbound versucht habe?
Wie gesagt, mir fehlt ja leider sehr viel Grundwissen und die Pros hier werden mich wegen meiner Naivitäät wahrscheinlich auslachen, aber von dem angeführten Beitrag motiviert habe ich folgende Einträge versucht in eine hp.conf in unbound einzutragen:
local-data: "HPOfficeJet8020._ipps._tcp.local 120 IN SRV 0 0 631 HPxxxxxxxxx.local"
local-data: "HPOfficeJet8020._ipp._tcp.local 120 IN SRV 0 0 631 HPxxxxxxxxx.local"
local-data: "HPOfficeJet8020._pdl-datastream._tcp.local 120 IN SRV 0 0 9100 HPxxxxxxxx.local"
local-data: "HPxxxxxxxxxxxx.local 120 IN A 10.255.99.100"
local-data: "HPxxxxxxxxxxxx.local 120 IN NSEC HPxxxxxxxxx.local"
local-data: "HPOfficeJet8020._ipps._tcp.local 120 IN NSEC HPOfficeJet8020._ipps._tcp.local"
local-data: "HPOfficeJet8020._ipp._tcp.local 120 IN NSEC HPOfficeJet8020._ipp._tcp.local"
local-data: "HPOfficeJet8020._pdl-datastream._tcp.local 120 IN NSEC HPOfficeJet8020._pdl-datastream._tcp.local"

Die xxxxxxxxxx stehen f+r die MAC-Adresse, die mir der HP-Drucker als Bonjour-Domänenname vorgibt.
Ich hatte das Ganze so verstanden, dass die Iphones etc. beim Suchen nach airprint-Druckern zunächst eine DNS-Abfrage machen und dass die Einträge wie sie in dem geposteten Beitrag stehen, diese praktisch über unbound direkt zum drucker leiten und dabei dann auch über den a-record die IP weitergeben, so dass das dann immer funktioniert, ohne MDNS-Repeater.
Aber wie gesagt, das scheint so einfach ja leider nicht zu sein. Es gibt nur immer wieder den Hinweis, dass man sowieso von dem Multicast wegsoll und das Ganze per Unicast machen kann, da sind sich so viele einig, aber leider gibt es nirgendwo eine Anleitung wie man das macht. Es ist aber doch scheinbar möglich nur Arbeit. Also die scheue ich ja nicht, aber außer das ich ein wenig logisch denken kann, fehlen mir zu viele Grundlagen. Ich hatte gehofft, dass die Könner mir hier die entscheidenden Tipps geben können. Aber es ist halt so viel unklar.
Mir ist z.B. aufgefallen, dass die Einträge in dem Artikel die oben genannte Struktur haben, mit dem PRT Eintrag in der Mitte. Wenn ich mir die aktuellen Einträge in unbound anschaue, dann sehen die z.B. so aus "local-data-ptr: "ip meine öffentliche Domain".
Ich habe aber beim Auslesen mit Wireshark für den Drucker keine öffentliche Domain und keinen PTR Eintrag gefunden. Stattdessen nur die SRV Einträge. Es funktioniert aber dennoch mit dem finden im lokalen Netz mit den Iphones. Da ich die Drucker nur local nutze ist das auch nicht so ein Problem dache ich. Müsste ich als für die SRV Einträge die ich gefunden habe nun "local-data-srv schreiben?
Wie gesagt, irgendwie scheint es ja einen Weg zu geben, oder sagt jemand, das funktioniert alles nicht, dann brauche ich mich damit nicht zu beschäftigen und muss mit dem Problem leben.

Ach so und noch zu den Konfigurationsversuchen mit MDNS-Repeater oder udp Broad... Das beste was ich dort hinbekommen hatte, war dass mir der Drucker unter Windows angezeigt wurde. Unter Android gibt es ein allgemeines Drucker-Plugin. Dor wurde mir der Drucker manchmal angezeigt und manchmal nicht aber immer erst nach einer Zeit und nicht wie wenn ich mich im gleichen Netz befinde nach einer Sekunde. Hier kann ich auch keine Infos zu Tintenständen etc. abrufen. Und es funktionierte auch nie mit dem HP-Druck-Plugin, das nur nach manueller Eingabe der IP zuverlässig alles macht auch Tintenstände usw. Aber bei den Iphones und IPads kann ich ja leider keine IP eingeben. Als Krücke kann man zwar ein HP-Tool installieren, aber das wäre ja alles unnötig wenn es so wie in dem Artikel beschrieben funktioniert.

Ich meine die Konfiguration des MDNS-Dienstes und die zugehörigen Firewallregeln auf den Interfaces.

Ich kenne mich mit Apple wenig aus und weiß daher nicht, auf welche Art und Weise die Geräte die Erkennung von Diensten durchführen. DNS-SD und MDNS-SD verfolgen zwar das gleiche Ziel, sind aber nicht gegeneinander austauschbar. Falls die Geräte beispielsweise MDNS (Multicast-DNS) verwenden, musst Du auch den MDNS-Repeater verwenden.

Sofern klassisches Unicast-DNS für die Diensteerkennung zum Einsatz kommt (was ich nicht glaube, da Du zuvor ,,.local" als TLD (Top-Level Domain) referenziert hattest), wird es mit Unbound in vielen Fällen nicht funktionieren, da hierfür grundsätzlich weitere Ressource-Record-Typen erforderlich sind, als jene, die Unbound anbietet.
OPNsense 24.7.11_2-amd64

February 08, 2025, 03:51:33 PM #4 Last Edit: February 08, 2025, 04:02:25 PM by Schnuffel2008
Wie gesagt mit den Repeatern bin ich echt verzweifelt.
Ich muss wahrscheinlich noch ein wenig mehr erklären wie mein Netz aufgebaut ist.
Also als Wifi-APs kommen APs von Ubiquiti zum Einsatz.
Ich habe mehrere VLANS angelegt, einmal Gast (99), einmal IoT (50) und einmal alle anderen Nutzer (10).
Dazu noch Lan (1) in dem ich die Sense, meine Switche, die APs und einen Proxmox-Server habe. Darauf lief ein Cups-Server (den ich ja gerne los werden möchte), der Unifi-Controller (alles im 1er-Netz) und homeassistant (über zweite Netzwerkkarte im 50er Netz).
Die Ubis habe ich denke ich halbwegs richtig konfiguriert (Multicast zugelassen, dann haben die in der neuesten Firmware einiges zu Multicast getan, wo man explizit einen Multicast Repeater einrichten kann, etc).
Ich glaube auch, dass das nicht das Problem ist, da es ja ab und zu gut funktioniert mit dem Erkennen der Drucker und dann ohne das ich etwas an den Configs ändere, dann wieder gar nicht. Und selbst wenn ich alles nur über Kabel verbinde, dann bleibt das Problem gleich. Wenn es die APs wären, sollte es ja dann funktionieren. Also gehe ich davon aus, dass es eher an den Repeatern und der OPNsense liegt.
So, jetzt wie habe ich die OPNsense konfiguriert.
Wahlweise entweder MDNS-Repeater oder UDP Broadcast.
Wenn Repeater, dann kann man ja nicht so viel einstellen: Plugin enable, Listen interfaces: Lan, Vlan 10, 99, Carp failover: nicht angewählt, Blocklist: leer
wenn udp Proxy: enabled, relay port 5353, interfaces vlan 10, 20, 99, broadcast adress: 224.0.0.251, source adress (alles versucht: empty, 1.1.1.1, 1.1.1.2), instance Id: 1; USE TTL: getested sowohl unchecked als auch checked.
Firewall Regeln:
In vlan 10 und 20 in reihenfolge von oben nach unten pass icmp und dns, jeweils block LAN, Netz 20 block 10
, enable alles jeweils auf eigenem Interface. Im 99er Netz anstatt block LAN block alle privaten Netze außer 99.
Den Drucker habe ich im 99er Netz.
Für Multicast zustzlich folgende Regeln:
jede Schnittstelle: Allow UDP auf der jeweiligen Schnittstelle, jeder Port, Destination 224.0.0.251/24, Port 5353
im 99er Netz zusätzlich: Allow TCP/UDP Entweder von any oder nur von Drucker IP ins LAN und in VLAN10 Druckerports (631,9000).
Ich habe auch schon versucht jegliche Blockade herauszunehmen und stattdessen erlaube any im Gastnetz. Auch das macht keinen Unterschied.
Wie sieht das Ganze aus mit den verschiedenen Betriebssystemen:
Windows: Nachdem ich zuletzt die AP-Einstellungen optimiert hatte funktioniert hier die Erkennung aus jedem Netz zuverlässig.
Android: Standard Druck Plugin: im 99er-Netz Erkennung innerhalb von einer Sekunde. In den anderen Netzen scheint es so zu sein, dass manchmal der Drucker innerhalb von 5 Sekunden erkannt wird. Dann kann man auch problemlos drucken. Manchmal nicht, auch nach Minuten nicht. Bei immer gleicher Konfiguration. Ich vermute einmal, dass der Drucker eine Sleep-Funktion hat. Diese kann man nicht abschalten (zumindest ich nicht. Funtkitioniert nur die Zeit bis zum einschlafen auf bis zu 15min hochzusetzen. Es gibt jedoch keine Funtkion zum kompletten abschalten). Im 99er Netz scheint der Drucker immer aufgeweckt zu werden (ist meine These). Das funktioniert aus den anderen Netzen nicht.
Eigenes HP-Plugin: Hier funtkioniert wie gesagt alles im 99er Netz, Erkennung innerhalb einer Sekunde, Anzeige von Tintenstand etc. Aus den anderen Netzen keinerlei Erkennen. Es muss also scheinbar noch etwas HP spezifisches geben, was über die anderen Netze nicht mitgesendet wird.
IOS-Iphone und IPAD : kein Erkennen des Druckers in den anderen Netzen. Erkennen im 99er Netz innerhalb einer Sekunde.
Ich habe schon echt alles versucht und wäre wie gesagt sehr dankbar, wenn es irgendwie eine Lösung gebe.
Achso und mit CUPS und AVAHI funktionert es deutlich besser auch über die Netze hinweg. Da habe ich aber häufig die Drucker mehrfach angezeigt und es gibt dadurch ebenfalls Probleme. Aber prinzipiell funktioniert es am besten. Befriedigend ist das aber alles nicht.
Ach so und bevor ich es vergesse. Ich habe über Liveview in der Firewall gesucht und fand leider keinerlei Blocks die angezeigt wurden. Weder zur OP des Druckers noch zur OP meines Computers und auch nicht für Port 5353.
Daher nach all dem mein Versuch mit dem unicast. Weil ich halt mehrfach gelesen hatte, das es so gehen soll und dieser eine Post scheint das ja auch zu bestätigen. Nur wenn ja, dann halt wie?
Funktioniert das mit den Repeatern denn bei den anderen wirklich so, dass es keinerlei Probleme mit IOS gibt?

Wifi und Multicast kann in einigen Fällen problematisch/fehleranfällig sein. Daher ist es sinnvoll, für Debugging-Zwecke zunächst nur über kabelgebundene Netzwerke zu testen. Bezüglich der alleinigen MDNS-Diensteerkennung benötigst Du in der Opnsense folgendes:

  • Aktivierung des MDNS-Repeaters mit den betroffenen Schnittstellen
  • Erstellung einer Firewall-Regel in jedem betroffenen Netz mit "Allow: IPv4/UDP, Quelle: Quellnetz:*, Ziel:224.0.0.251/32:5353

Ich habe es bei mir getestet, und der Avahi-Browser unter Linux findet sowohl meinen Drucker als auch den AVR. Alle weiteren Firewallregeln sind individuell und basieren dann auf den MDNS-Ergebnisse (insbesondere können durchaus auch dynamische Zielports auftreten, dies gilt es bei Bedarf zu berücksichtigen).

Nach der Konfiguration, welche Ergebnisse liefern die folgenden Kommandozeilenbefehle auf der Opnsense?

root@host:~ # pfctl -s rules | grep '224.0.0.251'
...

root@host:~ # ps aux | grep mdns
...

Falls Du einen Linux-Rechner mit installiertem Avahi besitzt, kannst Du auch noch folgendes testen (andere Betriebssysteme bieten ggf. vergleichbares)

user@client:~$ avahi-browse -avr
OPNsense 24.7.11_2-amd64

Blöde Frage: weshalb ist der Drucker nicht im selben Netzwerk wie die Geräte, die ihn benutzen?
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Hallo,

Patrick zu der Frage warum der Drucker nicht im selben Netz ist wie die Geräte die ihn benutzen, hatte ich ja gesagt, dass ich die Netze seperiert habe in ein Geschäftsnetz mit dem Drucker und in ein Netz für IoT und eins für die übrigen Nutzer und das das Problem halt die IOS-Geräte sind die sowohl geschäftlich als auch privat genutzt werden. Der Drucker steht im Geschäftsnetz und soll halt auch privat genutzt werden, aber nur der Drucker. Das funktioniert so nicht.
Danke nochmals für Eure Hife insbesondere Schnipp. Ich habe es jetzt doch noch mit Avahi hinbekommen. Habe mir einen Debianrechner auf Proxmox aufgesetzt. Darauf habe ich dann nur HPLIP und Avahi installiert. Dann virtuelle Netzwerkkarten mit entsprechenden VLANS in jedes Netz und das was ich vorher schon einmal versucht habe, funktionierte nun auf Anhieb. Ich kann jetzt wirklich aus jedem Netz den Drucker sofort sehen und drucken, also bin ich wunschlos zufrieden. Ich werde daher den Ansatz wie ich es oben versucht hatte in Anlehnung an den von mir zitierten Link nicht mehr weiter verfolgen, da es doch meine Fähigkeiten bei weitem überschreitet. Vielleicht gibt es ja einmal irgendwie eine Anleitung ob und wie das funktionieren könnte, denn dann könnte man auf avahi und die Repeater ja scheinbar ganz verzichten (wenn ich das richtig verstehe).
Die Repeater Lösungen habe ich nun auch deinstalliert und hoffe es funktioniert jetzt in Zukunft weiterhin so gut wie bislang.
Schöne Zeit und liebe Grüße
 

Quote from: Patrick M. Hausen on February 09, 2025, 11:13:18 AMBlöde Frage: weshalb ist der Drucker nicht im selben Netzwerk wie die Geräte, die ihn benutzen?

Aufgrund veralteter und fehlerhafter Firmware können Netzwerkdrucker ein IT-Sicherheitsrisiko darstellen. Daher ist es besser, diese in ein eigenes VLAN zu stecken.
OPNsense 24.7.11_2-amd64