+ Responder ao Tópico



  1. #1

    Unhappy Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Tenho uma extensa rede Mikrotik, roteada utilizando OSPF, dividida em várias áreas, utilizando o freeradius como servidor de autenticação, com pools de ips inválidos configuradas nas routers.

    Até ai está tudo funcionando ok. Porém eu precisei dar ips válidos aos meus clientes, mas como não tenho muitos ips, a melhor forma encontrada foi dar ips por áreas e não por router como fiz com os inválidos e utilizando o rlm_sqlippool do radius. Tudo funcionou perfeitamente, exceto pelo seguinte problema, alguns clientes estão pegando ips duplicados, ou seja, um deles recebe um ip da radippool e depois este ip eh liberado por algum motivo, sem q ele desconecte da router, daí este mesmo ip eh dado pra outro cliente, numa router vizinha. Resultado: o cliente q está mais longe do roteador de borda não consegue navegar.

    Estive lendo na wiki do freeradius que o ip eh liberado na radippool se o radius não receber os accounting packets. Agora não sei se pode ser um problema na configuração do radius ou algum bug do OSPF, q pode estar fazendo os accounting packets enviados pelas routers se perderem na rede.

    Se alguem puder me ajudar...

    Grato.

  2. #2

    Padrão

    Só pra complementar, eu uso o radius com mysql rodando sobre o debian lenny.
    O expire-time para os ips eh de 600s.
    Fizemos testes enchendo a pool de usuários e o radius nega ips válidos para novos usuários, ou seja, não entrega naturalmente um ip que já esteja reservado pra outro usuário. Nestes casos, a router é que está dando um ip inválido pra tal usuário.

    Alguem aí com alguma ideia pra me ajudar?

    Grato.
    Última edição por diekson; 22-09-2009 às 07:36. Razão: Correção.

  3. #3

    Padrão Início da Solução...

    Bem, já que ninguém por aqui pode me ajudar, eu tive que ir atrás da solução ...

    Vou postando aqui conforme for descobrindo, assim, quem tiver o mesmo problema, pode se beneficiar...

    Eu uso o freeradius com o mysql e descobri que apesar de ter sido testado rlm_sqlippool sobre o mysql, descobri q não foi "exaustivamente" testado pelo autor do freeradius...

    Para rlm_sqlippool para funcionar corretamente, o radius deve receber todos os pacotes de contabilidade (accounting packets) a partir dos NASs, incluindo as atualizações provisórias (Interim-Updates).

    Então percebi que durante algumas requisições longas de outro sistema que gerencia o radius, ou até mesmo durante momentos de grande numero de requisições de acesso dos roteadores, vi que o mysql não consegue atender a todas as requisições, como o rlm_sqlippool precisa estar sempre recebendo os pacotes de contabilidades, alguns acabam não sendo recebidos por este problema, ai o radius acaba liberando o ip que estava reservado a um usuário, para outro usuario usar, mesmo sem ter certeza se o primeiro usuário está ou não ainda conectado no roteador. Se o primeiro usuário está ainda conectado, o radius, ao liberar o mesmo ip para outro usuário, acaba fazendo com q dois usuários recebam o mesmo ip, e assim, só um deles consegue navegar, aquele q está mais perto do roteador de borda.

    Agora o que tenho q fazer e contornar este problema, seja aumentando o numero de sockets do radius, seja eumentando o poder da máquina em que está instalado o sistema, seja aumentando ao numero de requisições simultaneas aceitas pelo mysql.

    Vou testar qual delas tem algum efeito...

    Se alguem tem alguma outra sugestão, por favor, poste aí.

    Obrigado.

  4. #4

    Padrão

    Comece aumentando o tempo do expire-time para 22 minutos e do interim-update para 7 minutos.

    O freeradius tem um problema quando ocorrem muitas solicitações ao mesmo tempo podendo até a levar o servidor mikrotik deixar de responder isso acontece em maquinas com multi-cpu, a Mikrotik alega que o problema não é dela e sim no próprio freeradius, a solução é colocar uma cpu com alto poder de processamento para atender mais rapidamente as requisições, notei que o problema ocorre quando mais de 15 requisições são feitas simultaneamente, e consegui resolver melhorando o servidor de autenticação.

    Abraço

  5. #5

    Padrão

    Citação Postado originalmente por m4d3 Ver Post
    Comece aumentando o tempo do expire-time para 22 minutos e do interim-update para 7 minutos.

    O freeradius tem um problema quando ocorrem muitas solicitações ao mesmo tempo podendo até a levar o servidor mikrotik deixar de responder isso acontece em maquinas com multi-cpu, a Mikrotik alega que o problema não é dela e sim no próprio freeradius, a solução é colocar uma cpu com alto poder de processamento para atender mais rapidamente as requisições, notei que o problema ocorre quando mais de 15 requisições são feitas simultaneamente, e consegui resolver melhorando o servidor de autenticação.

    Abraço
    Luciano, inicialmente o problema foi o numero de requisições, eu amentei e melhorou um pouco, mas em testes vi que realmente o expire-time e o interim-update tem importancia, eu aumentei o expire-time pra 6 vezes o interim-update, assim, o mk terá pelo menos 6 chances de enviar os pacotes e atualizar o expire-time, fiz isto pq minha rede eh realmente longa, e estou testando a ippool somente em algumas áreas a uns 3 dias e até agora nenhum problema de ip duplicado.

    Tbm melhorei a máquina, pq estava com pouca memóia.

    Vou deixar assim por uma semana e depois posto o resultado.

    Valeu a dica.

  6. #6

    Padrão

    Problema resolvido, com os novos tempos de interim-update e expire-time não aconteceu mais nenhum caso de ip duplicado na rede, estou com todoas as áreas rodando com ips reais disponibilizados via sqlippool ha duas semanas e nenhum problema até agora... e como disse o Luciano acima, a velocidade da maquina tbm tem grande importancia...

    Considero o caso resolvido.

  7. #7

    Padrão

    Bom dia a todos,

    Como vcs fazem para inserir os IPs na tabela radippool ? E quando ela enxe? Vocês apagam e inserem os novos IPs? Via algum script em bash?

    Estou tentando fazer com que mesmo que o cliente libere e renove, se o lease dele for de 1h, por exemplo, e ele estiver ainda dentro desse lease, pegar o mesmo IP, ao invés de pegar outro IP, evitando assim enxer a tabela rapidamente.

    Vocês têm alguma idéia de como fazer isso?

    Obrigada

  8. #8

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Citação Postado originalmente por DarkAngelTux Ver Post
    Bom dia a todos,

    Como vcs fazem para inserir os IPs na tabela radippool ? E quando ela enxe? Vocês apagam e inserem os novos IPs? Via algum script em bash?

    Estou tentando fazer com que mesmo que o cliente libere e renove, se o lease dele for de 1h, por exemplo, e ele estiver ainda dentro desse lease, pegar o mesmo IP, ao invés de pegar outro IP, evitando assim enxer a tabela rapidamente.

    Vocês têm alguma idéia de como fazer isso?

    Obrigada
    Bem, vamos por parte:

    Primeiro, como inserir os ips. Vc terá que inserir uma linha para cada ip, preenchendo apenas a coluna FramedIpAddres e a coluna Pool_Name. para isto vc pode utilizar um script em perl, php, java, oque vc quiser, até mesmo inserindo as linhas uma a uma via SQL, o que vai dar um trabalhão, rs.
    Os ips inseridos vão sendo utilizados, e o radius vai reservando e liberando eles através de updates na tabela radippool.

    Segundo. Com "encher", eu entendo que vc quer dizer qdo todos os ips forem usados. Se vc for utilizar ips públicos normalmente eles são meio escassos,(rsrs) então, se o seu roteador não estiver preparado pra dar ip caso seu radius não tenha mais nenhum liberado, vc deve acrescentar alguns ips privados afim de que o seu radius sempre tenha ips para entregar.

    Quanto ao lease e o cliente pegar o mesmo ip, comigo acontece o seguinte, sempre q algum pacote de acct-update chega, o modulo sqlippool dá uma varrida na radoippool e libera todos os ips cujo username não esteja mais com sessão aberta na radacct, e tbm libera aqueles cujo expiry_time ja tenha vencido. uma dica é deixar o lease-time pelo menos 5 vezes o tempo do interin-update, assim não tem o risco do ip ser liberado antes da hora.

    Não está no que vc perguntou, mas acho importente:
    Não basta vc povoar a tabela radippool, é preciso tbm informar o nome da pool na radcheck/radgroupcheck, o atributo usado é "Pool-Name".

    Espero ter ajudado.

  9. #9

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    entendi, muito obrigada pela explicação diekson

  10. #10

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Olá, Gostaria de saber se algum de vocês podem me ajudar a centralizar os ips via radius,
    já tentei de varias formas mais não conseguir .
    se poder ajudar fico muito grato!

    meu msn é: [email protected]
    desde já agraço qualquer ajudar!

  11. #11

    Padrão

    Citação Postado originalmente por diekson Ver Post
    Bem, vamos por parte:

    Primeiro, como inserir os ips. Vc terá que inserir uma linha para cada ip, preenchendo apenas a coluna FramedIpAddres e a coluna Pool_Name. para isto vc pode utilizar um script em perl, php, java, oque vc quiser, até mesmo inserindo as linhas uma a uma via SQL, o que vai dar um trabalhão, rs.
    Os ips inseridos vão sendo utilizados, e o radius vai reservando e liberando eles através de updates na tabela radippool.

    Segundo. Com "encher", eu entendo que vc quer dizer qdo todos os ips forem usados. Se vc for utilizar ips públicos normalmente eles são meio escassos,(rsrs) então, se o seu roteador não estiver preparado pra dar ip caso seu radius não tenha mais nenhum liberado, vc deve acrescentar alguns ips privados afim de que o seu radius sempre tenha ips para entregar.

    Quanto ao lease e o cliente pegar o mesmo ip, comigo acontece o seguinte, sempre q algum pacote de acct-update chega, o modulo sqlippool dá uma varrida na radoippool e libera todos os ips cujo username não esteja mais com sessão aberta na radacct, e tbm libera aqueles cujo expiry_time ja tenha vencido. uma dica é deixar o lease-time pelo menos 5 vezes o tempo do interin-update, assim não tem o risco do ip ser liberado antes da hora.

    Não está no que vc perguntou, mas acho importente:
    Não basta vc povoar a tabela radippool, é preciso tbm informar o nome da pool na radcheck/radgroupcheck, o atributo usado é "Pool-Name".

    Espero ter ajudado.
    ==============================================================================

    como faço pra informar o nome da pool na radcheck/radgroupcheck, usando o atributo "Pool-Name". ?

    INSERT INTO radgroupcheck (groupname,attribute,op,value) VALUES (‘poolradius’,‘Pool-Name’,‘:=’, main_pool);

    onde main_pool é o nome do meu pool que tenho cadastrado na radippool

    dessa forma ?

  12. #12

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Acho que é, eu particularmente não uso a estrutura padrão do freeradius, eu fiz algumas stored procedures para manipular isso.

    De qualquer modo fique atento com o interim-update se não vai dar problema com IP duplicado.

    Enviado via XT1563 usando UnderLinux App

  13. #13

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Citação Postado originalmente por andrecarlim Ver Post
    Acho que é, eu particularmente não uso a estrutura padrão do freeradius, eu fiz algumas stored procedures para manipular isso.

    De qualquer modo fique atento com o interim-update se não vai dar problema com IP duplicado.

    Enviado via XT1563 usando UnderLinux App
    ----------------------------------------------------------------------

    Obrigado e também obrigado pela dica, pois eu to iniciando em programação Php e sua dica vai ser muito útil.
    Só ficou uma dúvida, o expire-time que o pessoal se refere é o valor do campo que fica na tabela radippool ?
    Comecei ontem a mecher com IPs via radius e ainda tenho essa duvida, vi na radippool um campo chamado expire-time, é esse campo que tem que ser preenchido com valor em torno de 6 vezes o valor do interim-update ?

  14. #14

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    O campo é este mas não é você quem controla ele, e sim o radius, esse campo é preenchido conforme o valor da lease-time que é configurada no arquivo sqlippool.conf, se não me engano.

    Enviado via XT1563 usando UnderLinux App

  15. #15

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Ata, show mesmo.
    Muito obrigado, hoje mais tarde eu vou da umas olhadas nisso.
    Já comecei os testes e teve uma duplicação de IPs em um momento, logo na primeira vez que iniciei os teste, mas mexi em umas query que tava = null e coloquei is null, que o pessoal andam falando pra fazer isso...
    Mais tarde irei fazer a prova de fogo pra ver o que vai dar rsrs

  16. #16

    Padrão Re: Mikrotik + Freeradius rlm_ sqlippool - ips duplicados

    Citação Postado originalmente por diekson Ver Post
    Tenho uma extensa rede Mikrotik, roteada utilizando OSPF, dividida em várias áreas, utilizando o freeradius como servidor de autenticação, com pools de ips inválidos configuradas nas routers.

    Até ai está tudo funcionando ok. Porém eu precisei dar ips válidos aos meus clientes, mas como não tenho muitos ips, a melhor forma encontrada foi dar ips por áreas e não por router como fiz com os inválidos e utilizando o rlm_sqlippool do radius. Tudo funcionou perfeitamente, exceto pelo seguinte problema, alguns clientes estão pegando ips duplicados, ou seja, um deles recebe um ip da radippool e depois este ip eh liberado por algum motivo, sem q ele desconecte da router, daí este mesmo ip eh dado pra outro cliente, numa router vizinha. Resultado: o cliente q está mais longe do roteador de borda não consegue navegar.

    Estive lendo na wiki do freeradius que o ip eh liberado na radippool se o radius não receber os accounting packets. Agora não sei se pode ser um problema na configuração do radius ou algum bug do OSPF, q pode estar fazendo os accounting packets enviados pelas routers se perderem na rede.

    Se alguem puder me ajudar...

    Grato.
    mano, te juro que isso que tu esta fazendo era justamente o que eu estive procurando essa semana, porem eu não achei como fazer...
    como seu post é de 2009 eu nem sei se tu vai ler essa mensagem, mas se ler e puder me ajudar, eu queria saber como que faz pra dividir por areas e como entregar pool de ips por areas