DNS-SD oder wie zeigt DNS den iOS Geräten den Drucker aus anderem Subnetz

Status
Für weitere Antworten geschlossen.

Tomy

Benutzer
Mitglied seit
22. Feb 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Das Problem:
Ich habe einen managed Switch welcher die diversen VLAN verwaltet und auch das Routing übernimmt. Nur Verkehr welcher der Switch nicht selber routen kann, geht an die Firewall für das weitere Routing.
Die iOS Geräte hängen in einem eignen VLAN. Wäre der AirPrint/Bonjour Drucker im gleichen VLAN, würde dieser automatisch erkannt. Aber als Broadcast wird es nicht geroutet und bleibt innerhalb des eignen Subnetztes. Da dies jedoch nicht der Fall ist, hatte das bei mir nicht funktioniert. Die Firewall (pfsense) hätte zwar eine Lösung, da diese aber weder das VLAN vom Drucker noch das VLAN von den iOS Geräten explizit kennt, war dies auch keine Lösung.

Nach etwas Recherche im Internet und vielen Stunden Rumprobieren, habe ich ein funktionierende Lösung gefunden.

Hintergrund:
Eigentlich steht alles hier: http://www.dns-sd.org/ServerStaticSetup.html
Die Clients versuchen beim DNS welcher via DHCP mitgeteilt wurde nachzufragen, ob dieser auch dns-sd Anfragen beantwortert. Die wird mit der PTR Query lb._dns-sd._udp.<such domäne> gemacht. Die Antwort ist ein Name des DNS welcher diese Anfragen beantwortet. Einziger Nachteil, der Drucker darf seinen Namen nicht ändern.

Lösung:
Damit ich die Anfragen mit dem DNS auf meiner DS beantworten konnte, habe ich eine weitere Sub-Domäne (master) bonjour.lan.example.com erstellt. Müsste aber auch innerhalb einer bestehenden funktionieren. Dies habe ich noch mit dem Webclient gemacht. Danach geht es mit via SSH und Console weiter. Die Dateien befinden sich (bei mir) unter /volume1/@appstore/DNSServer/named/etc/zone.
Im /master Ordner ist die Zonen-Datei und im /data Ordner. Bearbeiten muss man die Zonen-Datei

Rich (BBCode):
$ORIGIN bonjour.lan.example.com.
$TTL 86400
bonjour.lan.example.com. IN SOA ns.bonjour.lan.example.com. mail.bonjour.lan.example.com. (
        2019060901 ; serial YYYYMMTTNN  (NN version in the day)
        180        ; refresh
        180        ; retry
        1209600    ; expiry
        10800      ; minimum
)
bonjour.lan.example.com.                          NS      ns.bonjour.lan.example.com.
ns.bonjour.lan.example.com.                       A       192.168.1.99
pr01.bonjour.lan.example.com.                     A       192.168.2.199

b._dns-sd._udp                                       PTR     @
lb._dns-sd._udp                                      PTR     @

_ipp._tcp                                            PTR     HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp
_universal._sub._ipp._tcp                            PTR     HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp SRV     0 0 631 pr01.bonjour.lan.example.com.

HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp TXT     (
    "txtvers=1"
    "qtotal=1"
    "pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf"
    "rp=ipp/print"
    "PaperMax=<legal-A4"
    "kind=document,envelope,photo"
    "URF=CP1,MT1-2-8-9-10-11,OB9,OFU0,PQ3-4-5,RS300-600,SRGB24,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,DM3,IS1-2,V1.3"
    "ty=HP Officejet Pro 8620"
    "product=(HP Officejet Pro 8620)"
    "usb_MFG=HP"
    "usb_MDL=HP Officejet Pro 8620"
    "priority=20"
    "mac=xx:xx:xx:xx:xx:xx"
    "adminurl=http://pr01.bonjour.lan.example.com./#hId-pgAirPrint"
    "note="
    "Fax=F"
    "UUID=1c852a4d-b800-1f08-abcd-fc15b4A789E5"
    "Color=T"
    "Duplex=T"
    "Scan=T"
)

Die Details für die PTR und TXT Records hierzu bekommt man (unter Windows) wie folgt:
1. Von Apple den Bonjour SDK runterladen und installieren
2. Falls nötig den Bonjour Service manuell starten (bei mir unter Win10 musste ich den Service erst starten)
3. In einem Command-Fenster "dns-sd -Z _ipp._tcp,_universal" ausführen dieser gibt z.B. folgendes Ergebnis
Wichtig: Der PC wo dns-sd ausgeführt wird, muss den Drucker natürlich sehen können - d.h. im gleichen Subnetz sein!
Rich (BBCode):
Browsing for _ipp._tcp,_universal

; To direct clients to browse a different domain, substitute that domain in place of '@'
lb._dns-sd._udp                                 PTR     @

; In the list of services below, the SRV records will typically reference dot-local Multicast DNS names.
; When transferring this zone file data to your unicast DNS server, you'll need to replace those dot-local
; names with the correct fully-qualified (unicast) domain name of the target host offering the service.

_ipp._tcp                                       PTR     HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp SRV     0 0 631 HPFC15B4A789E5.local. ; Replace with unicast FQDN of target host
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp TXT     "txtvers=1" "qtotal=1" "pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf" "rp=ipp/print" "PaperMax=<legal-A4" "kind=document,envelope,photo" "URF=CP1,MT1-2-8-9-10-11,OB9,OFU0,PQ3-4-5,RS300-600,SRGB24,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,DM3,IS1-2,V1.3" "ty=HP Officejet Pro 8620" "product=(HP Officejet Pro 8620)" "usb_MFG=HP" "usb_MDL=HP Officejet Pro 8620" "priority=20" "mac=xx:xx:xx:xx:xx:xx" "adminurl=http://HPFC15B4A789E5.local./#hId-pgAirPrint" "note=" "Fax=F" "UUID=1c852a4d-b800-1f08-abcd-fc15b4A789E5" "Color=T" "Duplex=T" "Scan=T"

Eigentlich kann man diese Information einfach in die Zonen-Datei einfügen. Damit es aber wirklich funktioniert, braucht es noch eine weitere Zeile:

Rich (BBCode):
_universal._sub._ipp._tcp                            PTR     HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp

Den DNS muss man danach neu starten
Rich (BBCode):
sudo /volume1/@appstore/DNSServer/script/restart.sh

Wenn alles geklappt hat sieht man bei einem erneuten Aufruf dns-sd folgenden Output

Rich (BBCode):
Browsing for _ipp._tcp,_universal

; To direct clients to browse a different domain, substitute that domain in place of '@'
lb._dns-sd._udp                                 PTR     @

; In the list of services below, the SRV records will typically reference dot-local Multicast DNS names.
; When transferring this zone file data to your unicast DNS server, you'll need to replace those dot-local
; names with the correct fully-qualified (unicast) domain name of the target host offering the service.

_ipp._tcp                                       PTR     HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp SRV     0 0 631 pr01.bonjour.lan.example.com. ; Replace with unicast FQDN of target host
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp TXT     "txtvers=1" "qtotal=1" "pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf" "rp=ipp/print" "PaperMax=<legal-A4" "kind=document,envelope,photo" "URF=CP1,MT1-2-8-9-10-11,OB9,OFU0,PQ3-4-5,RS300-600,SRGB24,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,DM3,IS1-2,V1.3" "ty=HP Officejet Pro 8620" "product=(HP Officejet Pro 8620)" "usb_MFG=HP" "usb_MDL=HP Officejet Pro 8620" "priority=20" "mac=xx:xx:xx:xx:xx:xx" "adminurl=http://pr01.bonjour.lan.example.com./#hId-pgAirPrint" "note=" "Fax=F" "UUID=1c852a4d-b800-1f08-abcd-fc15b4A789E5" "Color=T" "Duplex=T" "Scan=T"

_ipp._tcp                                       PTR     HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp SRV     0 0 631 HPFC15B4A789E5.local. ; Replace with unicast FQDN of target host
HP\032Officejet\032Pro\0328620\032[A789E5]._ipp._tcp TXT     "txtvers=1" "qtotal=1" "pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf" "rp=ipp/print" "PaperMax=<legal-A4" "kind=document,envelope,photo" "URF=CP1,MT1-2-8-9-10-11,OB9,OFU0,PQ3-4-5,RS300-600,SRGB24,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,DM3,IS1-2,V1.3" "ty=HP Officejet Pro 8620" "product=(HP Officejet Pro 8620)" "usb_MFG=HP" "usb_MDL=HP Officejet Pro 8620" "priority=20" "mac=xx:xx:xx:xx:xx:xx" "adminurl=http://HPFC15B4A789E5.local./#hId-pgAirPrint" "note=" "Fax=F" "UUID=1c852a4d-b800-1f08-abcd-fc15b4A789E5" "Color=T" "Duplex=T" "Scan=T"

Jetzt muss nur noch bei der Such-Domäne (diese wird vom DHCP ebenfalls an den Client mitgeteilt - in meinem Beispiel also "lan.example.com") die Anfragen für b._dns-sd._udp und lb._dns-sd._udp mittels PTR Eintrag in der Zone (hier im Beispiel lan01.example.com) eingefügt werden

Rich (BBCode):
b._dns-sd                   IN  PTR             bonjour.lan.example.com.
lb._dns-sd                  IN  PTR             bonjour.lan.example.com.
b._dns-sd._udp              IN  PTR             bonjour.lan.example.com.
lb._dns-sd._udp             IN  PTR             bonjour.lan.example.com.

Wahrscheinlich braucht es die beiden ersten beiden Einträge nicht. Müsste ich noch ausprobieren. Sie haben bisher auch nicht geschadet.

Und dann sollte das iPhone oder der iPad beim Drucker Dialog den Drucker wieder anzeigen.
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Das ist ja cool, danke!
 

Tomy

Benutzer
Mitglied seit
22. Feb 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Kleiner Nachsatz - die Auflösung der eigentlichen Drucker-Adresse ist natürlich eleganter, wenn der Eintrag pr01.bonjour.lan.example.com durch einen Eintrag in der Zone lan.example.com ersetzt wird. Einfach in der bonjour Zone den A-Record entfernen und beim SRV-Record den fqdn entsprechend anpassen. In der lan.example.com Zone dann den A-Record für pr01 (z.B. pr01.example.com. A 192.168.2.199) nicht vergessen.

Ich wollte im Beispiel nur alles zusammenhängen, damit es besser verständlich ist.

Bitte auch die Punkte bei den Namen beachten. Wenn es keinen Punkt am Ende hat, wird der Zonen-Name angehängt. Hat es einen Punkt, ist der Name bereits vollständig. Dies kann häufig zu Fehlern führen. Analog das @-Zeichen. Dieses wird mit dem Zonen-Name ersetzt.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat