[MASOCH-L] Contabilizar Trafego da Rede

Ricardo Rodrigues rcr.listas at ig.com.br
Sun Jan 25 13:27:21 BRST 2009


Breno,

Radius e SNMP, até onde sei, são coisas bem diferentes. :-) Mas
dependendo da aplicação (que não havia sido informada no e-mail
original) podem ser usados para contabilização de tráfego. Os dois são
protocolos muito utilizados já há vários anos, mas costumam ser usados
em contextos muito distintos. Um não substitui o outro.

Radius (Remote Authentication Dial In User Service) é um protocolo UDP
utilizado para autenticação de usuários e contabilização. Exemplos de
aplicação: autenticação de usuários banda larga (acesso PPPoE),
autenticação IEEE 802.1x (controle de acesso de usuários aos switches
de uma empresa, onde os "funcionários" caem em uma VLAN com acesso à
rede interna de servidores e os "visitantes" caem em outra VLAN com
acesso somente à Internet), controle de acesso de operadores e
administradores aos vários roteadores de um backbone (muito embora o
TACACS seja mais usado por permitir um controle fino de quais comandos
podem ser executados por quais usuários), etc.

Como funciona - um caso simples:
De um lado você tem os equipamentos com suporte a Radius, onde o
usuário vai digitar seu "username/senha" para ter acesso a ele ou aos
serviços providos por ele. De outro, você tem o(s) servidor(es) Radius
com a base de dados de usuários e senhas. Por questões de alta
disponibilidade, recomenda-se ter ao menos 2 servidores Radius. Quando
o usuário digita seu username/senha, um pacote Radius do tipo
"Access-Request" (código 01) é enviado para o servidor Radius. Dentro
do pacote são enviados alguns atributos Radius. Ex: User-name
(atributo 01), User-password (atributo 02), Nas-IP-Address (atributo
04, IP do equipamento onde o usuário está tentando se autenticar),
Service-type (atributo 06, tipo de serviço), etc. Ao receber o pacote,
o servidor Radius vai analisar se a senha está correta (autenticação)
e se o usuário tem permissão de acesso àquele equipamento/serviço
(autorização). Se não, o servidor Radius retorna um pacote
"Access-Reject" (código 02) para o equipamento. Se sim, o servidor
Radius retorna uma pacote "Access-Accept" (código 03). Se receber um
Access-Accept, o equipamento envia um pacote "Accounting-Request".
Dentro desse pacote vão outros atributos Radius, dentre eles o
"Acct-Status-Type". Esse atributo, neste momento da transação, é
enviado com valor "start" para informar ao servidor Radius que o
equipamento liberou acesso para o usuário que se autenticou. Outros
atributos enviados são o "User-Name", Nas-IP-Address,
Framed-IP-Address (IP dado ao usuário, dependendo de como o serviço
foi configurado), etc. O servidor Radius então retorna um
Accounting-Respose para o equipamento, uma espécie de "ack"
confirmando o recebimento do "accounting-request".

Quando o usuário terminar seu acesso, o equipamento Radius envia um
novo "Accounting-Request", mas desta vez com o atributos
"Acct-Status-Type" com valor "Stop" para indicar ao servidor Radius
que o usuário terminou o acesso. Outros atributos enviados são: IP do
usuário, username, tempo de duração da conexão (medido pelo
equipamento), tráfego de entrada/saída (em pacotes e em
bytes/octetos), motivo da desconexão, etc.

Importante notar que é o equipamento quem faz a "contagem" do tempo de
conexão e do tráfego, não é o servidor Radius. O servidor Radius
apenas recebe essas informações enviadas pelo equipamento e salva em
seu log/database. Geralmente é com base nessas informações
provenientes deste Account-Request de Stop (ou seja, com
Acct-Status-Type igual a Stop) que os provedores/ISPs fazem cobrança
do número de horas/tráfego usado pelo usuário.

Muitas vezes um servidor Radius é também chamado de servidor AAA
(Authentication, Authorization and Accounting). Vale notar que o
protocolo é stateless. Não há problema algum se o Access-request é
recebido por um servidor, o Accounting-Request Start é recebido por
outro servidor e se o Accounting-Request Stop é recebido por um
terceiro servidor. Obviamente, é importante que a base de dados deles
esteja sincronizada.

Obviamente esse é apenas um exemplo de aplicação. Existem alguns
outros tipos de pacote ("Access-Challenge", código 11), outros
atributos (as RFC's têm a lista completa) e variados casos de uso. Mas
acho que com o descrito acima já dá pra entender um pouco como isso
funciona.

Enfim... Não vejo como o protocolo Radius pode ser usado no contexto
do e-mail original. Mas se fosse para contabilizar tráfego/tempo de
acesso de usuários de um provedor, por exemplo, Radius seria uma ótima
opção.

Já SNMP, bem... Vou ser mais sucinto. Equipamentos com suporte a SNMP
permitem que dados informativos (ex: hostname, IP address, sistema
operacional/kernel, etc), gerenciais (se determinado link/porta está
up ou down) e estatísticos (tráfego de rede, consumo de CPU, consumo
de memória, etc) deste equipamento sejam coletados através do
protocolo SNMP (Simple Network Management Protocol). Também podem ser
capazes de enviar traps, que são mensagens SNMP enviadas a um
determiando endereço IP informando a ocorrência de algum evento
(quando há queda de um link, quando o consumo de CPU/memória/disco
ultrapassa um determinado limite/threshold, etc).

SNMP pode ser usado basicamente por dois tipos de
equipamentos/servidores: gerentes SNMP (que monitoram constantemente
se algum link caiu, mostram na tela os traps recebidos, etc) e
ferramentas de administração (que fazem consultas periodicamente sobre
o consumo, geralmente a cada 5/10 minutos, e geram gráficos).
Obviamente algumas aplicações fazem as duas coisas. Exemplos em geral:
Nagios, Cacti e MRTG.

Bom, acho que é isso. E chega que hoje é domingo! :-D

Abraços e bom final de semana,
Ricardo


2009/1/24 Breno BF <breno at lagosnet.com.br>:
> ----- Original Message -----
> From: "Ricardo Rodrigues" <rcr.listas at ig.com.br>
> To: "Mail Aid and Succor, On-line Comfort and Help"
> <masoch-l at eng.registro.br>
> Sent: Friday, January 23, 2009 5:58 PM
> Subject: Re: [MASOCH-L] Contabilizar Trafego da Rede
>
>
>>Está nos seguintes atributos Radius:
>
>>42      Acct-Input-Octets
>>43      Acct-Output-Octets
>>46      Acct-Session-Time (para bilhetagem por tempo)
>
> Ok,
>    Simplesmente desconhecia tal funcionalidade.
>    Diga-nos, funciona bem? Quais as vantagens vs o SNMP?
>
> - breno bf
>
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l
>


More information about the masoch-l mailing list