Как узнать имя хоста по IP без логина на хост
Мне нужно найти имя хоста хоста UNIX, чей IP-адрес известен без входа на этот хост UNIX
12 ответов
Используйте nslookup
nslookup 208.77.188.166
...
Non-authoritative answer:
166.188.77.208.in-addr.arpa name = www.example.com.
Вы можете сделать обратный поиск DNS с host
, тоже. Просто дайте ему IP-адрес в качестве аргумента:
$ host 192.168.0.10
server10 has address 192.168.0.10
Еще одна утилита поиска 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-адрес, разделенный двоеточиями. Когда используется эта опция, нет необходимости указывать аргументы name, class и type. dig автоматически выполняет поиск имени, например 11.12.13.10.in-addr.arpa, и устанавливает тип запроса и класс в PTR и IN соответственно.
Для Windows попробуйте:
NBTSTAT -A 10.100.3.104
или же
ping -a 10.100.3.104
Для Linux попробуйте:
nmblookup -A 10.100.3.104
Они почти одинаковы.
python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"
Это зависит от контекста. Я думаю, что вы ссылаетесь на имя хоста операционной системы (возвращается 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) часто встречаются одинаковые имена хостов. Опять же, это обычно делается как часть нуля.
Также обратите внимание, что только потому, что аренда DHCP существует для клиента, не означает, что он все еще используется.
NetBIOS для TCP/IP (NBT) использовался десятилетиями для выполнения разрешения имен, но с тех пор был заменен LLMNR для разрешения имен (часть zeroconf в Windows). Эта устаревшая система все еще может быть запрошена с nbtstat
(Windows) или nmblookup
(Linux).
Другие ответы здесь верны - используйте обратный поиск DNS. Если вы хотите сделать это с помощью языка сценариев (Python, Perl), вы можете использовать API gethostbyaddr.
Если вы специально ищете компьютер с Windows, попробуйте следующую команду:
nbtstat -a 10.228.42.57
Для минимальных дистрибутивов/образов, в которых установлен только Curl для сетевых утилит:
curl --write-out '%{remote_ip}' localstack:4566
производит, например:
172.18.0.3
Примечание:
В Windows символ % — это специальный символ, используемый для раскрытия переменных среды. В пакетных файлах все вхождения % должны быть удвоены при использовании этой опции для правильного экранирования. Если этот параметр используется в командной строке, то % нельзя экранировать и возможно непреднамеренное расширение.
В большинстве случаев команда traceroute работает нормально. Команды nslookup и host могут не работать.
Вы также можете использовать команду traceroute.
http://linux.die.net/man/8/traceroute
просто используйте traceroute, он покажет вам путь маршрутизации с именами хостов (IP-адреса разрешены)