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 assinanteFramed-Pool: pool de IP (ex: pool-residencial, pgcorte)Mikrotik-Rate-Limit: velocidade do plano (ex: 100M/100M)Session-Timeout: tempo maximo de sessaoDelegated-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.xConfiguracao 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.sqlAtivar 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 gratisIntegracao 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-Poolparapgcorte - Planos: configurados na tabela
radgroupreplycom atributoMikrotik-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=yesAlta 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 segundoReplicacao 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 = 2Troubleshooting
# 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 gratisPerguntas 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.