我需要找到一个知道IP的UNIX主机的主机名,但不能登录该UNIX主机
使用nslookup
nslookup 208.77.188.166 ... Non-authoritative answer: 166.188.77.208.in-addr.arpa name = www.example.com.
您也可以使用反向DNS查找host
.只需将IP地址作为参数:
$ host 192.168.0.10 server10 has address 192.168.0.10
另一个可用于反向查找的NS查找实用程序dig
具有以下-x
选项:
$ 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地址.使用此选项时,无需提供名称,类和类型参数.dig自动执行查找名称,如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
对于Linux,请尝试:
nmblookup -A 10.100.3.104
它们几乎相同.
python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"
如果您只需要名称,没有其他信息,请在最后添加[0]:
python -c "import socket;print(socket.gethostbyaddr('8.8.8.8'))[0]"
这取决于具体情况.我认为你指的是操作系统的主机名(hostname
当你登录时返回).此命令仅用于内部名称,因此查询计算机名称需要不同的命名系统.有多个系统使用名称来标识主机,包括DNS,DHCP,LDAP(DN)hostname
等,许多系统使用zeroconf在多个命名系统之间同步名称.出于这个原因,结果hostname
有时会与dig
(见下文)或其他命名系统的结果相匹配,但通常不会匹配.
DNS是目前为止最常见和使用都在互联网上(像google.com. A 216.58.218.142
)和家庭(的mDNS/LLMNR),所以这里是如何执行反向DNS查找:dig -x
(nslookup
和host
更简单,提供较少的细节,甚至可能返回不同结果;但是,dig
不包含在Windows中).
请注意,CDN中的主机名不会解析为规范域名(例如"google.com"),而是您查询的主机IP的主机名(例如"dfw25s08-in-f142.1e100.net";有趣的花絮: 1e100是1 googol).
另请注意,DNS主机可以有多个名称.这对于具有多个Web服务器(虚拟主机)的主机来说很常见,尽管由于虚拟化技术的普及,这种情况越来越少.这些主机具有多个PTR DNS记录.
最后,请注意本地计算机可以通过/ etc/hosts覆盖DNS主机记录.如果您没有获得预期的主机名,请务必检查此文件.
根据使用的DHCP服务器软件,DHCP主机名的查询方式不同,因为(据我所知)协议没有定义查询方法; 但是,大多数服务器都提供了一些方法(通常使用特权帐户).
注意DHCP名称通常与DNS服务器同步,因此在DHCP客户端最少表和DNS服务器的A(或AAAA for IPv6)记录中看到相同的主机名是很常见的.同样,这通常是作为zeroconf的一部分完成的.
另请注意,仅仅因为客户端存在DHCP租约,并不意味着它仍在使用中.
几十年来,NetBIOS for TCP/IP(NBT)用于执行名称解析,但后来被LLMNR取代了名称解析(Windows上的zeroconf的一部分).仍然可以使用nbtstat
(Windows)或nmblookup
(Linux)查询此旧系统.