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


84

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

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

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

Ответы:


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-адресу .


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.


4

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


1

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


2
Нет, это не правильно. Netbios (к сожалению) не является устаревшим и фактически необходим для ряда жизненно важных функций Active Directory.
— HopelessN00b

Может кто-нибудь указать, как в каких случаях AD DS по-прежнему полагается на Netbios? Поговаривали, что Netbios должен быть ограничен со времен Windows Server 2003. Требуется ли это сейчас для сетей AD DS Windows Server 2012?
— Михаил

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.