1

Я хотел бы иметь возможность подключить Raspberry Pi к сети компании через Ethernet и узнать его IP-адрес с помощью ARP. Я хотел бы иметь возможность сделать это на компьютерах Windows и * nix.

Однако после того, как я первоначально подключил RPi к сети, я не могу найти его в таблице ARP, используя arp -a (по крайней мере, в Windows 7). Если я подключу RPi к монитору и использую ifconfig чтобы найти его адрес в сети, я вижу, что он использует адрес, которого нет в таблице ARP.

Если я тогда попытаюсь подключиться к RPI, используя адрес, который я нашел из ifconfig , соединение установится успешно. После этого RPi появится в таблице ARP по этому адресу.

У меня ограниченные знания ARP. Может кто-нибудь объяснить, в чем причина этого, и если есть способ, которым я могу либо заставить RPi надежно отображаться в таблице ARP после подключения к сети, либо заставить его показываться с помощью своего рода сканирования. Как указано выше, мне нужно решение, которое работает как для Windows, так и для * nix машин.

2 ответа2

2

Таблицы ARP на ПК не будут содержать список всех устройств в сети.

Он показывает только IP-адрес и MAC- адрес устройств, с которыми ваш компьютер недавно имел связь.

Если ваша Windows 7 пассивно и не взаимодействует с любым другим устройством в сети, таблица ARP будет пустой.

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

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

1

Чтобы заполнить кэш arp из windows локальной подсетью, вам не нужны сторонние инструменты,
небольшой партии должно хватить:

:: FindActivePIsInSubNet.cmd
@Echo off
Set "SubNet=172.16.1"
Set "PiMac=b8-27-eb"
Set "Ping=ping.exe -n 1 -l 0 -f -i 2 -w 1 -4"
For /L %%A in (1,1,254) do Start /HIGH /B %Ping% %SubNet%.%%A >nul 2>&1
For /F "tokens=1,2" %%A in ('arp -a^|findstr /i %PiMac%') do Echo IP=%%A MAC=%%B

Это займет всего несколько секунд, чтобы бежать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .