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

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

Ответ 1

Используйте nslookup

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

Ответ 2

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

$ host 192.168.0.10
server10 has address 192.168.0.10

Ответ 3

Другая утилита 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

Цитата из вывести manpage:

Обратные запросы - сопоставление адресов с именами - упрощаются -x. addr - это IPv4-адрес в методе с десятичной запятой или адрес IPv6 с разделителем двоеточия. Когда этот параметр используется, нет необходимо указать аргументы имени, класса и типа. копать автоматически выполняет поиск имени 11.12.13.10.in-addr.arpa и устанавливает тип запроса и класс для PTR и IN соответственно.

Ответ 4

Для Windows ping -a 10.10.10.10

Ответ 5

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

    NBTSTAT -A 10.100.3.104
    

    или

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

    nmblookup -A 10.100.3.104
    

Они почти такие же.

Ответ 6

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

если вам просто нужно имя, без дополнительной информации, добавьте [0] в конце:

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

Ответ 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"; интересный тидбит: 1е100 - это 1 гуголь).

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

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

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

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

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

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

Ответ 8

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

Ответ 9

Если вы специально ищете Windows-машину, попробуйте выполнить команду ниже:

nbtstat -a 10.228.42.57

Ответ 10

Вы также можете использовать команду traceroute.

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

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

Ответ 11

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