Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico

  1. Olá,

    Tenho instalado um freeradius + mysql + debian e este autenticando os meus usuários pppoe.
    O que acontece é que começarei agora a usar o modulo sqlippool para fornecer ips para os clientes.
    O radius fornece o IP normal, porém ele não atualiza a tabela na linha do determinado IP preenchendo as informações de
    nasipaddress, expiry_time, etc...
    e como consequencia tambem não faz o accounting, nem a liberação do ip na tabela radippool.



    Eis algumas saidas de logs


    Ao cliente logar pppoe aparece o seguinte:
    Wed Oct 29 13:29:30 2014 : Error: sqlippool_command: database query error in: 'UPDATE radippool SET nasipaddress = 'xxx.xxx.xxx.xxx', pool_key = 'xxx.xxx.xxx.xxx-2147484007', callingstationid = '24:A4:3C0:58:9C', username = 'usuario', expiry_time = NOW() + INTERVAL 3600 SECOND WHERE framedipaddress = '186.227.249.65' AND expiry_time IS NULL'


    Ao cliente deslogar o pppoe:
    Wed Oct 29 13:28:58 2014 : Error: sqlippool_command: database query error in: 'UPDATE radippool SET nasipaddress = '', pool_key = 0, callingstationid = '', username = '', expiry_time = NULL WHERE nasipaddress = 'xxx.xxx.xxx.xxx' AND pool_key = 'xxx.xxx.xxx.xxx-2147484006' AND username = 'usuario' AND callingstationid = '24:A4:3C0:58:9C' AND framedipaddress = 'yyy.yyy.yyy.yyy''


    Ambas as queries se eu copiar e colar direto no mysql-workbench por exemplo, executa normal.


    A tabela radippool é INNODB, eis o script de criação dela...
    CREATE TABLE radippool (
    id int(11) unsigned NOT NULL auto_increment,
    pool_name varchar(30) NOT NULL,
    framedipaddress varchar(15) NOT NULL default '',
    nasipaddress varchar(15) NOT NULL default '',
    calledstationid VARCHAR(30) NOT NULL,
    callingstationid VARCHAR(30) NOT NULL,
    expiry_time DATETIME NULL default NULL,
    username varchar(64) NOT NULL default '',
    pool_key varchar(30) NOT NULL,
    PRIMARY KEY (id),
    KEY radippool_poolname_expire (pool_name, expiry_time),
    KEY framedipaddress (framedipaddress),
    KEY radippool_nasip_poolkey_ipaddress (nasipaddress, pool_key, framedipaddress)
    ) ENGINE=InnoDB;

    Qualquer ajuda será muito bem vinda.




    Obrigado.



    Obs: Já verifiquei nomes de campos, tabelas, etc...tudo certo.

  2. Depois desse log, ele não cita o erro que ocorreu? Qual a versão do FreeRadius e do MySQL?



  3. Não aparece mais nada.
    O mais estranho é que ele fornece o IP que esta no pool, então o problema não é a conexão com o banco, pois ele busca o ip la.
    E se eu pego essa query do erro, copio e colo direto no mysql, funfa direitinho hehheh. Ta me deixando louco isso.

    Eis as versões.


    operador@radius:~$ dpkg -l |egrep 'freeradius|mysql-server'
    ii freeradius 2.1.10+dfsg-2 a high-performance and highly configurable RADIUS server
    ii freeradius-common 2.1.10+dfsg-2 FreeRADIUS common files
    ii freeradius-mysql 2.1.10+dfsg-2 MySQL module for FreeRADIUS server
    ii freeradius-utils 2.1.10+dfsg-2 FreeRADIUS client utilities
    ii libfreeradius2 2.1.10+dfsg-2 FreeRADIUS shared library
    ii mysql-server 5.1.63-0+squeeze1 MySQL database server (metapackage depending on the latest version)
    ii mysql-server-5.1 5.1.63-0+squeeze1 MySQL database server binaries and system database setup
    ii mysql-server-core-5.1 5.1.63-0+squeeze1 MySQL database server binaries
    operador@radius:~$

  4. pena que o topico é velho
    o problema esta na query "expiry_time IS NULL"
    editando o arquivo
    nano /etc/freeradius/sql/mysql/ippool.conf voce resolve isso
    basta trocar tudo que estiver como expiry_time IS NULL \
    por expiry_time = NULL \

    assim vai passar receber a accounting normalmente, porem apos aplicar essas mudanças sera necessario restartar o serviço do freeradius e tambem reiniciar os pppoe server.

    muito se ver por aí pedindo pra trocarem essa query pra evitar que haja duplicidade de ips na rede vinda do sqlippool, e deixar do jeito que esta no seu, mas quando se faz essa alteraçao a tabela radippool para de ser atualizada, entao tem que deixar do modo que eu passei acima.

    para evitar que haja duplicidade de ips o pessoal recomenda alterar a tabela radippool para o formato innodb e deixar o Expiry_time 6 vezes maior que o Interim update.

    alem disso editar o arquivo nano /etc/freeradius/sqlippool.conf
    onde tem pool-key = "%{NAS-Port}"
    se deve alterar para pool-key = "%{NAS-IP-Address}-%{NAS-Port}"

    esses foram os passos que encontrei pra resolver o problema de ips duplicados na rede, porem eu nao tenho uma rede pra testar isso pra ver se realmente funciona para o mysql.

    se alguem usa mysql para cuidar da sqlippool eu queria que deixasse um comentario aqui se esses passos que passei resolve mesmo o problema de ips duplicados na rede.

  5. Na verdade mesmo mano, o que evita IPS duplicados é uma série de fatores, alguns são, accounting funcional de no máximo 5 minutos, liberação rápida de ips não usados... E assim por diante. Fazem dois anos que já uso isso em meus clientes e ainda sofro as vezes com isso, o que fez piorar muito esse recurso foi a escassez de ipv4, no passado você conseguia um /20 e tinha uns 3900 ips só para atender clientes, e tinha seus 500 clientes, aí funciona muito bem, você conseguia deixar o expire-time alto e não sofria com a liberação precisa dos ips, hoje em dia os provedores tem 900 ips para atender 850 clientes... Não existe forma de ficar preciso, principalmente de você tem quedas/rajadas de conexão frequentes. O mais correto é usar o FRAMED-IP-ADDRESS com ip fixo pra cada cliente.

    Esperamos que logo logo tudo seja ipv6 aí sim eliminamos esse obstáculo!

    Enviado via XT1563 usando UnderLinux App






Visite: BR-Linux ·  VivaOLinux ·  Dicas-L