macOS 上主机名是如何分配的?

macOS 上主机名是如何分配的?

我正在使用一些安装在 Azure VM 上的应用软件。我有一台 MacBook 笔记本电脑,我用它来连接 Azure VM,使用 Microsoft 的 Mac 版远程桌面客户端软件。

Windows Azure VM 上安装的软件是专有的(由第三方公司开发和授权),并且仅与 Windows 兼容(因此不能在 MacBook 上本地运行)。我选择了 Azure 路线(而不是 Bootcamp 或 Parallels),因为我可以利用云模型 - 无需担心操作系统许可证成本、更新、维护,我也可以在不需要时将其关闭(以节省能源和成本)。

该许可证仅适用于一名用户和一台机器,这对我来说没问题。据我所知,该软件的许可算法采用已安装机器(即 Azure 机器)的网络主机名以及任何远程连接客户端(即我的 MacBook)的主机名,将两个主机名连接在一起,应用某种算法(可能是某种单向哈希),并将其记录为 HostID。每次登录时都会重复相同的算法,并与最初记录的 HostID 进行比较(从而防止其他人远程连接和使用该软件)。

我的问题是,我的 MacBook 的主机名似乎是可变的。有时是“mymacbook”,有时是“mymacbook.local”。如果我连接到 Azure 服务器,我想我可以通过转到任务管理器 > 用户 [选项卡] > 客户端名称 [列 - 需要通过右键单击标题并选择列来添加] 来查看我的本地主机名。我的客户端主机名的多变性导致许可失败,因为它与第一次安装时不完全相同。

我做了一些研究 - 如果我理解正确的话,主机名是由我的本地路由器分配给我的 MacBook 的,因为我使用的是 DHCP?此外,Apple Bonjour(Apple 的 mDNS 实现)会导致 .local 附加到主机名末尾(例如,当我的 MacBook 连接到其他设备或处于其他设备范围内时)?这是对的,还是我找错了方向!?只是想弄清楚我是否可以控制我的 MacBook 的主机名,然后再回信给软件公司,告诉他们他们的许可算法不兼容。

提前感谢任何帮助、建议或指点。

附言https://en.wikipedia.org/wiki/.local

答案1

macOS 尝试了多种方法来确定应该使用哪个主机名,并选择第一个看起来可行的主机名(这里是它尝试的事物的列表)。通常,它要么通过其 IP 地址的反向 DNS 查找找到一个名称(例如“mymacbook”),要么回退到使用其 Bonjour 名称(例如“mymacbook.local”)。因此,您的 Mac 获得的主机名将取决于它连接到哪个网络、该网络及其 DNS 的设置方式等。

如果您想要一个一致的主机名,您可以将其设置在列表中优先级较高的位置,这样它就会在尝试探测网络以找出应该使用的名称之前始终找到该名称(并使用它)。实现此目的的标准方法是在系统配置数据库中,使用:

sudo scutil --set HostName your.hostname.here

相关内容