ARP и с чем его едят
Сам по себе протокол ARP — простой. Но создает много проблем ;) Перед каждым пакетом, посланным в сеть отсылать ARP-запрос — это роскошь. Поэтому создаётся ARP кэш. На какое-то время в этот кэш сохраняется пара IP+MAC, определённая средствами ARP протокола.
Раньше в bercut-et эта запись имела время жизни 9 минут. Поэтому, когда пользователь переходил из одной в другую сеть, где такие же IP-адреса, но MACи (естественно) другие, у него начинались проблемы: в кэше слишком долго хранились записи. Ситуация, конечно, встречается не часто, но всё же допустима.
в rfc826 предложено несколько способов, которые могут решить эту проблему. например, предлагается по любому принимаемому пакету обновлять ARP-кэш. также можно обновлять ARP-таблицу по любому ARP-запросу, который гуляет по сети (ARP запрос посылается широковещательно и содержит IP & MAC источника). кроме того, протоколы прикладного уровня могут инициировать обновление ARP-кэша по своим критериям. последнее — наиболее эффективно.
мы же пока поступили просто: уменьшили время жизни каждой записи до 1 минуты и при падении линка стираем кэш полностью. этого вполне достаточно для карманного тестера.
в unix-like системах есть возможность удаления записи из arp-таблицы. реализация такой фичи у нас уже в код не влезает, как я понимаю?
кода у нас действительно мало осталось…
да и так ли это нужно.
пока пользователь будет удалять запись, придёт время её удалить автоматически, поскольку она постареет ;)
тоже верно. никогда не понадобится. как обычно ;)
Т.е. по любому встречному-поперечному ARP-запросу/ответу кэш не обновляется, как я понял. Понятно, что это лажа по производительности.
Однако это может быть и ценной фичей — сделать вручную включаемый режим ARP-сниффинга, чтобы можно было при присоединении к новой сети подсмотреть, какие IP в ней бегают. Как вариант, с фильтрацией по VID-у.
Был бы трекер, обязательно бы повесил FR :-)
сделал тестовый образец.
тут же узнал, кто есть кто в нашей сетке ;)
осталось оформить покрасивее
окошко сделать и т.п.
Ждём в свежих прошивках. Спасибо!
Вот такая штука получилась.
При входе в это окно включается режим ARP Promisc, то есть
все ARP’ы, гуляющие по сетке принимаются прибором и информация об
отправителе сохраняется в кэш. А содержимое кэша выводится в виде списка.
Включено в 0.2.45 релиз. Сейчас тестируется.
VID игнорируется? К dot1Q-транку цепляться можно?
нет. VLAN ID не игнорируется. Будут отслежены только те ARP-запросы которые находятся в VLAN сети, настроенной в параметрах интерфейсов.
promisc относится только к IP-адресам. То есть в ARP promisc режиме мы принимаем все ARP-пакеты, адресованные не нам (и нам тоже).
Понятно.
Но Vlan promisc это тоже интересно. Иногда не знаешь, какие вланы бегают по шнурку и тут тестер для разборок был бы очень кстати.
не всё сразу ;)
пока только ARP promisc
кстати, он доступен, начиная с версии 0.2.45-7