як знайти ім'я хоста з IP-адреси, не ввівшись у хост


128

Мені потрібно знайти ім'я хоста UNIX-хоста, IP-код якого відомий із входом у цей хост UNIX


19
NBTSTAT -A 10.10.10.10 для windows
Kanagavelu Sugumar

2
Ви коли-небудь приймете відповідь?
Паоло Стефан

2
@PaoloStefan, якщо користувача востаннє бачили у 2009 році, це надзвичайно неймовірна подія
Борис Треухов

Відповіді:


163

Використовуйте nslookup

nslookup 208.77.188.166 
...
Non-authoritative answer:
166.188.77.208.in-addr.arpa     name = www.example.com.

2
при встановленні centos вам потрібно запустити sudo yum install bind-utilsспочатку. це встановить для вас пошук nslookup
lfender6445,

nslookup застарілий. Ви можете використати натомість "копати" або "хост"
P. Barbadew

74

Ви також можете зробити зворотний пошук DNS host. Просто наведіть йому IP-адресу як аргумент:

$ host 192.168.0.10
server10 has address 192.168.0.10

43

Ще одна утиліта пошуку NS, яка може бути використана для зворотного пошуку, є digз -xможливістю:

$ 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 - IPv4-адреса в крапково-десятковому позначенні або IPv6-адреса, розміщена двокрапкою. Коли використовується ця опція, не потрібно вказувати аргументи імені, класу та типу. dig автоматично виконує пошук імені типу 11.12.13.10.in-addr.arpa та встановлює тип запиту та клас відповідно PTR та IN відповідно.



17
  • Для Windows спробуйте:

    NBTSTAT -A 10.100.3.104
    

    або

    ping -a 10.100.3.104
    
  • Для Linux спробуйте:

    nmblookup -A 10.100.3.104
    

Вони майже однакові.


2
nmblookup чудово працював, я не намагався знайти ім’я хосту веб-сервера, але комп'ютери, які робили те, чого не повинні. Це виявило не просто ім'я хоста Windows, а адресу Mac, яка була наступною у моєму списку!
FreeSoftwareServers

9
python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"

якщо вам просто потрібно ім'я, немає додаткової інформації, додайте [0] наприкінці:

python -c "import socket;print(socket.gethostbyaddr('8.8.8.8'))[0]"

Це говорить про недійсне підключення синтаксису.
Sandeep Roy

1
для python3 змінити друк на функцію з дужками:python -c "import socket;print(socket.gethostbyaddr('10.16.7.10'))"
Corey Goldberg,

7

Це залежить від контексту. Я думаю, ви посилаєтесь на ім'я хоста операційної системи (повертається hostnameпід час входу). Ця команда призначена лише для внутрішніх імен , тому для запиту назви машини потрібні різні системи імен. Існує кілька систем, які використовують імена для ідентифікації хостів, включаючи DNS, DHCP, LDAP (DN) hostnameтощо. Багато систем використовують zeroconf для синхронізації імен між декількома системами імен. З цієї причини результати від hostnameінколи співпадають з результатами dig(див. Нижче) або іншими системами імен, але часто вони не збігаються.

DNS на сьогодні є найпоширенішим і використовується як в Інтернеті (як google.com. A 216.58.218.142), так і вдома (mDNS / LLMNR), тому ось як здійснити зворотний пошук DNS : dig -x <address>( nslookupі hostвони простіші, надають менше деталей і навіть можуть повертати різні результати, однак digне включається в Windows).

Зауважте, що імена хостів у CDN не будуть відповідати канонічному доменному імені (наприклад, "google.com"), а скоріше імені хоста IP хоста, який ви запитували (наприклад, "dfw25s08-in-f142.1e100.net"; цікавий tidbit: 1e100 - 1 гугл).

Також зауважте, що хости DNS можуть мати кілька імен. Це властиво для хостів з більш ніж одним веб-сервером (віртуальним хостингом), хоча це стає все рідше завдяки розповсюдженню технологій віртуалізації. Ці хости мають кілька записів DNS DTR .

Нарешті, зауважте, що записи хостів DNS можуть бути замінені локальною машиною через / etc / hosts . Якщо ви не отримуєте очікуване ім'я хоста, не забудьте перевірити цей файл.

Імена хостів DHCP запитуються по-різному залежно від того, яке програмне забезпечення DHCP-сервера використовується, оскільки (наскільки я знаю) протокол не визначає метод запиту; проте більшість серверів надають певний спосіб зробити це (як правило, з привілейованим обліковим записом).

Примітка. Імена DHCP зазвичай синхронізуються з серверами DNS, тому звичайно бачити однакові імена хостів у найменшій таблиці клієнтів DHCP та в записах A (або AAAA для DNS-сервера DNS-сервера). Знову ж таки, це зазвичай робиться як частина zeroconf.

Також зауважте, що лише тому, що існує оренда DHCP для клієнта, це не означає, що він все ще використовується.

NetBIOS для TCP / IP (NBT) десятиліттями використовувався для вирішення імен, але з тих пір його замінив LLMNR для роздільної здатності імен (частина zeroconf в Windows). Ця застаріла система все ще може бути запитана за допомогою nbtstat(Windows) або nmblookup(Linux).


@John Syrinek Чи можете ви детальніше розповісти про запит імен хостів DHCP? Я хочу запитати ім'я хоста іншої машини (в тій же вані) по IP, чи можливо це?
jfly

2

Інші відповіді тут правильні - використовуйте зворотні пошук DNS. Якщо ви хочете зробити це за допомогою скриптової мови (Python, Perl), ви можете використовувати API gethostbyaddr.



-1

Ви також можете використовувати команду traceroute.

http://linux.die.net/man/8/traceroute

просто використовуйте traceroute, він покаже вам маршрут маршруту з іменами хостів (IP-адреси вирішено)


Дивіться коментар по Оттавіо Кампана нижче: stackoverflow.com/questions/657482 / ...
icedwater

-1

У більшості випадків команда traceroute працює добре. Команди nslookup і хост можуть не працювати.


4
це неправильно: з огляду на IP-адресу, єдине, що потрібно зробити - це зворотний запит до DNS. Таким чином, traceroute це не правильний інструмент, щоб запропонувати.
Оттавіо Кампана
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.