Сервер:
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;
}