回答:
digとhostはあなたが探しているものでなければなりません;)
http://www.unix.com/unix-dummies-questions-answers/9866-nslookup-linux.html
* nixシステムでは、次のコマンドを実行できます。
dig -x [address]
または+short
、dig
コマンドの最後に追加して、dnsの結果のみを出力できます。
Windowsでは、次を使用しますnslookup
編集:nslookupは* nixシステムでも動作します。nslookupコマンドの詳細については、しばらく前から置き換えられているようです。http://linuxreviews.org/man/nslookup/
* nixでは次を使用できます。
dig -x [address]
dig -x [address] +short
+short
フラグは本当に便利です!
man dig
、addrはドット付き10進表記のIPv4アドレス、またはコロンで区切られたIPv6アドレスです。
この質問にはすでに100万の回答がありますが、もう1つ追加します。digで逆DNSを簡単に行うために書いた小さな関数を次に示します。これを~/.bashrc
ファイルに追加し、シェルをリロードすると、次のようにして逆引きDNSルックアップを実行できますrevdns 1.2.3.4
。
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
持っていれば使用できますが、nslookupが提供するものの代わりにOSのDNSサーバーを使用するため、この掘りベースのソリューションを好みます(必要に応じて、追加の掘りフラグを追加できます)を呼び出すrevdns
と、彼らは発掘に渡されます)
dig -x dot-notation
と、「逆引きのショートカット」です。長いバージョンはどうなるのだろうと思っていました。説明してくれてありがとう!:)
man dig
: -xを使用する場合、名前、クラス、およびタイプの引数を指定する必要はありません。digは、94.2.0.192.in-addr.arpaなどの名前のルックアップを自動的に実行し、クエリタイプとクラスをそれぞれPTRとINに設定します。
私はdig / host / nslookupがこれらの標準ツールであることをよく知っていますが、OSの解像度をテストするためにこれらを保持します(本質的に、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
前方参照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.
nslookupを使用している場合はこれです(問題のIPとして192.168.0.1を想定)
> set type=ptr
> 1.0.168.192.in-addr.arpa
編集: IP用に作成されたPTRレコードがある場合にのみ逆ルックアップが機能することを忘れないでください、あなたが探しているホスト名を返すことは保証されていません。状況に応じてDNSがどのように構成および維持されるかに完全に依存しています。
さて、nslookupを書いたばかりのフレンドリーな人がコマンドであり、彼は正しい。UnixとWindowsの両方で動作します。答えを削除した理由はわかりませんが、正解です。
nslookupよりも、Windows用のコマンドラインdig(http://members.shaw.ca/nicholas.fong/dig/)が好きです。
WindowsワークステーションからDNSをテスト/管理する必要がある場合は、このツールを入手してください。次に:
C:\dig>dig -x <IP Address>
...また、パスにc:\ digを追加することを忘れないでください!
drill
、ldns のユーティリティでも機能します。つまり、drill -x 123.123.123.123