ates
-
Публикации
21 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем ates
-
-
Мужики, запилите этот проект уже на каком нибудь github, что бы можно было нормально следить за развитием.
А там уже кто поднятется.
-
На гитхабе нет?
Пока нет, выложу когда соберу готовую систему. Глянь личные сообщения.
-
А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать)..
Видимо только с костыликами типа ISG?
Я сейчас начал рефакторить и переделывать код системы в более правильный вид. Пока кодовая база не большая - легко будет понять что как сделано.
-
Что сейчас реализовано:
1. netspire-core:
* Функции для работы с IP адресами (не все совместимы с IPv6)
* Функции для работы с динамическими модулями, хуками
* Работа с конфиг файлом, логами
* RADIUS сервер (не поддерживает radius-proxy)
* Netflow коллектор (v5, v9)
* Модули аунтификации для радиуса
* PAP
* CHAP
* MSCHAPv2 c MPPE
* Digest (делалось для VoIP SIP)
* EAP-MD5
* Модуль RPC для вызова функций из сторонних приложений (протокол сериализации BERT)
* Модуль IPPool - для выдачи динамических ip адресов и работы с пулами адресов
* Простой RADIUS клиент
2. netspire-iptraffic:
* Управляет сессиями пользователей(create/interim/close) на основе Access-Request, Accounting-Start/Stop от RADIUS
* Поддержка RADIUS accounting
* Принимает netflow поток от коллектора, обсчитывает сумму денег на основе класса трафика
* Работа с классами трафика по след. критериям:
* Время суток
* Дни недели
* Тип протокола и номер порта
* Src/Dst адрес/сети
* Авто подъем сессий случае аварийного завершения биллинга
* Отключения клиентов при отрицательном балансе
3. netspire-postgresql:
* Использует драйвер для postgres (https://github.com/wg/epgsql)
* Пул подключений
4. netspire-modules:
* Модуль для отправки DM сообщения на NAS (используется для отключения клиентов)
* Модуля для выполнения внешней скрипта/программы, тоже используется для отключения клиентов
* Модуля для работы с GeoIP базой
Логика работы реализуется в отдельных модулях, по аналогии с iptraffic, доступ к событиям из ядра системы (netspire-core) через хуки либо через добавления handler модулей (netflow)
Для IPoE нужно будет писано новый dynamic module.
Сейчас система работает в такой конфигурации:
Есть N клиентов, подключаются они по PPP - сервер используется accel-ppp.
Тарифы помегабайтные и безлимитные, установка скоростей через RADIUS атрибуты.
Отключение клиентов посылкой DM на accel-ppp.
В вашем случае модуль для IPoE должен быть не много проще в реализации, так как не обязательно иметь понятие сессий и связаной с сессиями рутины.
-
А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать)..
Видимо только с костыликами типа ISG?
Расскажите как у вас IPoE сделан. Адреса абонентов статические? Привязка по mac/port на свитчах?
Изначально Netspire задумывался как конструктор для написания конкретных систем под конкретные задачи, так как на 100% всем не угодишь.
Поэтому скорее всего придется писать модуль на подобие модуля iptraffic и там закладывать логику работы.
В любом случае, вот мой jid - ates@ipv6.dp.ua, дайти больше информации, я попробую реализовать такой модуль.
-
Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль.
Был бы написан на том же, питоне-php, коммунити бы подтянулось.
Erlang для подобного вида софта отлично подходит.
К тому же, никто ж не говорить что абсолютно все компоненты должны быть написаны на нем, есть моменты когда лучше использовать другой язык и в итоге совместить в готовый продукт.
На питоне-php и так хватает реализаций - это не интересно.
В erlang есть некоторое возможности(горячая замена кода, легкие нити да и весь OTP way в целом), которые как раз для подходят для софта типа биллинг.
-
Оказалось, что мини-вебсервер не выдерживает потока подключений. Переделал с POE.
Патч по сравнению с предыдущей версией: http://dl.dropbox.com/u/12495607/web_auth_v5_to_v6.patch .
Патч для ванильной версии (предпочтительней): http://dl.dropbox.com/u/12495607/web_auth_v6.patch .
Почему бы этот проэкт не разместить где нибудь типа github.com?
-
Добрый день.
Подскажите пожалуйста как общаться с cli консолью accel`ля через tcp ?
В конфиге есть cli tcp 127.0.0.1 2001
на все комманды аналогчные telnet cli получаю
show stat command unknown
echo "show stat" | nc -q1 localhost 2001 uptime: 6.06:33:29 cpu: 0% mem(rss/virt): 1368/77792 kB core: mempool_allocated: 219206 mempool_available: 173370 thread_count: 4 thread_active: 1 context_count: 7 context_sleeping: 0 context_pending: 0 md_handler_count: 13 md_handler_pending: 0 timer_count: 6 timer_pending: 0 ppp: starting: 0 active: 2 finishing: 0 pptp: starting: 0 active: 2 radius: auth sent: 29 auth lost(total/5m/1m): 0/0/0 auth avg query time(5m/1m): 0/0 ms acct sent: 54 acct lost(total/5m/1m): 0/0/0 acct avg query time(5m/1m): 0/0 ms interim sent: 12824 interim lost(total/5m/1m): 0/0/0 interim avg query time(5m/1m): 4/4 ms
-
какой jid то ?Если можешь авторизуй в жаббере, так быстрей будет проверить.ates@ipv6.dp.ua
Вот как у меня получилось схватить core:
и сам core: http://rghost.net/4115585
-
Опубликовано · Изменено пользователем ates · Жалоба на ответ
не знаю, у себя воспроизвести не удаётсяПохоже что то сломалось - accel-ppp стопается после нескольких входов в cli через telnet:Как ты собераешь accel-ppp?
Я если собераю как cmake -DMEMDEBUG=TRUE проблема не проявляется, если без MEMDEBUG - после второго захода по cli - segmentation fault и корка
Если можешь авторизуй в жаббере, так быстрей будет проверить.
-
ates, да спасибо, уже сделал комит
Похоже что то сломалось - accel-ppp стопается после нескольких входов в cli через telnet:
root@vpn-gw:~# ps -ef |grep [a]ccel root 16676 1 0 15:33 ? 00:00:00 /accel-ppp/sbin/accel-pppd -d -c /etc/accel-pptp.conf root@vpn-gw:~# telnet localhost 2000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. accel-ppp version a69ae308efe400d14ecbab676a5e7592908c6b46 accel-ppp# exit Connection closed by foreign host. root@vpn-gw:~# telnet localhost 2000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. accel-ppp version a69ae308efe400d14ecbab676a5e7592908c6b46 accel-ppp# exit Connection closed by foreign host. root@vpn-gw:~# telnet localhost 2000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. root@vpn-gw:~# ps -ef |grep [a]ccel
В логах ничего нет
[2011-01-28 15:33:19]: msg: accel-ppp version a69ae308efe400d14ecbab676a5e7592908c6b46 [2011-01-28 15:33:53]: info: cli: telnet: new connection from 127.0.0.1 [2011-01-28 15:33:56]: info: cli: telnet: new connection from 127.0.0.1 [2011-01-28 15:33:58]: info: cli: telnet: new connection from 127.0.0.1
-
Похоже нужно добавить \r и перед acct sent: и interim sent:
-
Немного сбивается форматирование при show stat (a69ae308efe400d14ecbab676a5e7592908c6b46):
accel-ppp# show stat uptime: 0.00:01:51 cpu: 0% mem(rss/virt): 1116/61268 kB core: mempool_allocated: 132986 mempool_available: 131726 thread_count: 4 thread_active: 1 context_count: 5 context_sleeping: 0 context_pending: 0 md_handler_count: 5 md_handler_pending: 0 timer_count: 1 timer_pending: 0 ppp: starting: 0 active: 0 finishing: 0 pptp: starting: 0 active: 0 radius: auth sent: 0 auth lost(total/5m/1m): 0/0/0 auth avg query time(5m/1m): 0/0 ms acct sent: 0 acct lost(total/5m/1m): 0/0/0 acct avg query time(5m/1m): 0/0 ms interim sent: 0 interim lost(total/5m/1m): 0/0/0 interim avg query time(5m/1m): 0/0 ms accel-ppp#
diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c index b50b525..8a224f3 100644 --- a/accel-pppd/radius/radius.c +++ b/accel-pppd/radius/radius.c @@ -389,7 +389,7 @@ static int show_stat_exec(const char *cmd, char * const *fields, int fields_cnt, cli_sendv(client, " interim sent: %lu\r\n", stat_interim_sent); cli_sendv(client, " interim lost(total/5m/1m): %lu/%lu/%lu\r\n", stat_interim_lost, stat_accm_get_cnt(stat_interim_lost_5m), stat_accm_get_cnt(stat_interim_lost_1m)); - cli_sendv(client, " interim avg query time(5m/1m): %lu/%lu ms\n", + cli_sendv(client, " interim avg query time(5m/1m): %lu/%lu ms\r\n", stat_accm_get_avg(stat_interim_query_5m), stat_accm_get_avg(stat_interim_query_1m)); return CLI_CMD_OK;
-
При компиляции 673bea74d2beb8d4260355f928499230c7ff9b17:
/root/accel-ppp/accel-pppd/radius/stat_accm.c: In function ‘stat_accm_create’: /root/accel-ppp/accel-pppd/radius/stat_accm.c:27: warning: implicit declaration of function ‘malloc’ /root/accel-ppp/accel-pppd/radius/stat_accm.c:27: warning: incompatible implicit declaration of built-in function ‘malloc’
diff --git a/accel-pppd/radius/stat_accm.c b/accel-pppd/radius/stat_accm.c index 9367ceb..8d4ad3d 100644 --- a/accel-pppd/radius/stat_accm.c +++ b/accel-pppd/radius/stat_accm.c @@ -1,4 +1,5 @@ #include <string.h> +#include <stdlib.h> #include "radius_p.h" #include "mempool.h"
-
а почему именно cisco ISG ? типы сообщений то везде одинаковые .
Интересуют какие и в каком виде атрибуты передаются между isg и radius.
Имея эти пакеты смогу их подогнать под себя и эмулировать работу клиента что бы потестировать биллинг.
Но наверно все равно придется с dynamips возится.
-
Здравствуйте,
Если у кого то есть возможность - выложите пожалуйста radius dump между cisco isg и радиус сервером.
Интересует все этапы: access-request, access-response, accounting-start, accounting-interim, accounting-stop
Спасибо.
-
Прошу посмотреть на проект биллинговой системы.
Система модульная, разделена на несколько основных частей:
1. netspire-core - основная часть, включает в себя основные блоки для построения модулей для обслуживание разного рода сервисов:
* RADIUS сервер
* Netflow коллектор (v5 и v9)
* Реализацию основных протоколов аунтификации (PAP, CHAP, MSCHAPv2, Digest)
* RPC модуль
* IPPool модуль
2. netspire-iptraffic - модуль для обслуживания VPN клиентов. Поддерживает тарификацию по src/dst ip, src/dst port, protocol и времени суток.
3. netspire-postgresql - драйвер к postgresql
4. netspire-modules - пока включает только два модуля: для отключения клиентов посылкой DM на NAS и выполнением внешнего скрипта/программы.
Лицензия: GPL. Система написана на языке Erlang. Работает везде где работает Erlang, тестировалась на linux, bsd, osx.
Основная база данных - postgresql, но прикрутить другую довольно легко.
Тут лежат исходники:
https://github.com/ates/netspire-core
https://github.com/ates/netspire-iptraffic
https://github.com/ates/netspire-postgresql
https://github.com/ates/netspire-modules
Документация, сейчас не совсем готова, но кое что есть:
https://github.com/ates/netspire-core/wiki
В данный момент биллинг работает в связке с accel-pptp.
Пытаюсь тестировать на сколько могу.
Если есть у кого то возможность/время потестировать - буду благодарен за сообщения об ошибках.
Пока что нет web интерфейса, но он в процессе.
Если кого то заинтерисует - с радостью помогу с установкой и настройкой. Спасибо.
-
Почему возникла идея делать это в виде отдельного демона вместо плугина для pppd?
-
Добрый день
возможно ли это сделать через bind
Охото статистику видеть по сайтам
PS без прокси естественно
rndc dumpdb -cache
-
Чем сейчас модно собирать и обрабатывать netflow?
Сам присматриваюсь к flow-tools с хранением суммарных данных в mysql. Насчет подбивки статистики пока склоняюсь к самостоятельному написанию. Или есть хорошие готовые обработчики статистики?
Есть фреймфорк на erlang который понимает netflow 5 и 9. Если erlang не пугает - достаточно легко адаптировать под ваши нужды.
Cisco NAT
в Программное обеспечение, биллинг и *unix системы
Опубликовано · Жалоба на ответ
Привет,
Возможно ли с cisco выдернуть информацию: show ip nat translation по SNMP?
То есть хотелось бы получить всю таблицу или возможно как выборочно указать по какому IP фильтровать.
Спасибо