- Перегляд ARP кеша
- Наповнення ARP кеша
- Пакетний bat / cmd файл
- обмеження
- Приклад виконання команд (відео)
- Див. також
Наши партнеры ArtmMisto
Ця стаття розповідає, як дізнатися, який IP адреса має мережеве пристрій з відомим MAC адресою .
Це питання найчастіше виникає для мережевих пристроїв, таких як мережеві принтери або мережеві телекамери. Наприклад, ми підключили мережевий принтер або мережеву телекамеру до мережі з DHCP і хочемо дізнатися IP адресу цього пристрою, але доступу до статистики DHCP сервера немає. Або в ньому заданий статичний IP адреса, але ми не пам'ятаємо, який саме. При цьому ми знаємо MAC адреса (написаний на корпусі). Це питання буває актуальне і для комп'ютерів, особливо до яких немає фізичного доступу.
Консольні команди визначення IP адреси представлені на зображенні, а далі описано, чому команди повинні бути саме такими і як вони працюють, також наведено приклад bat файлу:
Спосіб працює на будь-якому Windows компьтере в мережі і не вимагає адміністративних повноважень. використовується інформація ARP кешу, проводиться читання та пошук потрібного запису.
Перегляд ARP кеша
Командний рядок перегляду ARP кеша з пошуком записи за певним MAC адресою:
arp -a | find / i "01-23-45-67-89-ab"
Але, виконавши цю команду, ми можемо не побачити наше пристрій.
Це відбувається тому, що 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, то:
for / L% a in (1,1,254) do @start / b ping 192.168.1.% a -n 2> nul
Важливо, щоб запуск ping'ов відбувався як do @start / b ping, тоді
- все ping'і запускаються майже одночасно, і час виконання циклу складе всього кілька секунд. Якщо написати просто do ping, тобто без start, то цикл буде виконуватися більше 10 хвилин.
- значок @ перед start запобігає виводу 254 команд ping
Після завершення ping'ов потрібно відразу запускати arp -a. Пауза більше 15 секунд може привести до того, що якісь записи будуть видалені з кешу.
Пакетний bat / cmd файл
Те ж рішення у вигляді командного файлу ip_by_mac.cmd з передачею MAC адреси у вигляді параметра буде виглядати так:
@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"
Відповідно, запускаємо:
ip_by_mac 01-23-45-67-89-ab
і отримуємо:
192.168.1.221 01-23-45-67-89-ab динамічний
обмеження
Спосіб працює тільки для тих вузлів, які відповідають на ping (icmp запити), тобто якщо у комп'ютера icmp echo відключений, то цей командний файл не визначить його IP адреса.
Залишається незручність в тому, що потрібно явно вказувати підмережа, а так само обмеження на підмережа - командний файл працює тільки для мереж 255.255.255.0.
Приклад виконання команд (відео)
Файли для скачування
Цей командний файл, як і інші скрипти, можна скачати за засланні
Див. також
Всі командні файли .
В продовження теми - командний файл / скрипт для будь-яких мереж , Не тільки / 24.