Windows определить ip по mac адресу

Определить IP адрес по MAC адресу

Эта статья рассказывает, как узнать, какой IP адрес имеет сетевое устройство с известным MAC адресом.

Этот вопрос чаще возникает для сетевых устройств, таких как сетевые принтеры или сетевые телекамеры. Например, мы подключили сетевой принтер или сетевую телекамеру к сети с DHCP и хотим узнать IP адрес этого устройства, но доступа к статистике DHCP сервера нет. Или на устройстве задан статический IP адрес, но мы не помним, какой именно. При этом мы знаем MAC адрес (написан на корпусе). Этот вопрос бывает актуален и для компьютеров, особенно к которым нет физического доступа.

Консольные команды определения IP адреса представлены на картинке, а далее описано, почему команды должны быть именно такими и как они работают, также приведён пример bat файла:
Способ работает на любом Windows компьтере в сети и не требует административных полномочий. Используется информация ARP кэша, производится чтение списка и поиск нужной записи.

Просмотр ARP кэша

Командная строка просмотра ARP кэша с поиском записи по определённому MAC адресу:

Но, выполнив эту команду, мы можем не увидеть наше устройство.

Это происходит потому, что ARP кэш в Windows хранит записи от 15 до 45 секунд, начиная с Windows Vista: Address Resolution Protocol (ARP) caching behavior in Windows Vista TCP/IP implementations.

Наполнение ARP кэша

Поэтому перед чтением кэша необходимо заполнить его полным списком узлов сети. Это можно сделать, запустив ping на все узлы сети, например, если у нас сеть 192.168.1.1 / 255.255.255.0, то:

Важно, чтобы запуск ping’ов происходил как do @start /b ping, тогда

  • все ping’и запускаются почти одновременно, и время выполнения цикла составит всего несколько секунд. Если написать просто do ping, т.е. без start, то цикл будет выполняться более 10 минут.
  • значок @ перед start предотвращает вывод 254 команд ping

После завершения ping’ов нужно сразу запускать arp -a. Пауза более 15 секунд может привести к тому, что какие-то записи будут удалены из кэша.

Пакетный bat/cmd файл

То же решение в виде командного файла ip_by_mac.cmd с передачей MAC адреса в виде параметра будет выглядеть так:

Ограничения

Способ работает только для тех узлов, которые отвечают на ping (icmp запросы), т.е. если у компьютера icmp echo отключен, то этот командный файл не определит его IP адрес.

Остается неудобство в том, что требуется явно указывать подсеть, а так же ограничение на подсеть – командный файл работает только для сетей 255.255.255.0.

Пример выполнения команд (видео)

Файлы для скачивания

Этот командный файл, как и другие скрипты, можно скачать по ссылке

Определение IP устройства по MAC-адресу

IP-адрес подключенного сетевого устройства нужен пользователю в той ситуации, когда на него отправляется определенная команда, например, документ для печати на принтер. Помимо этого примеров существует достаточно много, мы не будем перечислять все их. Иногда юзер сталкивается с ситуацией, когда сетевой адрес оборудования для него неизвестен, а на руках имеется лишь физический, то есть MAC-адрес. Тогда нахождение IP осуществляется достаточно просто с помощью стандартных средств операционной системы.

Читайте также:  Установить windows с wim файла

Определяем IP устройства по MAC-адресу

Для выполнения сегодняшней задачи мы воспользуемся только «Командной строкой» Windows и в отдельном случае встроенным приложением «Блокнот». Вам не нужно знать никаких протоколов, параметров или команд, сегодня мы ознакомим вас со всеми ними. От юзера требуется только наличие правильного MAC-адреса подключенного аппарата для произведения дальнейшего поиска.

Приведенные в этой статье инструкции будут максимально полезны только тем, кто ищет IP других устройств, а не своего локального компьютера. Определить MAC родного ПК можно проще. Предлагаем вам ознакомиться с другой статьей по этой теме далее.

Способ 1: Ручной ввод команд

Есть вариант использования скрипта для проведения необходимых манипуляций, однако максимально полезным он будет только в той ситуации, когда определение IP производится большое количество раз. Для одноразового поиска достаточно будет самостоятельно прописать необходимые команды в консоли.

    Откройте приложение «Выполнить», зажав комбинацию клавиш Win + R. Впишите в поле ввода cmd, а затем щелкните на кнопку «ОК».

Считывание IP-адресов будет происходить через кэш, поэтому его сначала нужно наполнить. За это отвечает команда for /L %a in (1,1,254) do @start /b ping 192.168.1.%a -n 2 > nul . Обратите внимание, что сработает она только тогда, когда сетевые настройки являются стандартными, то есть 192.168.1.1 / 255.255.255.0. В противном случае изменению подлежит часть (1,1,254). Вместо 1 и 1 вводятся начальные и конечные значения измененного IP сети, а вместо 254 — установленная маска подсети. Пропечатайте команду, а затем нажмите на клавишу Enter.

Вы запустили скрипт на пропинговку всей сети. За нее отвечает стандартная команда ping, которая сканирует только один указанный адрес. Введенный же скрипт запустит быстрый анализ всех адресов. По завершении сканирования отобразится стандартная строка для дальнейшего ввода.

Теперь следует просмотреть сохраненные в кэше записи с помощью команды arp и аргумента -a. Протокол ARP (Address resolution protocol) показывает соответствие MAC-адресов к IP, выводя все найденные устройства в консоль. Учтите, что после наполнения некоторые записи хранятся не более 15 секунд, поэтому сразу после наполнения кэша запустите сканирование, введя arp -a .

Если список получился слишком длинный или вы хотите целенаправленно найти только одно совпадение, вместо arp -a после наполнения кэша следует ввести команду arp -a | find «01-01-01-01-01-01» , где 01-01-01-01-01-01 — имеющийся MAC-адрес.

Тогда вы получите только один результат, если совпадение будет найдено.

Вот такое простое руководство поможет вам определить IP-адрес сетевого устройства с помощью имеющегося MAC. Рассмотренный способ требует от пользователя ручного ввода каждой команды, что не всегда удобно. Поэтому тем, кому нужно часто производить подобные процедуры, мы советуем ознакомиться со следующим методом.

Способ 2: Создание и запуск скрипта

Для упрощения процесса нахождения мы предлагаем воспользоваться специальным скриптом — набором команд, автоматически запускающихся в консоли. Вам потребуется только создать вручную этот скрипт, запустить его и ввести MAC-адрес.

Читайте также:  Pdf to excel mac os

    На рабочем столе щелкните правой кнопкой мыши и создайте новый текстовый документ.

Откройте его и вставьте туда следующие строки:

@echo off
if «%1» == «» echo no MAC address & exit /b 1
for /L %%a in (1,1,254) do @start /b ping 192.168.1.%%a -n 2 > nul
ping 127.0.0.1 -n 3 > nul
arp -a | find /i «%1»

Мы не будем объяснять значение всех строк, поскольку вы можете ознакомиться с ними в первом способе. Ничего нового здесь не добавлено, только оптимизирован процесс и настроен дальнейший ввод физического адреса. После ввода скрипта через меню «Файл» выберите пункт «Сохранить как».

Задайте файлу произвольное название, например Find_mac, и после названия допишите .cmd , выбрав в поле ниже тип файла «Все файлы». В итоге должно получиться Find_mac.cmd . Сохраните скрипт на рабочем столе.

Сохраненный файл на десктопе будет выглядеть так:

Запустите «Командную строку» и перетащите туда скрипт.

Его адрес добавится в строку, а значит объект успешно загружен.

Нажмите Пробел и впишите MAC-адрес в таком формате, как указано на скриншоте ниже, а затем нажмите на клавишу Enter.

Пройдет несколько секунд и вы увидите результат.

Предлагаем вам ознакомиться с другими методами поиска IP-адресов различных сетевых устройств в отдельных наших материалах по следующим ссылкам. Там представлены только те способы, которые не требуют знания физического адреса или дополнительной информации.

Если поиск двумя приведенными вариантами не принес никакого результата, внимательно перепроверьте вводимый MAC, а при использовании первого способа не забывайте, что некоторые записи в кэше хранятся не более 15 секунд.

IP адрес по MAC адресу для любых сетей

В продолжение темы определения IP адреса по MAC адресу: возникла задача в Windows узнать IP адрес одного старого принтера, который подключен к сети 10.151.96.0/255.255.248.0, получает динамический адрес от DHCP сервера, но не регистрируется в DNS. Доступа к статистике DHCP сервера нет.

На самом деле, такая задача часто возникает и для других сетевых устройств, таких как IP видеокамеры, разные IP контроллеры.

Командный файл определения IP адреса позволяет просто и быстро узнать IP компьютера или того же принтера, но только в сетях с маской /24 (или 255.255.255.0).

Идея нового скрипта та же, что и в командном файле для сетей /24 – скрипт пингует все IP адреса, возможные в данной сети, затем проверяет кэш arp.

Поэтому задача разделяется на две части:

  • определение списка всех IP адресов данной сети,
  • пинг с последующей проверкой кэша arp.

Определение списка IP адресов

делаем через WMI на основе скрипта Считать сетевую конфигурацию. Скрипт определяет адрес подсети, число узлов и выводит все IP адреса, кроме адреса сети и широковещательного адреса. Первая редакция скрипта определяла узлы только для одного сетевого интерфейса, теперь добавлено определение узлов для нескольких интерфейсов (всех, кроме виртуальных).

Например, команда cscript.exe //nologo list_hosts.js выводит для сети 10.151.96.0/255.255.248.0 список из 2046 узлов:

Опрос узлов сети

делаем в командном файле (так проще). Скрипт list_hosts.js должен находиться в том же каталоге:

Читайте также:  Linux arp cache time

MAC адрес передаётся в виде аргумента:

В этом командном файле проверка узлов выполняется «партиями» по 100 штук, т.е. командный файл запускает пинг по ста узлам, ждёт 5 секунд, проверяет кэш arp и, если запись найдена, выходит из цикла.

Такой подход несколько позволяет опрашивать большое количество узлов (например, сеть /21 может включать до 2046 узлов), не нагружая компьютер – по сравнению с предыдущим вариантом командного файла, в котором все процессы ping запускались одновременно.

Скачать этот и другие скрипты.

Как проверить работу скрипта

Чтобы проверить работу скрипта, можно использовать любой узел с известным IP. Допустим, это 10.151.96.5

Определяем MAC адрес с помощью ping и arp:

Итак, тестовый узел имеет IP 10.151.96.5 и MAC 6c-9c-ed-ba-e7-d0.

Делаем паузу и проверяем, что запись об этом узле удалена из кэша arp:

Запускаем командный файл:

Если узел будет найден, то вывод будет такой:

Если вывод пустой, т.е. запись узла не найдена, то можно проверить список узлов, используемый скриптом:

Как узнать IP, зная MAC

Все команды необходимо выполнять от лица супер-пользователя. Начнем с установки программы arp-scan — она есть в репозиториях практически любого дистрибутива Linux. Именно она позволяет определить IP адреса устройств в сети по их MAC адресам. Для Debian-base дистрибутивов (Ubuntu, Mint. ) команда будет звучать так:

apt-get install arp-scan

Если же вы пользователь дистрибутивов ветки Red Hat (Centos, Fedora. ) выполните:

yum install arp-scan

Немного о том, как работает утилита. Она использует функции протокола ARP, который выполняет обратное действие — позволяет узнать MAC необходимого IP, широковещательно (каждому узлу сети) рассылая запрос содержания: «У кого такой IP — пришлите мне свой MAC». И узел с совпавшим IP отвечает: «Это я, а это мой MAC».

В нашем случае мы знаем MAC, поэтому широковещательная рассылка не требуется, а вот IP не знаем — будем перебирать их из заданного диапазона адресов, или всей нашей сети. Рано или поздно IP совпадет и узел ответит тем же сообщением.

arp-scan -T aa:20:5c:64:71:bf 192.168.1.0/24 | grep aa:20:5c:64:71:bf

В данном примере сообщения будут отправлены узлу с MAC-адресом aa:20:5c:64:71:bf, для перебора будет использована сеть 192.168.1.0/24. /24 — это маска подсети, указывающая на диапазон перебираемых IP адресов: 192.168.1.1-192.168.1.254. Диапазон можно указывать и в таком формате. GREP в конце команды позволяет отфильтровать вывод только для данного MAC адреса. Это связано с тем, что если ваш коммутатор еще не успел «обучиться» данному MAC адерсу, он разошлет сообщения широковещательно (всем узлам), и некоторые узлы с совпавшем IP адресом из диапазона перебираемых адресов могут решить, что это сообщение им, и подзасорят вывод нашей команды.

Помимо вышеописанной задачи — «Узнать IP по MAC адресу», данная утилита используется для составления списка IP адресов сети в связке с их MAC адресами. В этом случае MAC адрес узла через ключ «-T» указывать не нужно — пускай сообщения идут всем узлам сети широковещательно:

Вывод команды будет содержать список всех узлов с IP из указанного диапазона и их MAC-адреса

Оцените статью