![通过路由器进行多播 DNS \ 服务发现](https://linux22.com/image/1445738/%E9%80%9A%E8%BF%87%E8%B7%AF%E7%94%B1%E5%99%A8%E8%BF%9B%E8%A1%8C%E5%A4%9A%E6%92%AD%20DNS%20%5C%20%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0.png)
我正在使用 Apple 的 mDNSResponder。它在单个网络中工作。有没有办法让它工作,即使浏览服务的计算机和服务提供商的计算机之间有路由器?
我不擅长网络,但在我看来,多播数据包通常不会通过路由器。
因此,我想到两个可能的选择:
- 某些网络协议中可能有一些密钥强制路由器将多播数据包重新转换到其他网络。
- 您可以在路由器上安装一些程序来执行此操作(如果没有,是否可以编写一个?)。
答案1
有以下方法多播路由是的。目前首选的协议是私有信息协议,取代了旧的分布式虚拟机路由协议. 它甚至还得到了 GÉANT 等各种学术网络的支持。(例如,这是一篇关于通过 CUDN 进行多播。
(我自己也没有尝试过;我管理的网络上路由器缺乏支持。)
或者,IGMP 代理。它得到了更广泛的支持,设置起来也更简单……但另一方面,它是定向的(可能是为与 IPTV 一起使用而设计的)——不是进行正确的路由,而是必须将一个网络接口配置为“上游”(多播数据源),将其余接口配置为“下游”(被动接收者)。
所以可能适用于 mDNS 等点对点场景,但我不会浪费时间。
此外,一些 mDNS 实现使用 TTL=1,因此路由器无论如何都会丢弃它。(这是路由和 IGMP 代理的问题。)
所以你的第三个选择是mDNS 代理如果路由器运行带有 Avahi 的 Linux,您可以在以下位置找到“反射器”选项avahi-daemon.conf
:
[reflector]
enable-reflector=yes