RADIUS e FreeRADIUS para Provedores: Guia Completo

RADIUS e FreeRADIUS para Provedores: Guia Completo

RADIUS e FreeRADIUS para Provedores: Guia Completo

O RADIUS (Remote Authentication Dial-In User Service) e o protocolo que conecta seu BRAS ao seu sistema de billing. Quando um assinante liga o roteador e inicia uma sessao PPPoE, e o RADIUS que decide: esse usuario pode conectar? Qual IP ele recebe? Qual a velocidade do plano? E quando ele desconecta, e o RADIUS que registra quanto tempo ficou online e quanto trafego consumiu.

Para a grande maioria dos ISPs brasileiros, o FreeRADIUS e a implementacao usada — seja diretamente ou embutida em sistemas como MK-Auth e IXCSoft.

Como funciona o protocolo RADIUS

O RADIUS opera em tres funcoes (AAA):

Authentication (Autenticacao)

O NAS (BRAS/MikroTik) envia um pacote Access-Request com usuario e senha. O RADIUS responde com:

  • Access-Accept: usuario autenticado, inclui atributos de autorizacao
  • Access-Reject: credenciais invalidas ou usuario bloqueado
  • Access-Challenge: informacao adicional necessaria (raro em ISP)

Authorization (Autorizacao)

Junto com o Accept, o RADIUS envia atributos que definem a sessao:

  • Framed-IP-Address: IP fixo do assinante
  • Framed-Pool: pool de IP (ex: pool-residencial, pgcorte)
  • Mikrotik-Rate-Limit: velocidade do plano (ex: 100M/100M)
  • Session-Timeout: tempo maximo de sessao
  • Delegated-IPv6-Prefix: prefixo IPv6 para o assinante

Accounting (Contabilidade)

O NAS envia pacotes de accounting em tres momentos:

  • Accounting-Start: quando a sessao inicia
  • Interim-Update: periodicamente durante a sessao (a cada 5-15 min)
  • Accounting-Stop: quando a sessao encerra

Esses registros vao para a tabela radacct e sao essenciais para billing, compliance e correlacao de logs.

Instalacao e configuracao do FreeRADIUS

Instalacao no Debian/Ubuntu

# FreeRADIUS 3.x com modulo SQL
apt update
apt install freeradius freeradius-mysql freeradius-utils

# Verificar versao
freeradius -v
# FreeRADIUS Version 3.2.x

Configuracao do banco de dados

# Criar banco e usuario
mysql -u root -p <<'SQL'
CREATE DATABASE radius CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'radius'@'localhost' IDENTIFIED BY 'SenhaForteRadius2026!';
GRANT ALL ON radius.* TO 'radius'@'localhost';
FLUSH PRIVILEGES;
SQL

# Importar schema
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

Ativar modulo SQL

# Habilitar modulo
cd /etc/freeradius/3.0/mods-enabled
ln -s ../mods-available/sql sql

# Editar /etc/freeradius/3.0/mods-available/sql
sql {
    driver = "rlm_sql_mysql"
    dialect = "mysql"
    
    server = "localhost"
    port = 3306
    login = "radius"
    password = "SenhaForteRadius2026!"
    radius_db = "radius"
    
    read_clients = yes
    
    pool {
        start = 5
        min = 3
        max = 32
        spare = 3
        lifetime = 0
        idle_timeout = 60
    }
}

Configurar NAS (clients.conf)

# /etc/freeradius/3.0/clients.conf
client mikrotik-bras {
    ipaddr = 172.20.1.105
    secret = SegredoCompartilhado2026!
    shortname = CCR1036-Borda
    nas_type = mikrotik
}

client mikrotik-tavares {
    ipaddr = 172.20.1.58
    secret = SegredoCompartilhado2026!
    shortname = CCR-Tavares
    nas_type = mikrotik
}

Resolva isso automaticamente com NATVault

Teste gratis por 14 dias. Sem cartao de credito.

Comecar teste gratis

Integracao com sistemas de billing

MK-Auth

O MK-Auth ja vem com FreeRADIUS integrado. Ele popula as tabelas radcheck, radreply e radusergroup automaticamente a partir do cadastro de clientes. A configuracao e feita pela interface web do MK-Auth.

Pontos de atencao:

  • O FreeRADIUS do MK-Auth roda em versao customizada — evite alterar configs manualmente
  • Bloqueio de cliente: MK-Auth muda o Framed-Pool para pgcorte
  • Planos: configurados na tabela radgroupreply com atributo Mikrotik-Rate-Limit

IXCSoft / SGP

Esses sistemas usam banco PostgreSQL e integram com FreeRADIUS via modulo rlm_sql_postgresql. A configuracao e similar, mas as tabelas e queries sao customizadas pelo fabricante.

# Exemplo de query customizada para billing externo
# /etc/freeradius/3.0/mods-config/sql/main/mysql/queries.conf
authorize_check_query = "\
    SELECT id, username, attribute, value, op \
    FROM radcheck \
    WHERE username = '%{SQL-User-Name}' \
    AND (expiration IS NULL OR expiration > NOW()) \
    ORDER BY id"

authorize_reply_query = "\
    SELECT id, username, attribute, value, op \
    FROM radreply \
    WHERE username = '%{SQL-User-Name}' \
    AND active = 1 \
    ORDER BY id"

Tabela radacct: o ouro do compliance

A tabela radacct (RADIUS Accounting) registra cada sessao de cada assinante. Ela e fundamental para:

  • Correlacao de IP: saber qual assinante usava qual IP em qual momento
  • Compliance Marco Civil: registro de conexao obrigatorio por 1 ano
  • Resposta a oficios judiciais: cruzar IP + data/hora com assinante
  • Billing por consumo: se aplicavel
# Consultar sessoes de um IP em uma data especifica
SELECT 
    username,
    nasipaddress,
    framedipaddress,
    acctstarttime,
    acctstoptime,
    acctinputoctets,
    acctoutputoctets,
    callingstationid  -- MAC do cliente
FROM radacct
WHERE framedipaddress = '100.64.15.23'
  AND acctstarttime <= '2026-03-15 14:30:00'
  AND (acctstoptime >= '2026-03-15 14:30:00' OR acctstoptime IS NULL)
ORDER BY acctstarttime DESC;

Com CGNAT, o IP na radacct e o IP interno (100.64.x.x). Para chegar ao assinante a partir do IP publico, voce precisa cruzar com os logs de traducao NAT — e exatamente isso que o NATVault faz automaticamente.

Configuracao no MikroTik

# Configurar RADIUS no MikroTik
/radius
add address=172.20.1.200 secret=SegredoCompartilhado2026! \
    service=ppp timeout=3s
add address=172.20.1.201 secret=SegredoCompartilhado2026! \
    service=ppp timeout=3s  # servidor secundario

# Ativar RADIUS para PPPoE
/ppp aaa
set use-radius=yes radius-macformat=XX:XX:XX:XX:XX:XX \
    interim-update=5m accounting=yes

# PPPoE server
/interface pppoe-server server
add service-name=PPPoE-Residencial interface=bridge-clientes \
    default-profile=pppoe-default authentication=chap,mschap2 \
    one-session-per-host=yes

Alta disponibilidade

Um RADIUS fora do ar significa que nenhum cliente novo consegue conectar (os ja conectados permanecem ate o Session-Timeout).

Failover no NAS

# MikroTik com dois servidores RADIUS
/radius
add address=172.20.1.200 secret=Senha1 service=ppp timeout=3s
add address=172.20.1.201 secret=Senha2 service=ppp timeout=3s
# O MikroTik tenta o primeiro, se timeout, usa o segundo

Replicacao do banco

# MariaDB Master-Master para RADIUS HA
# Servidor 1 (172.20.1.200) - /etc/mysql/mariadb.conf.d/replication.cnf
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = radius
auto-increment-increment = 2
auto-increment-offset = 1

# Servidor 2 (172.20.1.201)
[mysqld]
server-id = 2
log-bin = mysql-bin
binlog-do-db = radius
auto-increment-increment = 2
auto-increment-offset = 2

Troubleshooting

# Testar autenticacao manualmente
radtest usuario senha 172.20.1.200 0 SegredoCompartilhado2026!
# Sending Access-Request of id 123 to 172.20.1.200 port 1812
# Received Access-Accept Id 123

# Rodar FreeRADIUS em modo debug
systemctl stop freeradius
freeradius -X
# Mostra TODA a cadeia de processamento de cada pacote

# Verificar logs de autenticacao falha
grep "Login incorrect" /var/log/freeradius/radius.log

# Problemas comuns:
# 1. Secret mismatch: NAS e RADIUS com secrets diferentes
# 2. IP do NAS nao cadastrado em clients.conf
# 3. Modulo SQL nao habilitado (link simbolico faltando)
# 4. Permissao: freeradius precisa ler /etc/freeradius/3.0/certs/

Resolva isso automaticamente com NATVault

Teste gratis por 14 dias. Sem cartao de credito.

Comecar teste gratis

Perguntas Frequentes

FreeRADIUS ou NPS (Microsoft)?

FreeRADIUS, sem duvida. E gratuito, mais flexivel, mais performatico e o padrao da industria ISP. NPS e usado em ambientes corporativos Windows, nao faz sentido para provedor de internet.

Quanto tempo manter os dados da radacct?

O Marco Civil exige 1 ano de registros de conexao. Recomendamos manter pelo menos 13 meses na radacct ativa e arquivar dados mais antigos em tabelas separadas ou export comprimido. Uma tabela radacct com milhoes de registros precisa de indices adequados em framedipaddress e acctstarttime.

Posso usar RADIUS para IPv6?

Sim. Use os atributos Delegated-IPv6-Prefix (para delegar /56 ou /48 ao cliente) e Framed-IPv6-Address. O FreeRADIUS 3.x suporta completamente IPv6. No MikroTik, ative DHCPv6-PD no PPP profile.

O que acontece se o RADIUS cair?

Clientes ja conectados permanecem online ate o Session-Timeout ou ate desconectarem. Novos clientes nao conseguem autenticar. Por isso, alta disponibilidade com pelo menos 2 servidores RADIUS e essencial para qualquer provedor.

Teste NATVault gratis por 14 dias

Armazene e consulte logs CGNAT com VictoriaLogs. Compliance Marco Civil em minutos.

Solicitar Demo Gratuita
Compartilhar:
N

NATVault

Conteudo sobre compliance, logs CGNAT e operacao de provedores de internet.

← Voltar ao Blog

Pronto para garantir compliance?

NATVault armazena e consulta logs CGNAT com VictoriaLogs. Setup em minutos, nao semanas.

Comecar Teste Gratuito