Существует ли быстрый и надежный способ использования MAC-адреса устройства для определения того, подключено ли оно в настоящее время к сети с ПК / сервера Windows? Если нет, то с сервера Ubuntu?
- arp -a не работает сам по себе, так как элементы слишком долго остаются в кеше.
- arp -a в сочетании с очисткой кэша каждые 5 минут может работать, но кажется неэффективным и работает, только если кэш полностью заполняется в течение 5 минут. Будет ли это?
Предыстория: я устал от синхронизации на работе, и поэтому я написал быстрое приложение, которое запускается как служба Windows, периодически проверяет, присутствует ли мой телефон в сети компании, регистрирует это в базе данных, а затем размещает веб-сайт, который позволяет Вы можете посмотреть, когда я был в офисе, суммируя данные за заданный диапазон (удивительно, что вы можете сделать с правильными библиотеками за несколько часов).
Прошло около недели, прежде чем компания решила, что они хотели бы, чтобы все использовали приложение вместо нашей системы часов по возможности.
Первоначально я использовал резервирование DHCP и периодически проверял свой телефон Android, чтобы обнаружить его. Однако при расширении я быстро столкнулся с проблемой, что iPhone не отвечает на пинги. Помимо этого, пинг медленный. Требуется около секунды для каждого телефона, чтобы надежно подтвердить через пинг, что он там.
Я попытался запустить arp -a и пролистать результат для совпадений MAC, но элементы остаются в кэше arp практически бесконечно. Я подумал о том, чтобы прочитать кэш, а затем очистить его, но я не знаю, будет ли он своевременно пополнен. Это потенциальное решение, если оно есть, хотя мне не нравится идея очищать кэш arp каждые пять минут.
Мое текущее решение состоит в том, чтобы провести опрос SNMP на наших точках доступа, чтобы собрать их подключенных клиентов, а затем проанализировать это, чтобы увидеть, могу ли я найти совпадения MAC. Это быстро и надежно, но очень специфично для точек доступа. Если мы отключим точки доступа, то следующие могут не перечислить своих подключенных клиентов через SNMP. Даже если они это сделают, мне нужно перенастроить опросы snmp.
Я думаю, что если есть известный порт, который принимает подключения на любом данном телефоне, я мог бы открыть tcp-соединение с этим и затем закрыть его вместо ping, но я чувствую, что где-то здесь должно быть быстрое решение уровня 2 ,