如何从IP地址find主机名,并登出主机
我需要find已知IP的UNIX主机的主机名,而不必login到该UNIX主机
使用nslookup
nslookup 208.77.188.166 ... Non-authoritative answer: 166.188.77.208.in-addr.arpa name = www.example.com.
您也可以与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
从挖掘手册引用:
反向查找 – 将地址映射到名称 – 由-x选项简化。 addr是以点分十进制forms表示的IPv4地址,或冒号分隔的IPv6地址。 使用此选项时,不需要提供名称,类和types参数。 dig自动执行查找名称,如11.12.13.10.in-addr.arpa,并将查询types和类分别设置为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('10.16.7.10')"
这取决于上下文。 我想你是指操作系统的主机名(当你login时由hostname
名返回)。 此命令仅用于内部名称 ,因此要查询机器名称需要不同的命名系统。 有多个系统使用名称来标识主机,包括DNS,DHCP,LDAP(DN), hostname
等,许多系统使用zeroconf在多个命名系统之间同步名称。 由于这个原因, hostname
结果有时会与dig
(见下文)或其他命名系统的结果相匹配,但通常它们不匹配。
DNS是目前为止最常见的,在互联网(如google.com. A 216.58.218.142
)和家庭(mDNS / LLMNR)上都使用DNS ,因此以下是如何执行反向DNS查询 : dig -x <address>
( nslookup
和host
更简单,提供更less的细节,甚至可能返回不同的结果;但是, dig
不包括在Windows中)。
请注意, CDN中的主机名称不会parsing为规范域名(例如“google.com”),而是您查询的主机IP的主机名(例如“dfw25s08-in-f142.1e100.net”;有趣的珍闻: 1e100是1 googol)。
另请注意,DNS主机可以有多个名称。 这对于拥有多个networking服务器(虚拟主机)的主机来说是很常见的,但是由于虚拟化技术的普及,这种情况已经不那么普遍了。 这些主机有多个PTR DNSlogging 。
最后,请注意,DNS主机logging可以由本地机器通过/ etc / hosts覆盖。 如果你没有得到你期望的主机名,一定要检查这个文件。
根据使用哪个DHCP服务器软件, DHCP主机名的查询方式不同,因为(据我所知)协议没有定义查询方法; 然而,大多数服务器提供了一些这样做(通常与一个特权帐户)。
注意DHCP名称通常与DNS服务器同步,所以通常在DHCP客户端最less表和DNS服务器A(或AAAA for IPv6)logging中看到相同的主机名。 同样,这通常是作为零configuration的一部分完成的。
另请注意,仅仅因为客户端存在DHCP租约,并不意味着它仍在使用中。
用于TCP / IP的NetBIOS(NBT)几十年来一直用于执行名称parsing,但是后来被用于名称parsing的LLMNR(Windows上的zeroconf的一部分)取代。 这个遗留系统仍然可以用nbtstat
(Windows)或nmblookup
(Linux)查询。
这里的其他答案是正确的 – 使用反向DNS查找。 如果你想通过脚本语言(Python,Perl)来完成,你可以使用gethostbyaddr API。
在大多数情况下,traceroute命令工作正常。 nslookup和主机命令可能会失败。
如果您正在寻找Windows机器,请尝试以下命令:
nbtstat -a 10.228.42.57
您也可以使用traceroute命令。
http://linux.die.net/man/8/traceroute
只需使用traceroute,它将向您显示具有主机名称的路由path(已parsing的IP)