【问题标题】:macOS terminal run Reverse DNS on LAN devices to get hostnamesmacOS 终端在 LAN 设备上运行反向 DNS 以获取主机名
【发布时间】:2019-02-13 11:19:17
【问题描述】:

我做了一些研究,但找不到解决方案,我开始认为这是不可能的。

我在终端中运行 arp -a,我想获取 LAN 设备的主机名。

host x.x.x.x 返回:

主机 x.x.x.x.in-addr.arpa。未找到:3(NXDOMAIN)

nslookup x.x.x.x 返回:

** 服务器找不到 x.x.x.x.in-addr.arpa: NXDOMAIN

有没有办法做到这一点?

【问题讨论】:

  • 局域网上是否有可以提供反向查询请求的 DNS 服务器?如果是这样,只需将其添加到 host 命令 (host x.x.x.x serverip),并可能在您的系统设置中使用它,以便所有内容(如 arp)都可以看到名称。如果没有,那么根据定义,就没有办法做到这一点。可能有其他方法可以在 LAN 上查找名称,但如果没有服务器,反向 DNS 将无法工作。
  • 谢谢你让我走上正轨,我找到了解决办法。

标签: macos terminal dns ip-address reverse-dns


【解决方案1】:

感谢@gordon-davisson 让我找到了一条正确的道路。

首先我得到网关 IP:route get default | grep gateway

然后对于我运行的每个 LAN 设备:host LAN_IP Gateway_IP

这会返回:

Using domain server:
Name: 192.168.x.x
Address: 192.168.x.x#x
Aliases: 

x.x.168.192.in-addr.arpa domain name pointer LAN-host-name.

我解析响应以获取最后显示的名称。

旁注:之后它仍然不显示带有arp -a 的 LAN 主机名。

【讨论】:

  • 好的,现在我很好奇为什么系统解析器没有使用该 DNS 服务器。听起来您拥有标准的一体化路由器-DHCPserver-DNSserver,在这种情况下,为什么不将自己作为 DNS 服务器使用呢?您可以在网络首选项(高级 -> DNS 选项卡)或more /etc/resolv.conf 中检查您实际使用的服务器,并查看 DHCP 服务通过ipconfig getpacket en0(或en1 或其他)分发的内容并查看“domain_name_server”行。
  • @GordonDavisson 我正在使用 Google DNS(8.8.8.8 和 8.8.4.4)。至于DHCP,domain_name_server是路由器的IP。
  • 我建议更改它——让您的 Mac 使用本地路由器作为其服务器,然后配置路由器以查询 Google DNS。这样,本地查找就可以在系统范围内工作,并且所有非本地的内容都会转发给 Google。
  • 这取决于您的网络设置。您可以使用networksetup 命令查看和更改它们,但使用“系统偏好设置”中的“网络”窗格确实要容易得多。实际上,我想第一个问题是您是使用路由器的 DHCP 服务提供的 DNS 服务器地址(在这种情况下,您应该弄清楚如何在路由器上修复它)还是在 Mac 的网络设置中覆盖它(其中如果你应该停止在那里覆盖它)。
【解决方案2】:

arp -a 默认在 linux 机器上执行反向 DNS。在 macOS 上,我猜您必须对 arp -a 表返回的每个条目运行 nslookup。

【讨论】:

  • 我试过了,但我得到了** server can't find x.x.x.x.in-addr.arpa: NXDOMAIN
  • 看起来您的查询将发送到外部 dns 服务器,请使用 lan dns ip 进行查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 2017-01-29
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多