Как определить имя хоста по IP-адресу в сети Windows?

84

В моей локальной сети 50 хостов Windows. В командной строке Windows я пытаюсь ping, чтобы получить IP-адрес работающей машины Windows.

Вопрос в том, как получить имя хоста определенного IP-адреса в той же рабочей группе Windows?

Другой вопрос, как узнать имя хоста машины Windows из коробки Linux, если у меня есть IP-адрес? Какую команду вы используете? У меня есть один хост под управлением Kubuntu 9.04.

billyduc
источник

Ответы:

92

Если вы хотите определить имя компьютера с Windows без DNS, попробуйте Nbtstat . Но это будет работать только на Windows:

Например,

NBTSTAT -A 10.10.10.10

В Linux вы должны попробовать nmblookup, который делает почти то же самое.

Фил Свисс
источник
3
NBTSTAT полагается на загрузку и запуск NetBIOS, который часто отключается в крупных организациях с собственной инфраструктурой AD & DNS. Вероятно, безопасное предположение здесь, хотя с рабочей группой из 50 машин.
GAThrawn
Спасибо вам, Декка, nbtstat - это рок, кстати ... Я не смог на Linux box nmblookup 192.168.1.92 запросить 192.168.1.92 на 192.168.1.255 name_query не удалось найти имя 192.168.1.92
billyduc
8
Команда nmblookup -A 192.168.1.92 работает
успешно
1
nmblookupявляется частью пакета Samba моего дистрибутива. Не уверен, почему nmblookupэто делает ip to hostname частью Samba (код сетевой файловой системы и код служб печати).
Тревор Бойд Смит
60

Технически предпочтительным методом является nslookup <ip address>

NSLOOKUP фактически запрашивает у DNS-сервера IP-адрес имени хоста. Ping будет использовать локальный DNS Resolver Cache , который может быть неверным, пока вы не очистите.

Иззи
источник
это предполагает, что у него есть внутренний сервер DNS для разрешения имен. Кроме того, ОП заявил, что он хотел разрешить имя хоста из ip, поэтому я предполагаю, что он не знает имя хоста для начала. Кроме того, насколько я понимаю, нет правильного или неправильного способа сделать это. Есть несколько методов, каждый из которых является действительным, и каждый из которых может давать разные результаты.
Joeqwerty
3
Нет. Использование PING - не лучший способ сделать это. Вы можете сделать, nslookup <ip address>и это разрешит обратный поиск.
Иззи
1
Вы ссылаетесь на NSLOOKUP как на инструмент для внутреннего разрешения ... В любом случае, NSLOOKUP - технически превосходный вариант.
Иззи
1
Но он прав. nslookup используется в этом сценарии только в том случае, если существует DNS-сервер (будь то внутренний или внешний), который имеет записи зоны обратного просмотра для хостов OP, и машины OP настроены для использования этого DNS-сервера.
Максимус Минимус
3
@ Izzy Я зарегистрировался как новый участник просто чтобы поблагодарить за совет для NSLOOKUP, Иззи. Из всего вышеперечисленного, это единственный, который работал на меня. Бесконечно благодарен.
Джефф
9

В Windows вы можете ping -a x.x.x.xпопытаться разрешить имя хоста по IP-адресу .

joeqwerty
источник
1
PING может привести к неточным результатам, особенно если вы активно работаете над проблемами DNS.
Иззи
Оператор не утверждал, что он работает над вопросами DNS, он подразумевал, что он работает над проблемами разрешения имен. DNS не является единственным механизмом разрешения имен в Windows и не является обязательным механизмом разрешения имен. он также заявил, что работает в рабочей группе, поэтому я не делал никаких предположений относительно наличия у него инфраструктуры DNS.
Joeqwerty
DNS действительно требуется для Active Directory. У нас просто недостаточно информации, чтобы сказать что-то определенное по этому поводу.
Максимус Минимус
@ MHH: да, но опять же ... недостаточно информации из оп.
Joeqwerty
Спасибо вам всем ! У меня нет службы Active Directory, у меня есть один DNS-сервер, разрешающий для dhcp, mail, веб-сервер в моей компании, большинство хостов сотрудников работают под управлением Windows XP и используют ту же WORKGROUP.
Billyduc
6

Есть несколько способов сделать это как в Windows, так и в Linux. Например,

  1. nslookup : классический способ найти IP-адрес по имени хоста или наоборот.
  2. ipconfig или ifconfig в зависимости от того, работаете ли вы в Windows или Unix
  3. имя хоста -i в Linux

Ссылка: несколько способов получить IP-адрес от имени хоста в Linux и Windows.

SREEDHAR
источник
4

Для пользователей Mac smbutil -v status -ae x.x.x.xработает. Вы также можете использовать, arp -aчтобы получить MAC-адреса для всего в вашей сети.

balupton
источник
1

nmblookup может не работать на хостах Linux, поскольку имя NetBIOS устарело. А в Windows он ограничен локальной сетью.

Arun
источник
2
Нет, это не правильно. Netbios (к сожалению) не является устаревшим и фактически необходим для ряда жизненно важных функций Active Directory.
HopelessN00b
Может кто-нибудь указать, как в каких случаях AD DS по-прежнему полагается на Netbios? Поговаривали, что Netbios должен быть ограничен со времен Windows Server 2003. Требуется ли это сейчас для сетей AD DS Windows Server 2012?
Михаил
К сожалению, да: serverfault.com/questions/676867/…
Массимо