我需要在不登录UNIX主机的情况下找到已知IP的UNIX主机的主机名。
我需要在不登录UNIX主机的情况下找到已知IP的UNIX主机的主机名。
使用 nslookup
nslookup 208.77.188.166
...
Non-authoritative answer:
166.188.77.208.in-addr.arpa name = www.example.com.
sudo yum install bind-utils
。这将为您安装nslookup查找工具。 - lfender6445你也可以使用 host
进行反向 DNS 查找。只需将 IP 地址作为参数传递即可:
$ host 192.168.0.10
server10 has address 192.168.0.10
另一个可用于反向查询的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
引用自dig manpage:
通过-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]"
python -c "import socket;print(socket.gethostbyaddr('10.16.7.10'))"
- Corey Goldberghostname
返回)。这个命令仅用于内部名称,因此要查询机器的名称需要不同的命名系统。有多个系统使用名称来标识主机,包括DNS、DHCP、LDAP(DN)、hostname
等,许多系统使用zeroconf在多个命名系统之间同步名称。因此,hostname
的结果有时会与dig
(请参见下文)或其他命名系统的结果匹配,但通常不匹配。
DNS是目前最常见的解析方式,既用于互联网(例如google.com. A 216.58.218.142
),也用于家庭网络中的mDNS/LLMNR。以下是如何执行反向DNS查询的方法:dig -x <address>
(nslookup
和host
更简单,提供的信息更少,甚至可能返回不同的结果;但是,在Windows中不包括dig
)。
请注意,CDN中的主机名将无法解析为规范的域名(例如“google.com”),而是查询的主机IP的主机名(例如“dfw25s08-in-f142.1e100.net”;有趣的小知识:1e100是1个谷歌)。
注意,DNS主机可以有多个名称。对于拥有多个Web服务器(虚拟主机)的主机来说,这是很常见的,尽管由于虚拟化技术的普及,这种情况正在变得越来越少。这些主机有多个PTR DNS记录。
最后,请注意,本地计算机可以通过/etc/hosts覆盖DNS主机记录。如果您没有得到预期的主机名,请确保检查此文件。
DHCP主机名的查询方式取决于使用的DHCP服务器软件,因为(据我所知)该协议没有定义一种用于查询的方法;然而,大多数服务器都提供了一些方法来完成这个任务(通常需要特权帐户)。
请注意,DHCP名称通常与DNS服务器同步,因此在DHCP客户端列表和DNS服务器的A(或AAAA用于IPv6)记录中看到相同的主机名是很常见的。同样,这通常是作为零配置的一部分完成的。
还要注意,仅因为客户端存在DHCP租约,并不意味着它仍在使用中。
NetBIOS for TCP/IP (NBT)被用了几十年来执行名称解析,但现在已经被LLMNR 用于名称解析(Windows上的zeroconf的一部分)所取代。这个传统系统仍然可以通过nbtstat
(Windows)或nmblookup
(Linux)进行查询。
nbtstat -a 10.228.42.57
对于仅安装有 curl 用于网络工具的最小发行版/映像:
curl --write-out '%{remote_ip}' localstack:4566
生成,例如:
172.18.0.3
注意:
在Windows中,百分号(%)符号是用于扩展环境变量的特殊符号。在批处理文件中,使用此选项时,所有出现的%必须加倍以正确转义。如果在命令提示符下使用此选项,则无法转义%,可能会发生意外扩展。