我正在尝试创建 DNS 记录,以便我们网络上的 Mac 可以通过 dns-sd 自动检测可用的打印机(由于我们的 WAN 环境,单独的广播不是一种选择)
如果我通过“IP->cups.server.name->/printers/queueName”手动“添加”CUPS IPP 队列,一切都会正常工作,但如果我添加适当的 PTR/SRV DNS 记录,它就不会
嗅探器显示 Mac 执行 _dns-sd._udp.XXXX 查找,找到 cups 服务器,执行 TXT 查找以获取队列详细信息,一切都很顺利。但是当我打印到这个新队列时,嗅探器显示它以“POST / HTTP”而不是“POST /printers/queueName”连接到 cups IPP 服务器 - 当然 cups 会响应“未找到打印机或类”。然后打印作业在 Mac 上暂停
“rp=printers/queueName”(不带前导“/”)肯定在 TXT 记录中,但看起来 Mac 只是忽略了它???
;; 答案部分:queueName._ipp._tcp.our.domain. 1800 IN TXT "\"txtvers=1\" \"qtotl=1\" \"URF=none\" \"product=(Generic PostScript Printer)\" \"ty=Generic PostScript Printer\" \"note=Jason Test\" \"transparent=t\" \"copies=t\" \"duplex=t\" \"color=t\" \"pdl=application/postscript\" \"rp=printers/queueName\""
知道我错过了什么吗?
答案1
我可以回答我自己的问题
问题在于我们使用 Microsoft DNS,因此在制作 dns-sd TXT 记录时必须小心谨慎。它们通常以以下格式报告
1800 IN TXT“txtvers=1”“qtotl=1”“URF=none”“product=(通用 PostScript 打印机)”“ty=通用 PostScript 打印机”“note=Jason Test”“transparent=t”“copies=t”“duplex=t”“color=t”“pdl=application/postscript”“rp=printers/queueName”
...但如果你看一下我上面的问题,你会发现它们充满了“\”字符 - 这搞砸了 Mac(实际上可能是任何客户端)
诀窍是使用 Microsoft DNS GUI 时,输入这些不带引号的多短语 TXT 记录,然后在位之间按回车键。即
txtvers=1
qtotl=1
product=(Generic PostScript Printer)
URF=none
一旦我更改了我们的记录,Mac 就会愉快地吞噬元数据,甚至没有提示我安装打印驱动程序就成功打印了。:-)