it-swarm.cn

什么是反向DNS命令行实用程序?

在给定计算机IP地址的情况下查找计算机名称的命令是什么?

我总是忘记这个命令是什么,但是我知道它存在于Windows中,并且假定它存在于* nix命令行中。

75
Peter Turner

DigHost应该是您要寻找的;)

http://www.unix.com/unix-dummies-questions-answers/9866-nslookup-linux.html

在* nix系统上,您可以执行以下命令:Dig -x [address]

或者,您可以在Dig命令的末尾添加+short以仅输出dns结果。

在Windows上,使用nslookup

编辑:nslookup也可以在* nix系统上工作。有关nslookup命令的更多信息,是否一段时间以来似乎已被替换: http://linuxreviews.org/man/nslookup/

59
Marc-Andre R.

在* nix上,您可以使用:

Dig -x [address]
54
palehorse

我知道您可以在大多数Linux系统上使用:

 nslookup <ip-number EX: 127.0.0.1>

将在命令行上工作。

想一想,nslookup在Windows XP上不可用吗?

8
mdpc

这个问题已经有百万个答案,但我要再添加一个。这是我编写的一个小功能,用于通过Dig轻松进行反向DNS。将此添加到您的~/.bashrc文件中,重新加载Shell,然后可以使用revdns 1.2.3.4进行反向DNS查找:

function revdns() {
    octets=""
    addr="in-addr.arpa"

    # split the IP address into an array of octets
    IFS="." read -r -a octets <<< "$1"

    # add each octet to our $addr string in reverse order
    for octet in "${octets[@]}"; do
         addr=$octet"."$addr
    done

    # run a DNS pointer lookup with Dig
    # `+short` makes Dig's output very terse (un-verbose)
    # `"${@:2}"` passes any extra params from this command to Dig
    Dig ptr +short $addr "${@:2}"
}

反向DNS查找通过检查指针(PTR)记录来完成。如果要对“ 1.2.3.4”进行反向DNS,则必须查找“ 4.3.2.1.in-addr.arpa”的指针记录。我的函数接收一个IP地址,反转八位位组的顺序(即,将其从1.2.3.4更改为4.3.2.1),然后使用Dig执行我刚刚描述的PTR查找。

当然,您可以使用nslookup 1.2.3.4,但我更喜欢这种基于Dig的解决方案,因为它使用操作系统的DNS服务器而不是nslookup提供的服务器(如果需要,您可以可以在调用revdns时添加其他Dig标志,这些标志将传递给Dig)

4
Hayden Schiff

尝试“主机”

  • 使用Host进行正向查找:

    $ Host google-public-dns-b.google.com.
    google-public-dns-b.google.com has address 8.8.4.4
    google-public-dns-b.google.com has IPv6 address 2001:4860:4860::8844
    
  • 使用Host进行反向查找:

    $ Host 8.8.4.4
    4.4.8.8.in-addr.arpa domain name pointer google-public-dns-b.google.com.
    

类似于挖

  • 使用Dig进行正向查找:

    $ Dig google-public-dns-b.google.com. +short
    8.8.4.4
    
  • 使用Dig进行反向查找:

    $ Dig -x 8.8.4.4 +short
    google-public-dns-b.google.com.
    
3
StackzOfZtuff

我很清楚Dig/Host/nslookup是用于这些工具的标准工具,但我一直使用它们来测试操作系统的分辨率(本质上是为了测试nsswitch.conf是否正常工作):

gethostbyname:

#!/usr/bin/Perl

use Socket;

my @t = gethostbyname($ARGV[0]);
print "\$name     = $t[0]\n"; shift(@t);
print "\$aliases  = $t[0]\n"; shift(@t);
print "\$addrtype = $t[0]\n"; shift(@t);
print "\$length   = $t[0]\n"; shift(@t);

foreach (@t) {
  print "          = ", inet_ntoa($_), "\n";
}

gethostbyaddr:

#!/usr/bin/Perl

use Socket;

my @t = gethostbyaddr(inet_aton($ARGV[0]), AF_INET);
print "\$name     = $t[0]\n"; shift(@t);
print "\$aliases  = $t[0]\n"; shift(@t);
print "\$addrtype = $t[0]\n"; shift(@t);
print "\$length   = $t[0]\n"; shift(@t);

foreach (@t) {
  print "          = ", inet_ntoa($_), "\n";
}

例:

g3 0 /home/jj33/swap > gethostbyname www.google.com
$name     = www.l.google.com
$aliases  = www.google.com
$addrtype = 2
$length   = 4
          = 72.14.205.147
          = 72.14.205.103
          = 72.14.205.104
          = 72.14.205.99
g3 0 /home/jj33/swap > gethostbyaddr 72.14.205.147 
$name     = qb-in-f147.google.com
$aliases  = 
$addrtype = 2
$length   = 4
          = 72.14.205.147
3
jj33

在Windows上,我养成了以下习惯:

ping -a <ip address>

因为这也会反映hosts文件和WINS等)中的数据。

3
Dave Webb

如果您使用的是nslookup,就是这个(假设192.168.0.1作为有问题的IP)

> set type=ptr
> 1.0.168.192.in-addr.arpa

EDIT:请记住,只有在为IP创建了PTR记录的情况下,反向查找才有效,并且不能保证返回您要查找的主机名。完全取决于您所处环境中DNS的配置和维护方式。

1
squillman

电源外壳:

[net.dns]::gethostentry("69.59.196.212").HostName
1
Richard

我更喜欢Windows的命令行Dig(可在此处获取 http://members.shaw.ca/nicholas.fong/Dig/ )代替nslookup。

如果必须从Windows工作站测试/管理DNS,请抓住此工具。然后:

C:\Dig>Dig -x <IP Address>

...此外,请记住将c:\ Dig添加到您的路径中!

0
Cory J

好吧,一个友好的人刚刚写了nslookup是命令,他是对的。它在Unix和Windows上均可使用。不知道为什么删除答案,但是您是正确的先生。

0
Peter Turner

她是我进行更完整的DNS反向查找的依据。希望这对以后该页面的读者有用。

for ip in {1..254..1}; do Dig -x 1.1.1.$ip | grep $ip >> dns.txt; done;
0
Boschko