как найти имя хоста по IP без входа на хост


128

Мне нужно найти имя хоста хоста UNIX, чей IP известен без входа на этот хост UNIX


19
NBTSTAT -A 10.10.10.10 для windows
Канагавелу Сугумар

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 05

nslookup устарел. Вместо этого вы можете использовать «копать» или «хост»
П. Барбадью

74

Вы также можете выполнить обратный поиск в DNS host. Просто укажите IP-адрес в качестве аргумента:

$ host 192.168.0.10
server10 has address 192.168.0.10

43

Утилита Другого NS Lookup , который может быть использован для обратной перекодировки 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

Цитата из справочной страницы dig :

Обратный поиск - сопоставление адресов с именами - упрощается параметром -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]"

Он говорит, недопустимый сокет подсветки синтаксиса.
Сандип Рой,

1
для python3 измените печать на функцию со скобками:python -c "import socket;print(socket.gethostbyaddr('10.16.7.10'))"
Кори Голдберг,

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»; интересный лакомый кусочек: 1e100 - это 1 гугол).

Также обратите внимание, что хосты DNS могут иметь более одного имени. Это обычное явление для хостов с более чем одним веб-сервером (виртуальный хостинг), хотя это становится все реже благодаря распространению технологий виртуализации. Эти хосты имеют несколько записей DNS PTR .

Наконец, обратите внимание, что записи хоста DNS могут быть переопределены локальным компьютером через / etc / hosts . Если вы не получаете ожидаемое имя хоста, обязательно проверьте этот файл.

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

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

Также обратите внимание, что наличие аренды DHCP для клиента не означает, что он все еще используется.

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


@John Syrinek. Не могли бы вы подробнее рассказать о запросе имен хостов DHCP? Я хочу запросить имя хоста другого компьютера (в том же wlan) по IP, возможно ли это?
jfly

2

Остальные ответы здесь верны - используйте обратный поиск DNS. Если вы хотите сделать это с помощью языка сценариев (Python, Perl), вы можете использовать API gethostbyaddr.




-1

В большинстве случаев команда traceroute работает нормально. Команды nslookup и host могут завершиться ошибкой.


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