O protocolo RADIUS além de prover autenticação de usuários para utilização de serviços, também permite contabilizar (billing) o uso destes serviços por parte dos usuários, esse processo é chamado de accounting.
Ao configurar um NAS para se autenticar no Hubsoft, esse NAS através do protocolo RADIUS irá iniciar o processo de accounting dos usuários, utilizando as seguintes mensagens:
Quando um assinante se autentica no NAS e tem sua sessão estabelecida, uma mensagem do tipo Accounting-Start é enviada para o servidor Radius, contendo atributos descrevendo os dados da nova sessão, tais como:
Na medida que o tempo passa, geralmente a cada 10 minutos desde o início da sessão, o NAS envia para o servidor Radius mensagens do tipo Interim-Update. Essas mensagens servem para indicar que a sessão ainda está ativa, e também para atualizar dados de utilização do serviço, tais como:
Quando a sessão do assinante é finalizada, o NAS envia para o servidor Radius uma mensagem do tipo Accounting-Stop. Essa mensagem tem por objetivo informar ao servidor Radius a finalização da sessão, de forma que quaisquer recursos alocados possam ser liberados (Endereço IP, etc). Ao enviar mensagens desse tipo, o NAS também descreve qual foi o motivo para finalização da sessão.
Por fim, existem dois tipos de mensagens de accounting para ocasiões especiais, são elas Accounting-On e Accounting-Off. Essas mensagens são enviadas pelo NAS para o servidor Radius quando o equipamento inicia, ou está em processo de desligamento, respectivamente. Essas mensagens são úteis para evitar que o NAS envie um Accounting-Stop para cada assinante de forma individual.
É comum que aconteçam problemas no funcionamento do sistema de accounting, uma vez que depende de vários fatores para funcionar adequadamente como configuração correta do NAS, comunicação entre NAS e radius estarem OK dentre outros fatores, sendo possível até falhas nos equipamentos NAS.
O motivo para esse problema, na maioria das vezes, é a falta do recebimento adequado das mensagens de accounting por parte do servidor Radius. Várias podem ser as causas desse problema, as mais conhecidas estão detalhadas nas seções abaixo.
O primeiro passo, é verificar se as configurações do NAS estão corretas. Abaixo estão os links com exemplos de configuração para os fabricantes suportados no Hubsoft:
Caso o NAS não esteja cadastrado corretamente no Hubsoft, o servidor Radius irá descartar as mensagens de accounting recebidas, por não conhecer o NAS que está enviando. O NAS deve ser cadastrado no Hubsoft conforme explicado abaixo:
Ao acessar o link abaixo, será direcionado a uma lista de equipamentos, é só selecionar o equipamento em questão e visualizar as principais configurações dele.
Em alguns casos, pode acontecer das mensagens de accounting não chegarem corretamente no servidor Radius. Ao trafegar pela rede, tais mensagens podem passar por roteadores que possuam regras de firewall que descartem ou alterem os IPs de origem ou destino das mensagens.
No próprio NAS é possível verificar as estatísticas de envio de mensagens de accounting, conforme descrito nas seções abaixo.
Abaixo veremos alguns debugs para os principais equipamentos NAS
Primeiro, é preciso identificar o índice do servidor cadastrado. Para isso, basta utilizar o comando:
/radius print
Retornará uma resposta semelhante a esse abaixo:
Flags: X - disabled
# SERVICE CALLED-ID DOMAIN ADDRESS SECRET
0 ppp A.B.C.D hubsofts3cret
login
No caso acima, só existe um servidor radius cadastrado. O comando:
/radius monitor 0
irá exibir as estatísticas para este radius:
> /radius monitor 0
pending: 0
requests: 11
accepts: 0
rejects: 0
resends: 0
timeouts: 11
bad-replies: 0
last-request-rtt: 0ms
Caso os contadores timeouts e resends continuem incrementando, isso indica algum problema de comunicação entre o NAS e o radius. Caso o contador bad-replies continue incrementando, a secret cadastrada no Hubsoft pode estar diferente da secret cadastrada no equipamento.
Nos roteadores Cisco, o comando:
show aaa servers detailed
É útil para exibir as estatísticas de autenticação e accounting:
#show aaa servers detailed
RADIUS: id 1, priority 1, host A.B.C.D, auth-port 1812, acct-port 1813
State: current UP, duration 2934443s, previous duration 599s
Dead: total time 97490s, count 168
Quarantined: No
Authen: request 1379097, timeouts 3686, failover 232, retransmission 2922
Response: accept 376283, reject 999128, challenge 0
Response: unexpected 0, server error 0, incorrect 0, time 796ms
Transaction: success 1375411, failure 1284
Throttled: transaction 0, timeout 0, failure 0
Author: request 0, timeouts 0, failover 0, retransmission 0
Response: accept 0, reject 0, challenge 0
Response: unexpected 0, server error 0, incorrect 0, time 0ms
Transaction: success 0, failure 0
Throttled: transaction 0, timeout 0, failure 0
Account: request 72904505, timeouts 37437, failover 594, retransmission 27871
Request: start 257247, interim 72360271, stop 255901
Response: start 257206, interim 72351108, stop 255539
Response: unexpected 1, server error 0, incorrect 0, time 76ms
Transaction: success 72867068, failure 9566
Throttled: transaction 0, timeout 0, failure 0
Elapsed time since counters last cleared: 52w20h0m
Estimated Outstanding Access Transactions: 0
Estimated Outstanding Accounting Transactions: 0
Estimated Throttled Access Transactions: 0
Estimated Throttled Accounting Transactions: 0
Maximum Throttled Transactions: access 0, accounting 0
Na seção Account, é importante observar os contadores request, timeouts e retransmissions.
No caso de roteadores Juniper, as estatísticas de autenticação e accounting podem ser exibidas através do comando:
show network-access aaa radius-servers detail
A resposta deverá semelhante a abaixo:
> show network-access aaa radius-servers detail
Profile: PPPoE-Access-Profile
Server address: A.B.C.D
Authentication port: 1812
Preauthentication port: 1812
Accounting port: 1813
Accounting retry: 6
Accounting timeout: 20
Status: UP
RADIUS Servers
A.B.C.D
Round Trip Time: 1009
Authentication requests: 23605915
Authentication rollover requests: 0
Authentication retransmissions: 20473
Accepts: 352639
Rejects: 23245301
Challenges: 0
Authentication malformed responses: 0
Authentication bad authenticators: 0
Authentication requests pending: 0
Authentication request timeouts: 29544
Authentication unknown responses: 0
Authentication packets dropped: 0
Preauthentication requests: 0
Preauthentication rollover requests: 0
Preauthentication retransmissions: 0
Preauthentication accepts: 0
Preauthentication rejects: 0
Preauthentication challenges: 0
Preauthentication malformed responses: 0
Preauthentication bad authenticators: 0
Preauthentication requests pending: 0
Preauthentication request timeouts: 0
Preauthentication unknown responses: 0
Preauthentication packets dropped: 0
Accounting start requests: 283106
Accounting interim requests: 82240975
Accounting stop requests: 280013
Accounting rollover requests: 0
Accounting retransmissions: 847840
Accounting start responses: 283093
Accounting interim responses: 82131535
Accounting stop responses: 276186
Accounting malformed responses: 0
Accounting bad authenticators: 106
Accounting requests pending: 0
Accounting request timeouts: 961120
Accounting unknown responses: 0
Accounting packets dropped: 343
Todos os contadores que começam com o prefixo Accounting podem ajudar a detectar problemas de comunicação com radius, principalmente os contadores malformed responses, request timeouts, unknown responses e packets dropped.
Através do comando:
display radius-server packet ip-address A.B.C.D accounting
É possível obter as estatísticas de envio de mensagens de accounting para o servidor Radius:
> display radius-server packet ip-address A.B.C.D accounting
Total radius server accounting packets:
Account Requests : 1518302 Account Retransmissions : 2
Account Responses : 1518302 Malformed Account Responses : 0
Bad Authenticators : 0 Pending Requests : 0
Timeouts : 2
Speed Limit Block : 0 Pending Limit Block : 0
Server Down Block : 0 No Source IP Block : 0
Server Not Reply : 2
Unknown Types : 0 Packets Dropped : 0
Cancelled Requests : 0
Last 30 minutes radius server accounting packets:
Account Requests : 4891 Account Retransmissions : 0
Account Responses : 4891 Malformed Account Responses : 0
Bad Authenticators : 0 Pending Requests : 0
Timeouts : 0
Speed Limit Block : 0 Pending Limit Block : 0
Server Down Block : 0 No Source IP Block : 0
Server Not Reply : 0
Unknown Types : 0 Packets Dropped : 0
Cancelled Requests : 0
Na seção Last 30 minutes radius server accounting packets, é possível ver as estatísticas para os últimos 30 minutos. Os contadores mais importantes são Account Requests, Account Responses, Timeouts, Account Retransmissions e Malformed Accounting Responses.
O Accel-PPP permite a coleta de estatísticas de comunicação com o radius através do comando:
accel-cmd show stat
A resposta deverá ser semelhante á abaixo:
accel-cmd show stat
uptime: 333.13:47:09
cpu: 0%
mem(rss/virt): 24300/451964 kB
core:
mempool_allocated: 5579949
mempool_available: 608925
thread_count: 4
thread_active: 1
context_count: 748
context_sleeping: 0
context_pending: 0
md_handler_count: 1089
md_handler_pending: 0
timer_count: 1124
timer_pending: 0
sessions:
starting: 0
active Total: 561
finishing: 0
pppoe:
starting: 0
active PPPoE: 140
delayed PADO: 0
recv PADI: 541767
drop PADI: 10280
sent PADO: 531487
recv PADR(dup): 395202(3521)
sent PADS: 385505
filtered: 0
PADO-delay: 0
ipoe:
starting: 0
active IPoE: 421
delayed: 0
OFFER-delay: 0
radius(1):
state: active
fail count: 0
request count: 0
queue length: 0
auth sent: 634353
auth lost(total/5m/1m): 9409/0/0
auth avg query time(5m/1m): 25/14 ms
acct sent: 284682
acct lost(total/5m/1m): 271/0/0
acct avg query time(5m/1m): 8/9 ms
interim sent: 50352750
interim lost(total/5m/1m): 261102/0/0
interim avg query time(5m/1m): 9/9 ms
Na seção radius, os contadores com prefixo acct são úteis para depurar problemas de accounting, como também os contadores com prefixo interim.
No Hubsoft é possível analisar as mensagens de erro do Radius, que em alguns casos podem dar pistas da causa do problema. Para acessar os logs, basta acessar através do menu lateral o seguinte caminho: Configuração > Rede > Radius. Na lista de servidores Radius ativos, basta clicar no botão Ações e posteriormente Ver Logs.
Ao abrir a janela, clique no botão Iniciar para começar a capturar as mensagens do arquivo de log. Uma mensagem particularmente importante é a seguinte:
Ignoring request to authentication address * port 1812 from unknown client 192.168.2.218 port 46554
Essa mensagem indica que o servidor Radius está ignorando uma requisição de accounting vinda de um NAS desconhecido, cujo IP é 192.168.2.218.
Este log indica por exemplo que o NAS esteja com um IP diferente em seu cadastrou ou não esteja cadastrado no Hubsoft.
Para que as mensagens de accounting sejam enviadas corretamente, o NAS deve conseguir se comunicar diretamente com o servidor Radius, na porta 1813 (UDP). O inverso também deve ocorrer, ou seja, o servidor Radius deve conseguir enviar uma confirmação de recebimento para o NAS diretamente. Caso exista algum equipamento intermediário filtrando ou alterando o IP de origem/destino (NAT) das mensagens, o sistema de accounting não irá funcionar corretamente e o NAS irá incrementar os contadores de erro indefinidamente.
A imagem abaixo ilustra um roteador intermediário aplicando NAT em uma mensagem.
Para verificar os roteadores intermediários, é possível executar um comando de traceroute do NAS para o servidor Radius, e anotar todos os IPs que estejam no caminho. Exemplo utilizando um roteador Mikrotik:
> /tool traceroute 1.1.1.1
# ADDRESS LOSS SENT LAST AVG BEST WORST STD-DEV STATUS
1 10.28.33.20 0% 3 0.6ms 1.3 0.6 1.7 0.5
2 172.18.12.41 0% 3 4.4ms 4.5 3.9 5.2 0.5
3 100.110.186.170 0% 3 5.1ms 4.9 4.5 5.1 0.3
4 100.127.7.14 0% 3 32.4ms 32.4 32.3 32.6 0.1 <MPLS:L=999292,E=0>
5 100.126.3.102 0% 3 32.9ms 33.4 32.9 34 0.4 <MPLS:L=984536,E=0>
6 170.84.32.10 0% 3 32.7ms 33.1 32.4 34.2 0.8 <MPLS:L=182034,E=0>
7 170.84.34.73 0% 3 32.2ms 33.6 32.2 36.1 1.8
8 187.16.219.111 0% 3 27ms 28.3 26.2 31.6 2.4
9 1.1.1.1 0% 3 26.3ms 26.4 26.3 26.5 0.1
No exemplo acima, todos os hosts entre 2 e 8 são possíveis roteadores, que podem estar aplicando regras de Firewall/NAT.
Caso seja constatado que realmente existe algum roteador filtrando ou mascarando as mensagens, pode ser necessário aplicar uma regra para garantir que tais mensagens passem inalteradas. As regras a seguir funcionam no Mikrotik RouterOS, mas podem ser traduzidas para qualquer firewall:
/ip firewall nat add place-before=0 chain=srcnat action=accept src-address=A.B.C.D protocol=udp port=1812,1813,3799 comment="Radius - Evita NAT"
/ip firewall nat add place-before=0 chain=srcnat action=accept dst-address=A.B.C.D protocol=udp port=1812,1813,3799 comment="Radius - Evita NAT"
Atenção: É importante alterar o IP A.B.C.D para o IP do seu servidor Radius
Através do envio das mensagens Interim-Update, o NAS informa ao servidor Radius que as sessões dos assinantes estão ativas e em uso. Em alguns casos (eg quedas de energia, problemas de hardware, etc), o NAS pode não ter tempo de informar ao servidor Radius sobre a queda dessas sessões. Caso não fossem tratadas, essas sessões ficariam estagnadas indefinidamente.
Para contornar esse problema, o Hubsoft possui uma rotina que encerra automaticamente sessões que não estejam sendo atualizadas (que não estão recebendo Interim-Updates). Por padrão, o Hubsoft encerra automaticamente sessões que não foram atualizadas nas últimas 12 horas.
É possível alterar esse tempo configurando a variável TEMPO_REMOCAO_SESSAO_ESTAGNADA em Configuração > Geral > Variáveis.
Atenção: Cuidado ao configurar valores muito baixos para a variável TEMPO_REMOCAO_SESSAO_ESTAGNADA
Por esse motivo, caso o NAS não esteja conseguindo enviar para o radius as mensagens de Interim-Update corretamente, as sessões serão finalizadas pelo Hubsoft após um tempo. O encerramento dessas sessões não causa a desconexão do assinante, mas pode atrapalhar a análise de registros de conexões posteriormente. Na seção 1) Cliente está conectado no NAS, mas desconectado no Hubsoft ou com Status Sessão Estagnada
é possível encontrar dicas de como tentar diagnosticar problemas nos envio das mensagens.
Caso queira entender melhor o que são e ainda mais detalhes de possíveis correções sobre Sessão Estagnada Acesse o link abaixo: