Linux 服务器的多播 (mDNS)

Linux 服务器的多播 (mDNS)

背景:

我在本地网络上运行 Linux 服务器,它既充当 Web 服务器,又充当中央通信服务器。此服务器与系统中的多个节点通信。节点初始化时,节点将其 IP 地址发送到中央通信服务器。但是,为了知道将此 IP 地址发送到何处,节点需要知道服务器的 IP 地址。为了解析服务器,我被引导使用 mDNS。

看来在服务器上安装 avahi 可以为 Linux 服务器启用多播。

sudo apt-get install avahi-daemon

然后可以将服务器的主机名更改为多播将解析服务器 IP 地址的位置

hostname.local

问题 1:

节点是否也必须安装 avahi-daemon 才能使该方案发挥作用?如果是这样,是否有办法绕过这个问题,或者以另一种方式为节点启用多播。我很犹豫,因为我不确定微控制器是否有能力安装这个守护进程,因为 ESP8226 被用作 WiFi 模块。(我确实知道 ESP8226 确实支持 mDNS,但我不知道具体是如何支持的)。

问题2:

如果用户尝试访问 Web 服务器上的页面,他们是否只需在浏览器中输入 mDNS 名称即可发出请求?或者他们还必须安装 avahi-daemon?如果是 Windows 计算机尝试访问该应用程序,我无法保证它们会内置此功能。同样,如果需要,有没有办法解决没有守护进程的问题?

更新:ESP8226 确实支持 mDNS,但是客户端 mDNS 并非内置。不过,这里有一个适用于 ESP8226 的客户端 mDNS 库:https://github.com/mrdunk/esp8266_mdns

答案1

问题 1:遗憾的是,您必须安装 avahi 或 bonjour (win/mac) 才能使用 mDNS。祝您为微控制器编译 avahi 顺利!我从未在 wifi 上使用过 mDNS,但这确实是非常正常的多播流量。

问题 2:您可以将 mDNS 名称用于 http 内容,avahi 将其与 DNS 完全集成。我实际上是用它来加载 NFS 共享。请记住,如果您使用 vhosts,请将 hostname.local 添加为 vhost 的别名或类似的东西。

答案2

如果这些控制器要进入企业网络,则“中央通信服务器”应该能够由现场 IT 控制(至少是静态 IP)。因此告诉他们您需要为“centralcommsserver”或任何您想要的内容设置 A 记录,然后让您的控制器查找 centralcommsserver.DNSSuffix

相关内容