Stargazer – Система Авторизации и Биллинга
05.06.2002 | khomya

Вообще очень многие идеи при создании были навеяны системой авторизации которую доработывал.

В начале, я думал поступить так же…
Имеется ИП адрес, он выступает в роли логина и есть пароль. Пользователь логинится и мы уверены (в некоторой степени :), что если кто-то ходит в инете с таким-то ИП, то это определенный человек а не кто-то другой. И мы можем считать траффик для этого ИП, предполагая, что мы считаем трафик для этого пользователя а не кого-то другого.

Однако потом я решил добавить традиционный логин. Т.е. получилась связка логин, пароль, ИП. В данном случае она избыточна, но пригодиться в будущем, когда я буду делать один логин на несколько ИП адресов или наоборот, несколько логинов на один ИП адрес. Т.е. первый случай это если есть человек и у него несколько компов или он хочет логиниться из разных мест. Второй случай может пригодиться если, скажем, на один комп два брата-акробата, которые не могут мирно поделить инет. Тогда на каждого заводится по логину и они мирно живут.

Проблемой оказался выбор базы данных. Я предполагал сделать биллинг в связке с Postgres, однако потом пришел к такому выводу: система должна быть самодостаточной. Т.е. она не должна заисеть от наличия на сервере каких-либо баз данных, сервисов и т.д. Поэтому база данных оказалась в виде дерева каталогов и файликов. (Идею навеял squid, его база устроена по такому же принципу).

Примерно по тем-же соображениям я отказался от веб-интерфейса для администрирования. Это породило кучу проблем при программировании, но за то, надеюсь, стало проще в установке и администрировании. Веб статистика уже есть, это немного компенсирует отсутствие веб-интерфейса.

Основные функции

1. Подсчет трафика по 4-м заданным направлениям. Есть так же 5-е направление, по которому трафик игнорируется. Т.е. все что попало под это направление просто игнорируется. Задаются правила достаточно просто. Это файл, каждая строка которого содержит имя протокола, ИП адрес(а) и порт(ы) (необязательно) и имя направления. По этому файлу и формируется правила для подсчета. С помощью них можно определить традиционные внутренний, городской и мировой трафики, а также еще один для нетрадиционных случаев.

2. Авторизация. Пользователь не получит инет, пока не залогинится. Хотя можно настрить так, что трафик будет считаться все время, независоми от того пользователь залогинился или нет. Это можно использовать совметсно с авторизацией по МАС адресу. Т.е. авторизация по МАС, а подсчет трафика – Stargazer. Также я сейчас делаю возможность использовать Stargazer вместе с VPN, т.е. авторизация - VPN, а подсчет трафика – Stargazer

Рис.1. Окошко авторизатора (версия для Linux)

Рис.1. Окошко авторизатора (версия для Linux)

3. Управление пользователями.

Для этого используется конфигуратор.
Он позволяет добавлять-удалять-редактировать пользователей, смотреть кто сколько скачал. Отображать дополнительную информацию, вроде телефона пользователя и его адреса.

Рис.2. Основное окошко конфигуратора.

Рис.2. Основное окошко конфигуратора.

Рис.3. Вот окошко редактирования данных пользователя.

Рис.3. Вот окошко редактирования данных пользователя.

Полезности.

Сервер ведет логи по всем пользователям: кто, когда и сколько скачал. Наличие такой информации сильно упрощает разборки с клиентами. В планах сделать фиксацию МАС адреса подключившегося пользователя, т.е. что бы в логах, том месте где отмечается момент вхождения в сеть, фиксировался МАС адрес подключившегося пользователя.

Еще, наверное, будут графики загрузки канала пользователями по всем направлениям, суммарно всеми пользователями и т.д.

Тарифные планы.

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

Рис.4. Вот таким предполагает быть редактор тарифных планов

Рис.4. Вот таким предполагает быть редактор тарифных планов

Платформа и требования к железу.

Сейчас сервер есть под Линукс, работает на ядрах 2.2.х и 2.4.х, буду делать и под FreeBSD. Требования к железу зависят от числа пользователей. Я тестил на 10 пользователях и 10 Мб сетке, загрузка 200МГц проца была около 10% при полной загрузке сети. При больших кол-вах пользователей нагрузка, наверное будет выше. Расход памяти практически не зависит от числа пользователей в системе. Он составляет примерно 11М. Это с учетом того, что сервер резервирует место в памяти для 1000 пользователей. В принципе можно будет сделать макс. число пользователей регулируемым, тогда и расход памяти будет зависеть от числа пользователей.

Требуемый уровень знаний админа устанавливающего систему.

Для того что бы настроить Stargazera, нужны знания о том какая топология в сети. Настроить правила для подсчета направлений достаточно просто. Единственное что может вызвать затруднение, это то, что писать в скрипты которые производят изменение файрволла. Я не сделал учет ограничений по трафику и подсчет денег напрямую в программе, но эти скрипты сделаны так, что все это можно организовать.

Скриптам при запуске передается ряд параметров, в том числе сколько байт перекачано по каждому направлени. А внутри скрипта с этими данными можно делать все что угодно, хоть обращатся к MySQL или PostgreSQL, выбирать сколько денег осталось у пользователя и разрешать ему инет или нет. В общем тут, что фантазия подскажет.

В простейшем варианте в скрипте которй вызывается при подключении должна добавляться пара правил в файрвол которые разрешат ходить в инет, а в том скрипте который вызывается при отключении пользователя, убирать эти правила. Ну и, естественно, требуется знать IP адреса соответствующие вашей сети и тем ресурсам, которые составляют городские ресурсы.

Сайт Stargazer

Автор: stg-34

Просмотров новости: 1 099  <, >


-->