如何找到主机名从 IP 没有登录到主机

我需要找到一个 UNIX 主机的主机名,这个主机的 IP 是已知的,不需要登录到这个 UNIX 主机

535083 次浏览

使用 Nslookup

nslookup 208.77.188.166
...
Non-authoritative answer:
166.188.77.208.in-addr.arpa     name = www.example.com.

您也可以使用 traceroute 命令。

Http://linux.die.net/man/8/traceroute

只要使用 traceroute,它就会显示带有主机名(已解析的 IP)的路由路径

你也可以用 host做一个反向 DNS 查找,只需要给它一个 IP 地址作为参数:

$ host 192.168.0.10
server10 has address 192.168.0.10

这里的其他答案是正确的-使用反向 DNS 查找。 如果你想通过一个脚本语言(Python,Perl)来完成,你可以使用 gethostbyaddr API。

在大多数情况下,traceroute 命令工作正常。 nslookup 和 host 命令可能会失败。

另一个可用于反向查找的 NS 查找实用程序是带有 -x选项的 dig:

$ dig -x 72.51.34.34


; <<>> DiG 9.9.2-P1 <<>> -x 72.51.34.34
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12770
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1


;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1460
;; QUESTION SECTION:
;34.34.51.72.in-addr.arpa.      IN      PTR


;; ANSWER SECTION:
34.34.51.72.in-addr.arpa. 42652 IN      PTR     sb.lwn.net.


;; Query time: 4 msec
;; SERVER: 192.168.178.1#53(192.168.178.1)
;; WHEN: Fri Jan 25 21:23:40 2013
;; MSG SIZE  rcvd: 77

或者

$ dig -x 127.0.0.1


; <<>> DiG 9.9.2-P1 <<>> -x 127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11689
;; flags: qr aa ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa.                IN      PTR


;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 10      IN      PTR     localhost.


;; Query time: 2 msec
;; SERVER: 192.168.178.1#53(192.168.178.1)
;; WHEN: Fri Jan 25 21:23:49 2013
;; MSG SIZE  rcvd: 63

引自 挖掘手册:

方法简化了反向查找(将地址映射到名称) - x 选项。Addr 是一个以虚线十进制表示的 IPv4地址,或冒号分隔的 IPv6地址。使用此选项时,没有 需要提供名称、类和类型参数 对类似于11.12.13.10.in-addr. arpa 的名称执行查找并设置 将查询类型和类分别转换为 PTR 和 IN。

对于 Windows ping-a 10.10.10.10

  • 对于 Windows,请尝试:

    NBTSTAT -A 10.100.3.104
    

    或者

    ping -a 10.100.3.104
    
  • For Linux, try:

    nmblookup -A 10.100.3.104
    

They are almost same.

python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"

如果你只需要名字,没有额外的信息,在最后加上[0] :

python -c "import socket;print(socket.gethostbyaddr('8.8.8.8'))[0]"

如果您正在特别寻找一台 Windows 机器,请尝试以下命令:

nbtstat -a 10.228.42.57

这取决于具体情况。我认为您指的是操作系统的主机名(登录时由 hostname返回)。这个命令用于 只有内部名字,因此查询一台机器的名称需要不同的命名系统。有多个系统使用名称来识别主机,包括 DNS、 DHCP、 LDAP (DN)、 hostname等,许多系统使用 Zeroconf来同步多个命名系统之间的名称。由于这个原因,来自 hostname的结果有时会与来自 dig(见下文)或其他命名系统的结果匹配,但通常它们不会匹配。

DNS 是目前为止最常见的,在互联网(如 google.com. A 216.58.218.142)和家庭(mDNS/LLMNR)上都使用,所以这里介绍如何执行 反向 DNS 查找: dig -x <address>(nslookuphost更简单,提供更少的细节,甚至可能返回不同的结果; 然而,dig不包括在 Windows 中)。

请注意,CDN中的主机名不会解析为规范域名(例如“ google.com”) ,而是解析为您查询的主机 IP 的主机名(例如“ dfw25s08-in-f142.1e100.net”,有趣的趣闻: 1e100是1 googol)。

还要注意,DNS 主机可以有多个名称。这对于拥有多个网络服务器(虚拟主机)的主机来说很常见,但是由于虚拟化技术的普及,这种情况正在变得越来越少见。这些接待员有 多个 PTR DNS 记录

最后,请注意,本地机器可以通过 /etc/hosts覆盖 DNS 主机记录。如果没有得到预期的主机名,请确保检查该文件。

根据使用的 DHCP 服务器软件不同,DHCP 主机名的查询方式也不同,因为(据我所知)协议没有定义查询方法; 然而,大多数服务器提供了一些方法(通常使用特权帐户)。

注意,DHCP 名称通常与 DNS 服务器同步,因此在 DHCP 客户机最少表和 DNS 服务器的 A (或 IPv6的 AAAA)记录中常常看到相同的主机名。同样,这通常是作为 zeroconf 的一部分完成的。

还要注意,仅仅因为客户端存在 DHCP 租约,并不意味着它仍在使用。

NetBIOS for TCP/IP (NBT) 几十年来一直用于执行名称解析,但后来被 LLMNR 名称解析(Windows 上 zeroconf 的一部分)取代。仍然可以使用 nbtstat(Windows)或 nmblookup(Linux)查询这个遗留系统。