Перейти к содержимому
Калькуляторы

Собралось, запускаеться, работает.

Непонятно следующее:

> ./ISG.pl
User IP-address NAT IP-address  Port number   Uniq. Identifier Durat.  Octets-in  Octets-out Rate-in    Rate-out   Service name     Flags
10.128.1.104    0.0.0.0         Virtual1      BCE2ADC58358E36A 4689    27360      25560      0          0          Undefined        A

 

Почему Rate-in, Rate-out, Service name пустые? Где-то чего-то недонастроено, или это нормально?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему Rate-in, Rate-out, Service name пустые? Где-то чего-то недонастроено, или это нормально?

А Вы их передавали? :) Они из Radius Accept приходят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Почему Rate-in, Rate-out, Service name пустые? Где-то чего-то недонастроено, или это нормально?
А Вы их передавали? :) Они из Radius Accept приходят.

 

В радиусе есть запись вроде такой:

10.128.1.104    Cleartext-Password := "10.128.1.104"
        Auth-Type := Local,
        Cisco-Account-Info=ATESTSERV2

 

Сервис запускаеться для сессии (ISGd.pl об этом сообщает), трафик полисится соответственно заданному сервису. Тока в списке сессий не кажет (

Че-то я недопонимаю видимо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано.

Скорость в Class=, сервис в Cisco-Account-Info = согласно ридми. По крайней мере сервис то должен был показываться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано.

Скорость в Class=, сервис в Cisco-Account-Info = согласно ридми. По крайней мере сервис то должен был показываться.

А в конфиге такой сервис существует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано.

Скорость в Class=, сервис в Cisco-Account-Info = согласно ридми. По крайней мере сервис то должен был показываться.

А в конфиге такой сервис существует?

Существует. Чтоб не быть голословным:

### Begin ``TESTSERV2'' service ###

## Format for download and upload rates: "rate;normal burst" (in bit/s)
## Use zero values (0;0) for no rate limit
$cfg{srv}{TESTSERV2}{download_rate} = "1000000;1500000";
$cfg{srv}{TESTSERV2}{upload_rate}   = "1000000;1500000";

## Traffic classes list for this service (as defined in tc.conf file)
$cfg{srv}{TESTSERV2}{traffic_classes} = [ "ALL_OTHER" ];

## Don't send RADIUS accounting for this service (default is to send)
#$cfg{srv}{TESTSERV2}{no_accounting} = 1;

$cfg{srv}{TESTSERV2}{alive_interval} = 120;   ## Equals to $cfg{session_alive_interval} if not defined
$cfg{srv}{TESTSERV2}{idle_timeout}   = 600;   ## Equals to $cfg{session_idle_timeout} if not defined
$cfg{srv}{TESTSERV2}{max_duration}   = 10000; ## Equals to $cfg{session_max_duration} if not defined

### End ``TESTSERV2'' service ###

 

Кроме того ISGd.pl пишет такое:

 

Session '10.128.1.104' on 'Virtual1' accepted by '192.168.0.3:1812'
Service 'TESTSERV2' for '10.128.1.104' started

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Видимо вопрос снимаеться.

Если спрашивать ISG.pl show_services Virtual# - показывает всю правду)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно не очень по теме, но ктонибудь пытался все это дело завязать на DHCP сервер с opt82, который бы динамически раздавал адреса и прописывал бы в биллинг у какого клиента какой серый ип исходя из opt82.

А lISG мог бы авторизовывать и выпускать через нат руководствуясь активностью по DHCP, а не по трафику от клиента.

Есть ли подобный опыт?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тут надо реализовать такую схему

DHCP запрос от клиента

LISG ловит этот запрос выступая скажем релеем/прокси DHCP

LISG отправляет Radius auth запрос на биллинг

LISG получив ответ от Радиуса выдает IP клиенту и отправляет radius acct с параметрами клиента (IP, MAC, opt82 И т.п.)

Радиус с биллингом сами решают что им делать с этим acct

Только вот реализация такого модуля по сложности наверное будет похлеще чем сам LISG :)

Да и Умника нет, а так взяться больше некому.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А ктонибудь пробовал использовать freeradius как dhcp сервер в продакшне? Ато там поддержка какбы есть, но уже хз сколько времени экспериментальная. )

Я вот в настройке этой фичи не совсем понимаю, выходит можно заюзать как DHCP сервер, но в этоже время обработка запросов должна быть локально на тойже машине через rlm_perl/python and etc. Может кто подскажет как сделать чтобы freeradius_dhcp сервер пересылал запросы уже по радиус протоколу на другой радиус сервер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу DHCP читайте тред с самого начала, это уже обсуждалось

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, смотрел, но никакого решения на сколько я понял небыло, думал может уже что-то наработали за это время.

 

В принципе если подумать, то к DHCP в FreeRADIUS прикручивается rlm_perl, который уже в свою очередь общается с lISG, при запросе от клиента, freeradius_dhcp передает в lisg его mac/vlan/port, lisg в свою очередь через радиус ломится в биллинг, получает ответ с внутренним ипшником, временем лизы, внешним ипом и идентом сессии, дальше lisg поднимает сессию по имеющимся данным и возвращает в freeradius_dhcp внутренний ипшник клиента.

Так наверное будет проще, чем интегрировать DHCP сервер в lISG.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Тут надо реализовать такую схему

DHCP запрос от клиента

LISG ловит этот запрос выступая скажем релеем/прокси DHCP

LISG отправляет Radius auth запрос на биллинг

LISG получив ответ от Радиуса выдает IP клиенту и отправляет radius acct с параметрами клиента (IP, MAC, opt82 И т.п.)

Неверно.

lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать.

DHCP-сервер должен быть отдельным.

Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее.

 

Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Неверно.

lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать.

DHCP-сервер должен быть отдельным.

Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее.

 

Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю.

Есть вот такой (сырой) вариант. В двух словах - ISG являеться dhcp-релеем, в радиусе авторизуеться не по ip а по opt82.

diff.txt

Изменено пользователем e-AI

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А ктонибудь пробовал использовать freeradius как dhcp сервер в продакшне? Ато там поддержка какбы есть, но уже хз сколько времени экспериментальная. )

Я вот в настройке этой фичи не совсем понимаю, выходит можно заюзать как DHCP сервер, но в этоже время обработка запросов должна быть локально на тойже машине через rlm_perl/python and etc. Может кто подскажет как сделать чтобы freeradius_dhcp сервер пересылал запросы уже по радиус протоколу на другой радиус сервер?

Да, я на freeradius+rlm_perl поднял дхсп для lISG

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас занимаюсь внедрением, все хорошо, но столкнулись с одной проблемой:

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

Тут же так не сделать, т.е. каждый айпи шейпится сам по себе.

Отсюда вопрос, возможно ли реализовать "связь" между сессиями одного договора, допустим передавая в радиус ответе UID абонента или номер договора, в общем некий связывающий идентификатор. и в ядре они уже объединялись... ??

 

Грубо говоря шас так:

Шейпер на 12700Kbit:

class htb 1:4820 root prio 5 quantum 158750 rate 12700Kbit ceil 12700Kbit burst 1597b/8 mpu 0b overhead 0b cburst 1597b/8 mpu 0b overhead 0b level 0
Sent 591 bytes 8 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 8 borrowed: 0 giants: 0
tokens: 940 ctokens: 940

iptables:

-A shaping_15_in -d 10.0.58.171/32 -j CLASSIFY --set-class 0001:4820
-A shaping_15_in -d 10.0.58.164/32 -j CLASSIFY --set-class 0001:4820
...

 

 

В итоге что-бы от этого избавится хотелось бы что-то вроде этого:

При запросе сессии с IP 10.0.58.171

'Acct-Interim-Interval': 100,
'Idle-Timeout': 1000,
'Class': '12700/5000',
'Framed-IP-Address': '91.100.100.101'
'Classify-Class': '4820'

 

При запросе сессии с IP 10.0.58.164

'Acct-Interim-Interval': 100,
'Idle-Timeout': 1000,
'Class': '12700/5000',
'Framed-IP-Address': '91.100.100.102'
'Classify-Class': '4820'

 

где 4820 ID договора.

Изменено пользователем KotikBSd

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, я на freeradius+rlm_perl поднял дхсп для lISG

Как у него дела со стабильностью? Ато строчка experimental пугает )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Неверно.

lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать.

DHCP-сервер должен быть отдельным.

Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее.

 

Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю.

Есть вот такой (сырой) вариант. В двух словах - ISG являеться dhcp-релеем, в радиусе авторизуеться не по ip а по opt82.

Спасибо, дернул ф-цию разбора option 82 :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да, я на freeradius+rlm_perl поднял дхсп для lISG
Как у него дела со стабильностью? Ато строчка experimental пугает )

Меня тоже пугала, но, тфу-тфу-тфу, два месяца трудится без единого сбоя =) Там больше вероятности, что в своём коде косяк допустишь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А у всех ли работа завершение сессии по таймауту? Я тут у себя заметил случаи, когда при выключении машины вечером сессия висит до утра, в конфиге $cfg{session_idle_timeout} = 1800;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

EvilShadow, уже обсуждалось. Свелось к следующему:

RADIUS использует атрибуты Session-Timeout и/или Idle-Timeout?

Точно стояло radius_default_session_timeout=65000. поставил на 180. сейчас проверю. Все точно, теперь нормально!. Спасибо!

 

Пора составить небольшой FAQ

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

SNeon, спасибо за ответ, но проблема в другом.

Никаких таймаутов радиус не отдаёт, используется только опция session_idle_timeout из конфига ISGd. Счётчики трафика не растут, но сессия не рвётся.

Wingman, какую ревизию используете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А у всех ли работа завершение сессии по таймауту? Я тут у себя заметил случаи, когда при выключении машины вечером сессия висит до утра, в конфиге $cfg{session_idle_timeout} = 1800;

### Session inactivity default timeout (disconnect session after this time) (in seconds)

$cfg{session_idle_timeout} = 1800;

 

### Session default maximum duration (end session after this time) (in seconds)

$cfg{session_max_duration} = 86400;

 

Судя по комментам с сессиями в этих 2 случаях происходят разные вещи. После session_max_duration секунд сессия завершается, т.е. в списке ее больше нет. При не активности session_idle_timeout секунд сессия "disconnect " :)

Не совсем понял от чего, но выглядит это так:

 

Сессия активна
User IP-address NAT IP-address  Port number   Uniq. Identifier Durat.  Octets-in  Octets-out Rate-in    Rate-out   Service name     Flags
10.128.1.150    0.0.0.0         Virtual1      1CC92EF5642C4533 69      420        420        1000000    1000000    TESTSERV2        SOU  

Сессия "disconnected"
User IP-address NAT IP-address  Port number   Uniq. Identifier Durat.  Octets-in  Octets-out Rate-in    Rate-out   Service name     Flags
10.128.1.150    0.0.0.0         Virtual1      5F66DE790FFEE324 0       0          0          1000000    1000000    TESTSERV2        SO

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас