该问题基于一个简单的限制:
负责业务逻辑的服务器不与打印机连接在同一个网络中。打印机位于另一个网络中,不可能暴露公共 IP。
我目前设计的建筑是这样的这里。
这两个局域网代表橙子和蓝色的,并且有 VPN红色的连接两者。由于蓝色 LAN不可能要暴露公网IP,唯一的办法就是从服务器提供VPN服务。
通过此设置,服务器内运行的 Node.js 应用程序是否可能检测CUPS 打印机发布在蓝色/红色网络中?
我了解 CUPS 通过以下方式发布可用的打印机移动DNS,但仅限于它所连接的特定网络。因此,有可能这些包可能无法旅行从客户端 VPN 到实际服务器(由于标准 VPN 行为)。
我所尝试实现的目标有可能实现吗?我还有哪些其他选择?
更新
我发现了一些值得研究的方法:
- 使用 VXLAN 将两个网络连接为一个并通过网络进行多播
- 通过 OpenVPN 或 Wireguard 启用多播
- 在另一个接口上重复 mDNS 发送的包
- 使用 DNS-SD 创建代理服务记录
以下是一些有用的信息:
- https://www.reddit.com/r/WireGuard/comments/g80bxf/cant_get_zeroconfavahimdns_reflection_to_work/
- https://gist.github.com/pamolloy/f464c2b54af03c436491f42abf0bbff9
- https://superuser.com/questions/949140/repeating-mdns-bonjour-requests-from-eth0-through-a-tunnel-tun0
- https://github.com/monstrenyatko/docker-mdns-repeater
我认为答案在于其中之一或者其中几个的组合。