如何以简单的方式在网络中发现设备的 IP?

pep*_*ico 5 networkmanager avahi network-interface

在我工作的初创公司,我们正在设置一个用于图像捕获和分析的设备。这是一个带有摄像头的盒子,嵌入了 Ubuntu Linux,假设我们不想将显示器连接到此设备进行配置。

有些人提出了在通过网线直接将设备连接到笔记本电脑时使用配置网页的解决方案,就像使用路由器或调制解调器一样,通过访问众所周知的 IP。

这听起来像是一个解决方案,但事实是该设备不是路由器,正如我所见,这是一个完全不同的上下文,该设备不会将地址委派给笔记本(使其成为路由器网络的一部分,它可以有一个众所周知的地址),因为它不是路由器。

所以我现在正在寻找一种类似于配置路由器体验的解决方案,但这不是路由器,它是用于我应该能够从众所周知的地址访问的设备。为此,我对 zeroconf/APIPA 进行了一些研究,但从 zeroconf RFC 3927 中,IP 地址必须是“使用伪随机数生成器,其均匀分布在 169.254.1.0 到 169.254.254.255 范围内”生成的.

我认为随机 IP 解决方案可能仍然有效,即使它不是一个众所周知的地址,以防万一有任何方法可以发现该设备拥有哪个 IP。

除此之外,这个设备应该使用 NetworkManager 来处理通过它设置的许多接口的连接。

所以,总结一下问题情况:

  • 设备必须通过本地网络进行配置。
  • 此设备已开启并使用网络管理器处理通过多个接口的连接,假设一个接口连接出现故障,它将选择另一个接口。
  • 我们正在考虑使用 eth0 别名来让 eth0 由网络管理器处理(在其他接口的上下文中)以及通过非托管(由网络管理器)别名进行固定 IP 访问。不确定这是否可能。
  • 这都是关于设备发现的,我也建议使用 nmap 来访问设备,但它有两个缺点:在大型网络上扫描速度很慢,而且不是简单的网页访问,必须构建使用 nmap 的客户端并用于执行以下操作发现。
  • 如果没有办法在众所周知的 IP 中进行简单访问,那么使用随机 IP 也是一种解决方案,因为可以像网络中的打印机或类似的东西一样发现设备。
  • 可以假设解决方案可以是通过网线配置直接连接到笔记本的设备并在设备的配置网页中获取访问权限的解决方案,也可以是笔记本连接到设备所在本地网络的解决方案也已连接,并且能够访问在网络中发现它的设备或通过替代的、外来的和固定的地址访问它。请注意,访问本地网络路由器或使用 nmap/arp 扫描不是一种选择。

应该研究什么问题来解决这个问题?人们对此是否有通用的方法?

根据我的经验,我记得配置我的设备,但没有一个适合问题:

  • 路由器:在众所周知的地址提供一个易于访问的配置网页,但它是路由器,它是网关,它将委派我自己的地址。
  • Cubox-i:我有这些设备之一,我必须在我的网络中使用 nmap 发现它并访问它的 ssh。
  • 打印机:我从来没有拥有过,所以我不知道它的设备发现/配置是如何工作的,但之前在网络上使用过它们,它们通常列在 Windows 机器的设备设置中。我还得看看“Avahi”、“UPnP”、“Zeroconf”等我从未接触过的领域中的名字。也许这是适合这种情况的例子。

如果有一个简单的工具可以在我的 Arch Linux 上运行,并让我的 Android 或 Windows 笔记本等其他设备发现它的 IP,我想知道。我也考虑过广播,但我不确定这是否适用于所有 LAN,因为广播可能会被阻止或不可靠(对此不确定)。

bah*_*mat 5

最好的方法是使用avahiwhich 实现多播 DNS(这就是 Apple 所说的 Bonjour)。

我会禁用网络管理器并在/etc/network/interfaces. 该interfaces文件支持该ipv4ll方法,该方法使用 avahi-autoipd 配置具有 IPv4 链路层地址(169.254.0.0/16 系列)的接口。

接下来,在 avahi 中设置一个服务,以确保主机通过 bonjour 进行广告并将 mDNS 名称解析添加到/etc/nsswitch.conf.

如果您的系统的其余部分配置为解析 mDNS 名称,它应该都能像魔术一样工作。