e-AI Опубликовано 21 декабря, 2010 · Жалоба Собралось, запускаеться, работает. Непонятно следующее: > ./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 пустые? Где-то чего-то недонастроено, или это нормально? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 21 декабря, 2010 · Жалоба Почему Rate-in, Rate-out, Service name пустые? Где-то чего-то недонастроено, или это нормально? А Вы их передавали? :) Они из Radius Accept приходят. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 21 декабря, 2010 · Жалоба Почему 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 об этом сообщает), трафик полисится соответственно заданному сервису. Тока в списке сессий не кажет ( Че-то я недопонимаю видимо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 21 декабря, 2010 · Жалоба Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 21 декабря, 2010 · Жалоба Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано. Скорость в Class=, сервис в Cisco-Account-Info = согласно ридми. По крайней мере сервис то должен был показываться. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 21 декабря, 2010 · Жалоба Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как Class=9999/8888, либо как Class=SomeClass, SomeClass должен быть в конфиге с классами описан. Во втором случае у Вас как раз и будет в выводе всё это сказано. Скорость в Class=, сервис в Cisco-Account-Info = согласно ридми. По крайней мере сервис то должен был показываться. А в конфиге такой сервис существует? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 21 декабря, 2010 · Жалоба Если не ошибаюсь (точно не помню, где-то тут было) - скорость передается либо как 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 22 декабря, 2010 · Жалоба Видимо вопрос снимаеться. Если спрашивать ISG.pl show_services Virtual# - показывает всю правду) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GloooM Опубликовано 23 декабря, 2010 · Жалоба Возможно не очень по теме, но ктонибудь пытался все это дело завязать на DHCP сервер с opt82, который бы динамически раздавал адреса и прописывал бы в биллинг у какого клиента какой серый ип исходя из opt82. А lISG мог бы авторизовывать и выпускать через нат руководствуясь активностью по DHCP, а не по трафику от клиента. Есть ли подобный опыт? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 23 декабря, 2010 · Жалоба Тут надо реализовать такую схему DHCP запрос от клиента LISG ловит этот запрос выступая скажем релеем/прокси DHCP LISG отправляет Radius auth запрос на биллинг LISG получив ответ от Радиуса выдает IP клиенту и отправляет radius acct с параметрами клиента (IP, MAC, opt82 И т.п.) Радиус с биллингом сами решают что им делать с этим acct Только вот реализация такого модуля по сложности наверное будет похлеще чем сам LISG :) Да и Умника нет, а так взяться больше некому. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GloooM Опубликовано 23 декабря, 2010 · Жалоба А ктонибудь пробовал использовать freeradius как dhcp сервер в продакшне? Ато там поддержка какбы есть, но уже хз сколько времени экспериментальная. ) Я вот в настройке этой фичи не совсем понимаю, выходит можно заюзать как DHCP сервер, но в этоже время обработка запросов должна быть локально на тойже машине через rlm_perl/python and etc. Может кто подскажет как сделать чтобы freeradius_dhcp сервер пересылал запросы уже по радиус протоколу на другой радиус сервер? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 23 декабря, 2010 · Жалоба По поводу DHCP читайте тред с самого начала, это уже обсуждалось Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GloooM Опубликовано 23 декабря, 2010 · Жалоба Да, смотрел, но никакого решения на сколько я понял небыло, думал может уже что-то наработали за это время. В принципе если подумать, то к DHCP в FreeRADIUS прикручивается rlm_perl, который уже в свою очередь общается с lISG, при запросе от клиента, freeradius_dhcp передает в lisg его mac/vlan/port, lisg в свою очередь через радиус ломится в биллинг, получает ответ с внутренним ипшником, временем лизы, внешним ипом и идентом сессии, дальше lisg поднимает сессию по имеющимся данным и возвращает в freeradius_dhcp внутренний ипшник клиента. Так наверное будет проще, чем интегрировать DHCP сервер в lISG. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 23 декабря, 2010 · Жалоба Тут надо реализовать такую схемуDHCP запрос от клиента LISG ловит этот запрос выступая скажем релеем/прокси DHCP LISG отправляет Radius auth запрос на биллинг LISG получив ответ от Радиуса выдает IP клиенту и отправляет radius acct с параметрами клиента (IP, MAC, opt82 И т.п.) Неверно.lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать. DHCP-сервер должен быть отдельным. Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее. Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 23 декабря, 2010 (изменено) · Жалоба Неверно.lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать. DHCP-сервер должен быть отдельным. Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее. Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю. Есть вот такой (сырой) вариант. В двух словах - ISG являеться dhcp-релеем, в радиусе авторизуеться не по ip а по opt82. diff.txt Изменено 23 декабря, 2010 пользователем e-AI Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 23 декабря, 2010 · Жалоба А ктонибудь пробовал использовать freeradius как dhcp сервер в продакшне? Ато там поддержка какбы есть, но уже хз сколько времени экспериментальная. )Я вот в настройке этой фичи не совсем понимаю, выходит можно заюзать как DHCP сервер, но в этоже время обработка запросов должна быть локально на тойже машине через rlm_perl/python and etc. Может кто подскажет как сделать чтобы freeradius_dhcp сервер пересылал запросы уже по радиус протоколу на другой радиус сервер? Да, я на freeradius+rlm_perl поднял дхсп для lISG Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KotikBSd Опубликовано 23 декабря, 2010 (изменено) · Жалоба Сейчас занимаюсь внедрением, все хорошо, но столкнулись с одной проблемой: Мы по договору допустим выдавали юзеру 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 договора. Изменено 23 декабря, 2010 пользователем KotikBSd Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GloooM Опубликовано 24 декабря, 2010 · Жалоба Да, я на freeradius+rlm_perl поднял дхсп для lISG Как у него дела со стабильностью? Ато строчка experimental пугает ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 24 декабря, 2010 · Жалоба Неверно.lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать. DHCP-сервер должен быть отдельным. Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее. Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю. Есть вот такой (сырой) вариант. В двух словах - ISG являеться dhcp-релеем, в радиусе авторизуеться не по ip а по opt82. Спасибо, дернул ф-цию разбора option 82 :). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 25 декабря, 2010 · Жалоба Да, я на freeradius+rlm_perl поднял дхсп для lISGКак у него дела со стабильностью? Ато строчка experimental пугает ) Меня тоже пугала, но, тфу-тфу-тфу, два месяца трудится без единого сбоя =) Там больше вероятности, что в своём коде косяк допустишь Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 26 декабря, 2010 · Жалоба А у всех ли работа завершение сессии по таймауту? Я тут у себя заметил случаи, когда при выключении машины вечером сессия висит до утра, в конфиге $cfg{session_idle_timeout} = 1800; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 26 декабря, 2010 · Жалоба У меня тайм-аут 5 мин., отрабатывает чётко Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SNeon Опубликовано 26 декабря, 2010 · Жалоба EvilShadow, уже обсуждалось. Свелось к следующему: RADIUS использует атрибуты Session-Timeout и/или Idle-Timeout? Точно стояло radius_default_session_timeout=65000. поставил на 180. сейчас проверю. Все точно, теперь нормально!. Спасибо! Пора составить небольшой FAQ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 27 декабря, 2010 · Жалоба SNeon, спасибо за ответ, но проблема в другом. Никаких таймаутов радиус не отдаёт, используется только опция session_idle_timeout из конфига ISGd. Счётчики трафика не растут, но сессия не рвётся. Wingman, какую ревизию используете? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 27 декабря, 2010 · Жалоба А у всех ли работа завершение сессии по таймауту? Я тут у себя заметил случаи, когда при выключении машины вечером сессия висит до утра, в конфиге $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 Впечатление, что она просто стартует заново (новый ид, счетчики по нулям, флаги опять же). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...