Какая команда для поиска имени компьютера по IP-адресу?
Я всегда забываю, что это за команда, но я знаю, что она существует в Windows, и я предполагаю, что она существует в командной строке * nix.
Копать и Хост должен быть тем, что вы ищете;)
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]
На большинстве известных мне Linux-систем вы можете использовать:
nslookup <ip-number EX: 127.0.0.1>
будет работать в командной строке.
Если подумать, разве nslookup не доступен в Windows XP?
На этот вопрос уже есть миллион ответов, но я добавлю еще один. Вот небольшая функция, которую я написал для легкого выполнения обратного DNS с Dig. Добавьте это к вашему ~/.bashrc
, перезагрузите Shell, и затем вы можете выполнить обратный поиск 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). Если вы хотите сделать обратный DNS для "1.2.3.4", вы должны искать записи указателей для "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 (если вы хотите, между прочим, вы можете добавить дополнительные флаги Dig при вызове revdns
, и они будут переданы в Dig)
Прямой поиск с помощью 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.
Я хорошо знаю, что 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
В Windows я привык к использованию:
ping -a <ip address>
поскольку это также будет отражать данные из вашего файла hosts
и WINS и т. д.).
Если вы используете nslookup, то именно это (при условии 192.168.0.1 в качестве рассматриваемого IP)
> set type=ptr
> 1.0.168.192.in-addr.arpa
EDIT: Помните, что обратный поиск работает только в том случае, если для IP-адреса создана запись PTR и не гарантировано возвращение искомого имени хоста. Полностью зависит от того, как DNS настроен и поддерживается в вашей ситуации.
Powershell:
[net.dns]::gethostentry("69.59.196.212").HostName
Я предпочитаю командную строку Dig для Windows (доступна здесь: http://members.shaw.ca/nicholas.fong/Dig/ ) nslookup в любой день.
Если вам нужно протестировать/администрировать DNS с рабочей станции Windows, воспользуйтесь этим инструментом. Затем:
C:\Dig>Dig -x <IP Address>
... также не забудьте добавить c:\Dig к своему пути!
Ну, какой-то дружелюбный человек только что написал команду nslookup, и он прав. Работает как на Unix, так и на Windows. Не уверен, почему вы удалили свой ответ, но вы правы, сэр.
Это мой взгляд на более полный обратный поиск в DNS. Надеюсь, что это пригодится будущим зрителям этой страницы.
for ip in {1..254..1}; do Dig -x 1.1.1.$ip | grep $ip >> dns.txt; done;