Contents

从Linux中的IP地址获取主机名

1. 概述

有时我们需要从 Linux 中的 IP 地址获取主机名。这可能是一个简单的操作,但需要考虑不同的场景。在本教程中,我们将看看这些情况以及如何使用一些有用的命令来处理它们。

2. 从公共 IP 地址获取主机名

如果**主机具有公共 IP 地址和有效的反向 DNS 条目,*我们可以使用命令host *或dig

2.1.使用命令host

host命令执行 DNS 查找以将名称转换为 IP 地址,反之亦然。

让我们尝试一个例子:

$ host 8.8.8.8
8.8.8.8.in-addr.arpa domain name pointer dns.google.

在此示例中,我们使用命令host来获取 IP 地址8.8.8.8(Google DNS)的主机名。

2.2. 使用命令dig

dig命令是一种用于执行 DNS 查找并显示从被查询的名称服务器返回的答案的工具。

现在,要查询 IP 地址,我们需要使用选项*-x*:

$ dig -x 8.8.8.8
; <<>> DiG 9.16.15-Ubuntu <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2113
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa.		IN	PTR
;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.	68312	IN	PTR	dns.google.
;; Query time: 35 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Wed Apr 13 22:53:53 CEST 2022
;; MSG SIZE  rcvd: 73

dig命令的默认输出包含比host命令更多的信息。但是,dig提供了自定义选项。例如:

$ dig -x 8.8.8.8 +noall +answer
8.8.8.8.in-addr.arpa.	68159	IN	PTR	dns.google.

第一个选项*+noall删除输出中的所有行,然后我们将答案部分包含在选项+answer*中。

3. 从 LAN 上的 IP 地址获取主机名

当我们需要**在同一 LAN 上获取机器的主机名并且没有反向 DNS 时,*我们可以使用类似nmblookupnbtscanavahi-resolve 的命令。前两个命令用于查找NetBIOS 名称。最后一个用于使用Avahi *守护程序进行查找:

  • Windows 和 Linux(带有Samba )设备使用NetBIOS来发布它们的地址。
  • macOS、Windows 10+ 和 Linux(运行avahi-daemon )设备使用Avahi通过多播 DNS 发布其地址。

3.1. 使用命令nmblookup

nmblookup命令查询NetBIOS名称并将它们映射到网络中的 IP 地址。

与其他命令类似,我们需要使用一个选项来使用 IP 地址作为参数:

$ nmblookup -A 192.168.1.142
Looking up status of 192.168.1.142
	WORKGROUP       <00> - <GROUP> B <ACTIVE> 
	LAPTOP-PQCDJ0QF <00> -         B <ACTIVE> 
	MAC Address = E8-48-B8-8E-CA-4A

正如您在前面的示例中看到的,nmblookup命令可以显示给定 IP 地址的主机名、工作组和 MAC 地址。

3.2. 使用命令nbtscan

nmblookup 不同,nbtscan命令以人类可读的形式显示接收到的NetBIOS信息。

让我们尝试相同的 IP 地址:

$ nbtscan 192.168.1.142
Doing NBT name scan for addresses from 192.168.1.142
## IP address       NetBIOS Name     Server    User             MAC address      
192.168.1.142    LAPTOP-PQCDJ0QF            <unknown>        e8:48:b8:8e:ca:4a

nbtscan命令以“表格”格式返回输出,因为这样更易于阅读,而且我们也可以查询 IP 地址范围。

3.3. 使用命令avahi-resolve

avahi-resolve命令使用Avahi 守护程序解析一个或多个 mDNS/DNS 主机名。

用法与其他命令类似:

$ avahi-resolve -a 192.168.1.142
192.168.1.142	LAPTOP-PQCDJ0QF.local

在这种情况下,返回的输出仅显示 IP 地址及其主机名。