Abills + cisco + packet of disconnect

Установка, настройка, поддержка
Ответить
fenom
Сообщения: 2
Зарегистрирован: Вт дек 04, 2012 9:15 am

Abills + cisco + packet of disconnect

Сообщение fenom » Вт дек 04, 2012 9:39 am

Здравствуйте.
Сервер:
Linux srv1 2.6.32-5-amd64 #1 SMP Sun Sep 23 11:00:33 UTC 2012 x86_64 GNU/Linux
АСР ABillS 0.54
freeradius-server-2.1.12
mysql Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (i486) using readline 6.1

NAS:
Cisco 2801
System image flash:c2801-adventerprisek9-mz.124-25c.bin

Столкнулся с проблемой реализации сброса pppoe сессий по средствам POD.
В настройках NAS прописал IP адрес 10.48.0.1, тип: cisco:CISCO, Авторизация SQL, IP:PORT: 10.48.0.1:1700 и пароль pod_secret

В конфигурации маршрутизатора:
aaa pod server clients 10.48.0.5 auth-type any server-key pod_secret

При попытке сброса активной сессии с раздела "Мониторинг" получаю следующее сообщение:
Сервер доступа ID: 2
Сервер доступа IP: 10.48.0.1
Порт: 0
SESSION_ID: 00000008
0

На маршрутизаторе включен debug aaa pod
General OS:
AAA POD packet processing debugging is on

Сообщений никаких нет.
Смущает то, что АСР сообщает что прорт:0 хотя конкретно задан в настройках NAS 1700. Или проблема не в этом?
Насколько я понял для сброса пользователя используется атрибут Framed-Ip-Address
nas.pl

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

}
sub hangup_radius {
  my ($NAS, $PORT, $USER, $attr) = @_;
  if (!$NAS->{NAS_MNG_IP_PORT}) {
    print "Radius Hangup failed. Can't find NAS IP and port. NAS: $NAS->{NAS_ID} USER: $USER\n";
    return 'ERR:';
  }
  my ($ip, $mng_port) = split(/:/, $NAS->{NAS_MNG_IP_PORT}, 2);
  $Log->log_print('LOG_DEBUG', "$USER", "HANGUP: User-Name=$USER Framed-IP-Address=$attr->{FRAMED_IP_ADDRESS} NAS_MNG: $ip:$mng_port '$NAS->{NAS_MNG_PASSWORD}'", { ACTION => 'CMD', NAS => $NAS });
  my %RAD_PAIRS = ();
  $mng_port = 1700 if (!$mng_port);
  my $type;
  my $r = new Radius(
    Host   => "$NAS->{NAS_MNG_IP_PORT}",
    Secret => "$NAS->{NAS_MNG_PASSWORD}"
  ) or return "Can't connect '$NAS->{NAS_MNG_IP_PORT}' $!";
  $conf{'dictionary'} = $base_dir . '/Abills/dictionary' if (!$conf{'dictionary'});
  $r->load_dictionary($conf{'dictionary'});
  $r->add_attributes({ Name => 'User-Name', Value => "$USER" }) if ($USER);
  $r->add_attributes({ Name => 'Framed-IP-Address', Value => "$attr->{FRAMED_IP_ADDRESS}" });
  $r->send_packet(POD_REQUEST) and $type = $r->recv_packet;
  if (!defined $type) {
    $Log->log_print('LOG_DEBUG', "$USER", "No responce from POD server '$NAS->{NAS_MNG_IP_PORT}'", { ACTION => 'CMD' });
  }
  return $result;
}
Подскажите пожалуйста как можно решить данную проблему?

~AsmodeuS~
Site Admin
Сообщения: 5707
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Abills + cisco + packet of disconnect

Сообщение ~AsmodeuS~ » Вт дек 04, 2012 2:32 pm

в конфиг пропишите

$conf{debugmods}='LOG_DEBUG LOG_ALERT LOG_WARNING LOG_ERR LOG_INFO';


и потом проверте журнал

/ отчёт / интернет / ошибки

fenom
Сообщения: 2
Зарегистрирован: Вт дек 04, 2012 9:15 am

Re: Abills + cisco + packet of disconnect

Сообщение fenom » Ср дек 05, 2012 7:27 pm

Спасибо за наводку. Проблема была в том, что нужно было подождать пока обновится инфа (скрипт исполнится в cron) и появятся данные по трафику и ip выданному клиенту. Если пытаться сразу скинуть сессию в журнале ошибок было следующее:

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

HANGUP: User-Name=testuser Framed-IP-Address=0.0.0.0 NAS_MNG: 10.48.0.1:1700 'pod_secret'
No responce from POD server '10.48.0.1:1700'
После выполнения скрипта:

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

HANGUP: User-Name=testuser Framed-IP-Address=172.16.0.227 NAS_MNG: 10.48.0.1:1700 'pod_secret'
и сессия сбрасывается корректно.

Если позволите еще один вопрос, как грамотно организовать перенаправление пользователя, по окончанию действия ТП или по недостатку средст на счете, на страницу задолженности? Пока есть мысль сделать ТП в котором через радиус атрибуты передавать route-map и использовать его по оканчанию действующего ТП. Либо смотреть в сторону wccp? Может есть какое-нибудь стандартное решение в abills?

~AsmodeuS~
Site Admin
Сообщения: 5707
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Abills + cisco + packet of disconnect

Сообщение ~AsmodeuS~ » Чт дек 06, 2012 8:49 am

fenom писал(а):Спасибо за наводку. Проблема была в том, что нужно было подождать пока обновится инфа (скрипт исполнится в cron) и появятся данные по трафику и ip выданному клиенту. Если пытаться сразу скинуть сессию в журнале ошибок было следующее:

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

HANGUP: User-Name=testuser Framed-IP-Address=0.0.0.0 NAS_MNG: 10.48.0.1:1700 'pod_secret'
No responce from POD server '10.48.0.1:1700'
После выполнения скрипта:

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

HANGUP: User-Name=testuser Framed-IP-Address=172.16.0.227 NAS_MNG: 10.48.0.1:1700 'pod_secret'
и сессия сбрасывается корректно.

Если позволите еще один вопрос, как грамотно организовать перенаправление пользователя, по окончанию действия ТП или по недостатку средст на счете, на страницу задолженности? Пока есть мысль сделать ТП в котором через радиус атрибуты передавать route-map и использовать его по оканчанию действующего ТП. Либо смотреть в сторону wccp? Может есть какое-нибудь стандартное решение в abills?

пока для циски нет у нас решения разработаного

думаю напишите мне в аську попробуем с вам его сделать

Ответить