Freeradius + PPPOE + ippool + mikrotik
Prezados,
Estou necessitando de ajuda para entender o funcionamento do arquivo default (/etc/raddb/sites-available/default) do freeradius, mais especificamente na parte da post-auth.
Minha necessidade é checar se algum ip foi alocado ao usuário que autenticou, pois meu concentrador é um mikrotik e meu cliente também tem um mikrotik e quando a autenticação é oriunda de um mikrotik, o usuário autentica e fica com o ip zerado no pppoe, conforme pode ser visto na imagem ( http://prntscr.com/6qo6ei ), obviamente que o erro é devido a falta de ip disponível e a mensagem de erro é retornada no mikrotik "could not determine remote address". O problema é que quando a autenticação é feita de qualquer outro equipamento que não mikrotik o cliente não autentica, apenas equipamentos mikrotik é que acontece isso. Eu estou tentando tratar isso no post-auth do freeradius, tentando checar o retorno do ip alocado, mas não consegui, segue abaixo o código:
post-auth {
sqlippool
sql1
exec
Post-Auth-Type REJECT {
update reply {
Reply-Message = "Usuario ou Senha incorretos."
}
attr_filter.access_reject
}
}
versões utilizadas:
FreeRADIUS Version 2.1.12
Concentrador: RB433AH v6.6
Cliente: RB450 v6.12
Banco de dados: PostgresSQL 9.3
Alguém tem alguma sugestão para resolver esta questão ?
obrigado.
Re: Freeradius + PPPOE + ippool + mikrotik
Olá amigo, tenho aqui rodando Freeradius com MySQL e mikrotik... com IPPool em banco de dados...
me diga o que vc já tem funcionando, quais passos já efetuou para aplicar o IP Pool em mysql..
creio que posso te ajudar...
Abraços.
Re: Freeradius + PPPOE + ippool + mikrotik
Citação:
Postado originalmente por
dbedani
Olá amigo, tenho aqui rodando Freeradius com MySQL e mikrotik... com IPPool em banco de dados...
me diga o que vc já tem funcionando, quais passos já efetuou para aplicar o IP Pool em mysql..
creio que posso te ajudar...
Abraços.
Amigo, não querendo desvirtuar o tópico, mas se puder me indicar algum material/tutorial para configurar um ambiente desses, agradeço muito, pois há um tempo atrás eu tentei fazer rodar e não consegui.
Meu ambiente hoje é freeradius com mysql e mikrotik, porém sem o uso de ippool fornecido pelo radius usando o mysql pois não consegui fazer funcionar.
Agradeço desde já !
Obrigado!
Re: Freeradius + PPPOE + ippool + mikrotik
Nao tenho um tutorial unico, pois fui juntando as "pecinhas" e informações de varios tutoriais para chegar na solução...
vou tentar desenvolver um, documentando as alterações/ajustes que fiz no meu sistema.
Re: Freeradius + PPPOE + ippool + mikrotik
consegui,
fiz a seguinte alteração:
Código :
post-auth {
exec
sqlippool {
notfound = 1
}
if(notfound){
update reply {
Reply-Message = "nenhum ip foi associado"
}
reject
}
sql1
Post-Auth-Type REJECT {
update reply {
Reply-Message = "Usuario ou Senha incorretos."
}
attr_filter.access_reject
}
}
Re: Freeradius + PPPOE + ippool + mikrotik
É muito difícil você achar um tutorial a respeito (da forma que se espera), pois existem varias formas de trabalhar com ip pool, eu por exemplo estou configurando com ip public e roteamento dinâmico através de OSPF.
porém a configuração para utilização padrão é simples, mas precisa-se definir a metodologia de trabalho, para evitar falta de ip, ips duplicados, são n fatores...
eu ainda estou na fase de testes...
Re: Freeradius + PPPOE + ippool + mikrotik
Muito obrigado a todos, farei os testes e retorno aqui para informar o resultado!
Valeu!
Re: Freeradius + PPPOE + ippool + mikrotik
show de bola este tutorial, com certeza vai ajudar o gustavo e a mim tb, mas deixa eu te fazer uma pergunta acerca do que você comentou.
com relação a renovação do ip, toda vez que você renova o ip você derruba a conexão ? se sim, como faz isso ?
Re: Freeradius + PPPOE + ippool + mikrotik
Não não... o próprio MK, fica enviando o status da conexão para o Radius, de tempos em tempos... informando a qto tempo esta conectado, qtos bytes foram enviados e recebidos, e etc... fazendo um "keep-alive" daquela conexão PPPoE...
Esse intervalo pode ser configurado através de parâmetros na tabela radreply, ou pelo proprio MK:
/ppp aaa print
use-radius: yes
accounting: yes
interim-update: 600s
Neste caso, configurei para a cada 10min o MK enviar ao Radius um "update".
Quando o radius aloca um IP da tabela radippool, ele preenche o nome do usuario nos campos e a hora da alocação, entre outras informações. A cada update recebido pelo MK, o proprio radius renova o IP que aquele username está utilizando.
No PDF que enviei, existe uma configuração no arquivo sqlippool.conf de lease-duration = 1800, ou seja, 30 min, que julguei ser o ideal.
Quando o Radius recebe o aviso de desconexão por parte do MK, o radius vai lá e "libera" o IP que estava alocado para aquele username, na radippool.
Sempre que houver novas conexões, o Radius vai dar preferencia para os IPs que de fato foram liberados.
Caso sua pool se esgote, e o IP não tenha sido liberado pois o MK não enviou o "disconnect" para o Radius poder liberar o IP, ou não houve renovação dentro dos 30min configurados em lease-duration, o Radius entende que aquele IP está disponivel e o libera para outro usuário.
Resumindo:
Radius atribui um IP para o usuario por 30min;
MK renova o IP, enviando status-update a cada 10min;
Se o Radius não receber um 'disconnect' explicito do MK, informando que o usuário desconectou, ou então não houve "update" por parte do MK, depois de 30 min o Radius volta a liberar aquele IP para novas conexões;
Note que 30min é suficiente para o MK enviar 3 updates;
É um pouco complexo o funcionamento, mas com a pratica tudo fica claro...
Re: Freeradius + PPPOE + ippool + mikrotik
não não, eu entendi perfeitamente, eu só não tinha notado que através do interim-update o expiry_time era também renovado para data atual + 30 min (como no seu caso) enquanto a conexão está ativa, acabei de testar e realmente funcionou.
Re: Freeradius + PPPOE + ippool + mikrotik
Re: Freeradius + PPPOE + ippool + mikrotik
100%, muito obrigado, vou encerrar o tópico.
Re: Freeradius + PPPOE + ippool + mikrotik
Poxa, que bom q deu certo!
Boa sorte ae! Abraços.
Re: Freeradius + PPPOE + ippool + mikrotik
Fechado da onde que eu ainda consigo responder ao tópico kkkk
Re: Freeradius + PPPOE + ippool + mikrotik
Rapaz, pena que esse tópico é antigo, eu teria minha contribuição pra tópico se não estivesse tão antigo
Re: Freeradius + PPPOE + ippool + mikrotik
Pessoal, bom dia!
Sou novo na comunidade, eu não sei como faço para fazer perguntas rs
Alguém pode me ajudar por favor?
Obrigado!
Re: Freeradius + PPPOE + ippool + mikrotik
Mas vamos lá...
A relatos de muitas pessoas tendo duplicidade de ips quando elas tem mais de um mikrotik, pois o padrão que vem nas queryes do freeradius faz com que seja entregue ips repetidos entre mikrotiks
a solução é:
nano /etc/freeradius/3.0/mods-enabled/sqlippool
Comente a linha 35
descomente a linha 36
Comente:
# pool_key = "%{NAS-Port}"
Descomente:
pool_key = "%{Calling-Station-Id}"
isso resolve parcialmente o problema, pois a query de allocate clear só apaga as informações se o nasipaddress daquele ip for o mesmo nasipaddress do nas que pedir autenticação, caso um nas com ip diferente peça autenticação o radius vai entregar o ip ao nas, só que não vai atualizar as informações daquele ip, fazendo assim que as informações continuem com informações de ip com lease duration vencido e o radius acaba entregando novamente o mesmo ip para outros pedidos de autenticações, para resolver isso editamos a query de allocate clear
nano /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf
feche a query de allocate clear na linha 34, para fechar a query apagamos a contra e colocamos aspas duplas
depois comente a linha 35
ficando assim:
allocate_clear = "\
UPDATE ${ippool_table} \
SET \
nasipaddress = '', \
pool_key = 0, \
callingstationid = '', \
username = '', \
expiry_time = NULL \
WHERE expiry_time <= NOW() - INTERVAL 1 SECOND"
# AND nasipaddress = '%{Nas-IP-Address}'"
por fim outro problema que ocasiona a duplicidade de ips é quando um ponto a ponto cai e fica fora do ar por um período maior do que a lease-duration, como o ponto a ponto ficou fora a torre perdeu a comunicação com o radius por conta disso não houve atualização de accounting e o radius acabou liberando os ips para outros clientes, só que o problema é que la na torre que caiu os clientes continuaram conectados, mantendo assim o mesmo ip que haviam pego e quando a torre volto houve a duplicidade de ips.
e para resolver isso o jeito jeito é desconectar todos que estiverem com ips repetidos para que eles peguem outro ip, mas fazer isso manualmente seria ruim, começando que tu só iria se dar conta da duplicidade quando alguém ligasse falando que está sem internet.
então a melhor maneira é colocar um script em cada torre fazendo com que a torre fique pingando para o radius a cada 3 ou 5 minutos e caso não obtenha resposta de ping o script desativa o serviço do pppoe e assim todos se desconectam e depois o script volta a reativar o serviço pppoe e quando os clientes voltarem a se conectar vao pegar um ip diferente do que tiam antes.
# esse script pinga o radius a cada 3 minutos
# se o mikrotik não obter resposta no ping
# o mikrotik desativa o serviço pppoe
# o serviço pppoe é reativado 1 minuto depois
# isso é feito para evitar duplicidade de ips
/tool netwatch
add comment=reinicia-servico-pppoe down-script=\
"/interface pppoe-server server disable [find name=service-pppoe]\r\
\n:delay delay-time=1m;\r\
\n/interface pppoe-server server enable [find name=service-pppoe]" host=172.16.0.202 interval=3m
#
#
em name=service-pppoe troque o service-pppoe pelo nome que esta no seu serviço de pppoe e em host=172.16.0.202 coloque o ip do seu radius
Re: Freeradius + PPPOE + ippool + mikrotik
tu acabou de fazer a pergunta rapaz kkkkkk
bom, só se esqueceu de falar no que precisa de ajuda