Що таке зворотна утиліта командного рядка DNS?


71

Яка команда знайти ім’я комп’ютера з урахуванням його IP-адреси?

Я завжди забуваю, що це за команда, але я знаю, що вона існує в Windows, і я припускаю, що вона існує в командному рядку * nix.

Відповіді:


56

копати і хостинг повинен бути тим, що ти шукаєш;)

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

У системі * nix ви можете виконати цю команду: dig -x [address]

Крім того, ви можете додати +shortв кінці digкоманди, щоб вивести лише результат dns.

У Windows використовуйтеnslookup

EDIT: також працює nslookup у * nix системах. Більше інформації про команду nslookup, чи здається, що вона була замінена з певного часу: http://linuxreviews.org/man/nslookup/


Цей же синтаксис також працює з drillутилітою ldns, тобтоdrill -x 123.123.123.123
Tullo_x86,

52

У режимі * nix ви можете використовувати:

dig -x [address]

16
Це, безумовно, здається найпростішим способом. Додайте + короткий наприкінці, щоб повернути нічого, крім результату rdns. dig -x [address] +short
ColinM

3
Цей +shortпрапор справді корисний!
Ніл

Чи працює це з адресами IPv6?
Геремія

@ColinM Добре. Я відредагував свою відповідь на основі цього. Дякую!
Марк-Андре Р.

Так, @Geremia, згідно man dig, Addr - це IPv4-адреса у крапково-десятковому позначенні або IPv6-адреса з обмеженою двокрапкою.
Рікардо

8

У більшості систем Linux, про які я знаю, ви можете використовувати:

 nslookup <ip-number EX: 127.0.0.1>

буде працювати в командному рядку.

Подумайте, чи не доступний nslookup у Windows XP?


Так, справді. І в попередніх версіях Windows.
kubanczyk

4

На це питання вже є мільйон відповідей, але я додам ще один. Ось невеличка функція, яку я написав для того, щоб легко робити зворотний DNS з dig. Додайте це до свого ~/.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). Якщо ви хочете зробити зворотний 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якщо у вас є, але я віддаю перевагу це рішення на основі копання, оскільки воно використовує DNS-сервери ОС, а не надані nslookup (якщо ви хочете, до речі, ви можете додати додаткові прапори копання коли ти зателефонуєш revdns, і вони перейдуть копати)


За його допомогою dig -x dot-notation- це "ярлик для зворотного пошуку". Мені було цікаво, якою буде довга версія. Дякуємо за пояснення! :)
webwurst

від man dig: Коли використовується -x, не потрібно вказувати аргументи імені, класу та типу. dig автоматично виконує пошук імені типу 94.2.0.192.in-addr.arpa і встановлює тип запиту та клас відповідно PTR та IN відповідно.
Рікардо

3

Я добре знаю, що 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

4
ви можете зробити "гетентних хостів [IP або HOSTNAME]"
hayalci

Гммм ... я писав інструменти спочатку просто для того, щоб грати з функціями, так що втрат немає, але я, звичайно, не вставив би їх на сервер за замовчуванням, якби знав про гетентний інструмент. Дякуємо за вказівник.
jj33

-1: вони обмежені IPv4, gethostbyname не отримує адреси IPv6, коли вони існують, а gethostbyaddr не приймає адреси IPv6.
борцмейєр

Ці функції багато років застаріли. Вони навіть застаріли, коли це було написано. У perl та більшості інших мов ви повинні використовувати getaddrinfo та getnameinfo.
Майкл Хемптон

3

У Windows я звик користуватися:

ping -a <ip address>

оскільки це також відображатиме дані з вашого hostsфайлу та WINS тощо.


2

Спробуйте "хост"

  • Шукати вперед за допомогою 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.
    

1

Якщо ви використовуєте nslookup, це все (якщо вважати 192.168.0.1 як IP-адресу)

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

РЕДАКТУВАННЯ: Пам'ятайте, що зворотний пошук працює лише в тому випадку, якщо для IP-адреси створена запис PTR, і повернення імені хоста, яке ви шукаєте, не гарантовано. Повністю залежить від того, як налаштовано та підтримується DNS у вашій ситуації.


5
nsloookup більше не підтримується, і його автори рекомендують викопати. Крім того, викопати -x набагато простіше, ніж перевернути самі байти.
борцмейєр

Це добре знати, дякую за вклад! Старі звички важко вмирають;)
шквал


0

Ну, якась доброзичлива людина щойно написала nslookup - це команда, і він правий. Він працює як на Unix, так і на Windows. Не знаєте, чому ви видалили свою відповідь, але ви правильні, сер.


Помилка, можливо, ні.
Пітер Тернер

Так добре, я поступив трохи швидко, і після перевірки я не був впевнений у своїй відповіді, я просто відклав свою публікацію та відредагував її, щоб додати більше деталей;)
Марк-Андре Р.

Гаразд, так, але це не я приймаю цю відповідь. Шкода, що ми не можемо отримати в реальному часі Googley AJAX тут.
Пітер Тернер

хай так, у нас не може бути всього;) Приємного дня, сподіваюся, я допоможу тобі;)
Марк-Андре Р.

0

Я віддаю перевагу копанню командного рядка для Windows (доступний тут: http://members.shaw.ca/nicholas.fong/dig/ ) перед nslookup будь-якого дня.

Якщо вам доведеться перевірити / адмініструвати DNS з робочої станції Windows, візьміть цей інструмент. Тоді:

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

... також не забудьте додати c: \ dig на свій шлях!


0

Її я взяв на себе більш повний зворотний пошук DNS. Сподіваємось, це стане у нагоді майбутнім глядачам цієї сторінки.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.