25-12-2022 10:10 про в
Вдруг кому пригодится.
Преамбула.
Работаю в добывающей конторе. Месторождения разбросаны на приличном расстоянии. Работодатель выделил канал в 50 Мбит для использования под нужды работников.
Изначально задача стояла всех подключить по WIFI, с минимальными затратами на обслуживание. Т.е. никакого биллинга.
Повсеместно развернули Wifi через CAPsMAN.
В итоге получилось примерно 120 Remote CAP. И около 1000 уникальных устройств в сутки.
Конечные пользователи в течении дня могут мигрировать из одного места в другое.
Т.к. канал не толстый и качальщики есть в любой сетке то, все тонкости отрегулировали возможностями микротика и там где возможности ограничены скриптами.
Сама история.
Одно из ограничений суточный лимит трафика.
Но он легко обходился рэндомизацией мак адреса на конечном устройстве.
Как победили рэндомизацию. Путь был такой. Сперва вычислили, что все рэндомные мак адреса фейковые.
Это обозначает что они отсутствуют в таблице выданных мак адресов для вендоров.
Т.е. задача свелась к определению, есть ли мак адрес устройства в таблице выданных маков.
Тут и начались сложности, т.к. выданных диапазонов более 30 000, и они постоянно пополняются.
Было очень много вариантов реализации такой фильтрации, и все они были довольно либо громоздкими либо невозможны для реализации в ROS в виду ограничений самой ОС.
Одним из вариантов было построение бинарного дерева маков, для уменьшения размеров таблицы поиска.
И о чудо, оказалось, что достаточно изучить первый октет мак адреса и найти закономерность.
В результате всего 8 правил access листа позволят отделять рэндомные мак адреса от реальных.