-
Прошу поделиться соображениями по поводу одной проблемы.
Есть программа, которая определяет MAC-адреса станций по их IP-адресам. MAC определяется двумя способами:
1. Чтением ARP-кеша и поиском там искомого соответствия. По идее, после отправки ICMP-пакета нужному IP-адресу, этот адрес должен появится в ARP-кеше на 2 минуты. Но его там никогда не оказывается :( Именно в локальной сети одного удаленного пользователя.
2. Отправкой ARP-запроса на искомый IP-адрес. Функция SendARP всегда возвращает ошибку 67 - ERROR_BAD_NET_NAME. Т.е. пакет просто не нашел адресата. Хотя пинг на этот IP замечательно идет.
Периодически в ARP-кеше появляются некоторые адреса, которые запрашивались ранее. Но они присутствуют там со статусом INVALID (2). Натолкните на мысль, отчего так ведет себя ARP в сети юзера. Сам он ни бельмес не понимает.
Как я понял, он может с одной тачки пинговать 2 подсети 10.150.x.x и 10.151.x.x
Может что-то с бриджем неверно сделано? Что с него еще спросить для выяснения проблемы? Может настройки сети какие... В общем: МАСТЕРА, HELP!! :)
PS: Все IP-адреса, MAC которых программа пытается определить, пингуются и находятся в локальной коммутируемой сети.
-
> __Алексей__ (07.01.2010 13:47:00) [0]
Если адрес в другой сети, то МАС адреса как правило не будет.
-
Не только в другой сети, сколько в другом физическом сегменте. Запросы ARP не марштуризируются.
-
Дык хоть с одной из подсетей-то должен адресок засветиться в кеше? Если у него 2 подсети, 10.150.x.x и 10.151.x.x , то комп, на котором программа работает, находится в одной из них. IP-адреса, которые она пингует, примерно 50/50 - в своей и чужой подсетке. Значит хотя бы у половины адресов должно ж что-то застрять в кеше?
Может переполнение таблицы? Или ARP протокол не разрешен в сети? На эту мысль натолкнула ошибка SendARP 67 - ERROR_BAD_NET_NAME. Как будто пакет ARP "завернули" и он отрапортовал, что хост не найден.
То, что в кеше нашлось 3 записи с INVALID-статусом можно объяснить Вашими доводами. Как правило INVALID записи могут являться адресами из другой физической сети и иметь вид 00-00-00-00-00-00.
Думаю попросить у юзера полный ARP-кеш после пинга на все адреса. Может он что даст понять...
|