Унификация MAC-адресов

Вопросы, касающиеся установки и настройки всех программ сервера хотспота
Ответить
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Унификация MAC-адресов

Сообщение Dmitry »

Данная информация будет полезна тем, кто одним сервером биллинга обслуживает одновременно роутеры mikrotik и какие-то иные роутеры, перешитые dd-wrt (openwrt) с активированным в них chillispot (coova-chilli). Сама проблема заключается в том, что mikrotik по умолчанию отдает MAC-адреса в формате ХХ:ХХ:ХХ:ХХ:ХХ:ХХ, а chillispot (coova-chilli) - в формате ХХ-ХХ-ХХ-ХХ-ХХ-ХХ. Реально, самому биллингу Easyhotspot безразличен формат, он работает и с тем, и с другим. И различие форматов не было бы проблемой абсолютно, если бы не .... привязка аккаунтов к MAC-адресам. В итоге получается что, допустим, клиент активирует ваучер, подключившись к хотспоту, поднятому на роутере mikrotik, и в базе ваучер привязывается к MAC-адресу формата ХХ:ХХ:ХХ:ХХ:ХХ:ХХ. А позже этот же человек, с этим же устройством пытается подключаться к роутеру с chillispot (coova-chilli). Но этот роутер отдает биллингу MAC-адрес клиента уже в формате ХХ-ХХ-ХХ-ХХ-ХХ-ХХ, и биллинг отказывает клиенту в авторизации, т.к. -адреса (строки ХХ:ХХ:ХХ:ХХ:ХХ:ХХ и ХХ-ХХ-ХХ-ХХ-ХХ-ХХ) с точки зрения процедуры сравнения ДЕЙСТВИТЕЛЬНО разные! Соответственно, и наоборот, активация на chillispot и последующая авторизация на mikrotik дадут точно такой же отрицательный результат...

Способов борьбы с этой проблемой есть два. Для начала рассмотрим "простой". Он заключается в смене формата MAC-адреса, который отдает биллингу mikrotik. Взгляните на рисунок . 8 — "Редактирование профиля сервера хотспота, закладка RADIUS" в инструкции, доступной по ссылке:
http://wifi-hotspot.zp.ua/hotspot_info/ ... otspot.pdf
На рисунке среди прочих параметров присутствует MAC-Format. Вот в этом поле выберите из списка вариант ХХ-ХХ-ХХ-ХХ-ХХ-ХХ и сохраните настройки. В результате mikrotik станет отправлять в биллинг MAC-адрес в формате ХХ-ХХ-ХХ-ХХ-ХХ-ХХ (также, как и chillispot).

Второй способ более сложный. Он заключается в том, что задача "унификации" формата MAC-адресов возлагается непосредственно на сам сервер FreeRADIUS. Информация об этом была найдена на странице документации сервера FreeRADIUS, доступной по адресу:
http://wiki.freeradius.org/guide/Mac-Auth
Вам понадобится отредактировать два файла. Во первых, файл /etc/freeradius/policy.conf. В этом файле в самой последней строке присутствует фигурная скобка - } в самой первой позиции (крайней левой/без всевозможных пробелов или табуляций перед ней). Вот НАД этой скобкой вы должны добавить новый код (да-да, упомянутая скобка должна и остаться самой последней в файле):

Код: Выделить всё

#
# Rewrite called station id attribute into a standard format.
#
rewrite_calling_station_id {
        if (Calling-Station-Id =~ /([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})[-:.]?([0-9a-f]{2})[-:]?([0-9a-f]{2})/i) {
                update request {
                        Calling-Station-Id := "%{tolower:%{1}-%{2}-%{3}-%{4}-%{5}-%{6}}"
                }
        }
        else {
                noop
        }
После этого нужно отредактировать второй файл - /etc/freeradius/sites-available/default. В этом файле вам нужно найти раздел "авторизации", начинающийся строкой "authorize {". А в этом разделе - команду вызова функции preprocess. И под ней добавить еще одну строку и вписать в нее новую команду, вызывающую функцию rewrite_calling_station_id. То есть, в итоге в файле должно получиться вот такое:

Код: Выделить всё

authorize {
  preprocess
  rewrite_calling_station_id
После того, как все изменения внесены и файлы сохранены, нужно перезапустить сам сервер командой:

Код: Выделить всё

service freeradius restart
В результате в биллинг MAC-адреса клиентов будут попадать в одинаковом формате вне зависимости от того, отправлял их mikrotik или же chillispot.
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Унификация MAC-адресов

Сообщение Dmitry »

Уточнение касательно второго способа (редактирования политик), описанного выше

из переписки:
...у меня в том месте, где надо было вставлять функцию рерайта присутствовал еще код с похожим написанием названия функции rewrite.calling_station_id (именно с точкой!!! ) и похожим описанием
Значит разработчики FreeRADIUS уже включили в настройки демона свою аналогичную функцию. Ничто не мешает использовать их вариант. Важен получаемый результат, чтобы mac-адреса приводились к единому виду.

Позже был получен ответ:
В общем маленько допилил и использовал существующие функции в policy.conf, только переводил их в toupper вместо tolower как было у них по-умолчанию.
Попробовали залогиниться - в принципе получилось...
Так что, перед добавлением кода, приведенного мной в первом сообщении темы, проверяйте - если функция уже есть (пусть даже и названная разработчиками немножко иначе), можно использовать ее.
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Унификация MAC-адресов

Сообщение Dmitry »

Устанавливал сегодня дистанционно программу, специально проверил указанный файл (/etc/freeradius/policy.conf). В нем действительно уже присутствует необходимый код (модуль):

Код: Выделить всё

	#  Add "rewrite.calling_station_id" in the "authorize" and "preacct"
	#  sections.
	rewrite.calling_station_id {
		if((Calling-Station-Id) && "%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i) {
			update request {
				Calling-Station-Id := "%{tolower:%{1}-%{2}-%{3}-%{4}-%{5}-%{6}}"
			}
			updated
		}
		else {
			noop
		}
	}

Поэтому, достаточно будет просто добавить вызов функции rewrite.calling_station_id в секцию authorize файла /etc/freeradius/sites-available/default как было сказано в первом посте этой темы, С ТОЙ ЛИШЬ РАЗНИЦЕЙ, ЧТО ВЫЗЫВАТЬ НУЖНО БУДЕТ ФУНКЦИЮ rewrite.calling_station_id а не rewrite_calling_station_id (как написано в первом посте темы)!!!

Установка производилась на Debian 8.5, а вот версию самого FreeRADIUS посмотреть забыл...
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Унификация MAC-адресов

Сообщение Dmitry »

Процедура была добавлена в скрипт-инсталятор. Теперь, если инсталятор находит в файле /etc/freeradius/policy.conf функцию rewrite.calling_station_id, он сам добавляет ее вызов в секцию authorize файла /etc/freeradius/sites-available/default.
sergey29
Сообщения: 5
Зарегистрирован: 09 апр 2021, 03:37
Контактная информация:

Re: Унификация MAC-адресов

Сообщение sergey29 »

есть возможность отвязки ваучера от мак адреса?
sergey29
Сообщения: 5
Зарегистрирован: 09 апр 2021, 03:37
Контактная информация:

Re: Унификация MAC-адресов

Сообщение sergey29 »

то есть чтоб они вообще не привязывались
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Унификация MAC-адресов

Сообщение Dmitry »

есть возможность отвязки ваучера от мак адреса?
...
то есть чтоб они вообще не привязывались
Да, можно. Как это сделать - описано в инструкции «Индивидуализация вашего хотспота», выложенной в разделе «Ссылки» сайта. Раздел так и называется: «Отключение «авто-привязки» ваучера к mac-адресу клиента» (стр. 39).
Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей