macOS Sierra (10.12.6) 主机名命令未附加“.local”

macOS Sierra (10.12.6) 主机名命令未附加“.local”

简而言之:

据我了解,该hostname命令有一个选项-f。从手册页:

-f 在打印名称中包含域信息。这是默认行为。

由于这是默认行为,当我的打印名称不包含域信息,而只是包含MY-COMPUTER-NAME.

一些附加信息:

我无法更改“共享”首选项中的“计算机名称”(如图所示,它呈灰色):

共享首选项显示计算机名称设置为 Hippotigris,并显示一条消息:“本地网络上的计算机可以访问您的计算机:LM-SJN-21001464

最初,我的“本地主机名”也设置为“Hippotigris”,但是当我注意到这个问题时,我将其更改为从命令中获得的内容hostname

共享首选项,本地主机名的输入字段设置为 LM-SJN-21001464,以“.local”结尾,显示为灰色

我发现本文标题为“从终端设置 Mac 主机名或计算机名称”,但我不确定这样做是否会解决我的问题或加剧问题。

我正在努力实现的目标:

我将 NodeJS 的内置dns.lookup函数与其内置os.hostname函数结合使用。我认为该hostname函数返回的内容与命令打印的内容相同hostname(这就是它当前正在执行的操作)。当我跑步时:

node -e "require('dns').lookup(require('os').hostname() + '.local', console.log)"

它工作正常并打印本地网络上我的机器的 IP 地址,但是当我运行时

node -e "require('dns').lookup(require('os').hostname(), console.log)"

它记录错误:getaddrinfo ENOTFOUND LM-SJN-21001464

我问过周围看来这个脚本.local对大多数人来说不起作用,所以我猜测它与我的机器配置有关。

答案1

感谢一些在推特上提供帮助我将“.local”添加到我的 DNS 设置中的搜索域中,这解决了我的核心问题,尽管hostname(and os.hostname) 仍然返回不附加“.local”的主机名。

所以这是我遇到的问题的答案,但不是我发布的问题,我仍然很想了解发生了什么以及我是否应该担心。

显示“搜索域”的 DNS 选项卡中的网络首选项包括“.local”

答案2

主机名是机器本身的名称。主机名后面的部分,即.localinhippotigris.local.kentcdodds.cominhippotrigris.kentcdodds.com就是所谓的域名

您永远不应该将域名添加到主机名本身。

正如评论中已经提到的,.local它是特殊的:它是组播DNS,它在本地 LAN 网段中进行多播名称解析。这与普通 DNS 名称解析的工作方式不同,并且被 Apple 广泛使用。

因此,当您require('dns').lookup()在节点中执行此操作时,它将使用正常的 DNS 机制进行查找。但是,您的主机名不会在您用作普通 DNS 服务器的任何服务器(无论是您的家庭路由器上的服务器,还是您的 ISP 的 DNS 服务器)中注册。因此你得不到答案。

如果您追加.local,node(或底层 MacOS 库)将改用 mDNS,这意味着它们可以找到您的主机名。

因此,这就是为什么您需要.local在某个位置附加,可以直接附加,也可以自动附加到搜索路径中,或者通过任何其他方式附加(例如,在 Linux 上,您可以将名称搜索配置为以任意顺序同时使用 DNS 和 mDNS)。

至于为什么您在显示的 GUI 窗口中输入的主机名 (Hippotigrisis) 与通过 mDNS 宣布的名称 (LM-SJN-21001464) 不同,我不确定(因为 Mac UI 没有给出任何提示)实际上正在发生) - 人们必须找出该对话框准确设置的信息以及另一个名称(看起来像序列号)的设置位置。命令行工具可能有助于搜索此内容。

答案3

哇,这个问题有点奇怪,因为这里发生了一些事情。

尽量不重复别人说过的话

...我假设您想要访问正在使用的 Node 应用程序的 mDNS 名称,因此您可以从 LAN 上的单独盒子查看该应用程序,并且更愿意使用 mDNS没有必须使用。当地的在地址名称中而不是使用 IPv4 地址,顺便说一下,webpack 等工具允许0.0.0.0在 webpack 配置文件中设置主机名,以访问 LAN 上的应用程序的开发服务器版本,即从单独的移动设备访问在 MacBook 上运行的本地运行的 React 应用程序。

进行几个 AOL 关键字搜索后,您在 macOS 系统首选项的共享窗格中引用的名称似乎也可以是网络BIOS名称,并且显然在某些时候 NETBIOS 名称不能超过 15 个字符不确定情况是否仍然如此,这就是为什么当我数数时,带有 LM... 的计算机名称正好是 15 个字符。

在这里黑暗中拍摄

相关内容