Ola amigos,
Esse problema já foi resolvido, a verdade é que era um erro de bibliteca mesmo. Instalei com apt-get o build-essential e resolveu o problema, em partes. Sou totalmente inesperiente, tanto em linux quanto em programaçao e a cada passo que dou é uma vitoria.
Mas vamos lá, agora parei no MySql, estou usando uma dica do viva o linux do Patrik Brandão vou colocar aqui o que aconteceu agora e por favor. Alguem pode me ajudar, meu prazo está acabando e estou ja desesperado.
Estou seguindo este tutorial.
Usar
freeradius e base de dados MySQL é uma das melhores opções disponíveis. A flexibilidade e suporte do MySQL garante muita segurança aos seus dados e muita rapidez.
Certifique-se de que no arquivo
radiusd.conf, a seguinte linha está declarada:
$INCLUDE ${confdir}/sql.conf
Primeiro passo e editar o arquivo /usr/local/etc/raddb/sql.conf e alterar as seguintes linhas:
sql {
driver = "rlm_sql_mysql"
# informa ao freeradius qual modulo de banco
# de dados usar, neste caso, mysql
server = "localhost"
# diz ao freeradius em qual
# host está o servidor mysql
login = "root"
# define o nome de usuário registrado no mysql
password = "senhadologinaqui"
# senha do usuário definido no parâmetro "login"
radius_db = "radius"
# nome do banco de dados que contem
# as tabelas
# abaixo deste texto (arquivo truncado aqui) se encontram definições de SQL para
# pesquisa de dados, não altere, ao menos
# que tenha um propósito
# ......
# ....
}
Segundo, criar o banco de dados e as tabelas. Os criadores do
freeradius já deixaram a DDL pronta para você, basta ir até a pasta onde estão os fontes, na subpasta:
src/modules/rlm_sql/drivers/rlm_sql_mysql
Se você descompactou em /usr/local/src, o caminho completo é:
/usr/local/src/freeradius-1.0.1/src
/modules/rlm_sql/drivers/rlm_sql_mysql
Dentro desta pasta existe um arquivo chamado db_mysql.sql contendo todos os comandos para criar as tabelas. Crie o banco de dados com o comando:
# mysqladmin -psenharoot create radius
Quando chego neste ponto dá o seguinte erro...
root@jjunior:/usr/local/src/freeradius-server-2.0.4/src/modules/rlm_sql/drivers/rlm_sql_mysql# mysqladmin -psenharoot create radius
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
root@jjunior:/usr/local/src/freeradius-server-2.0.4/src/modules/rlm_sql/drivers/rlm_sql_mysql#
Se puder me ajudar ficarei muito grato
Josias
E crie as tabelas com o comando:
# mysql -psenharoot radius < db_mysql.sql
Agora edite o
radiusd.conf, vamos configurá-lo para autenticar os dados no MySQL. Procure no final do arquivo pela sessão "authorize" e adicione "sql", ficando assim:
authorise {
sql
}
Isso fará com que os usuários sejam procurados na tabela
radcheck, banco de dados
radius no MySQL.
Próximo passo é registrar a contabilidade dos acessos, muito útil para provedores que tem planos limitados de horas. Vá até a sessão "accounting" e adicione "sql", ficando assim:
accounting {
sql
}
Isso fará com que os dados das conexões sejam armazenadas na tabela
radacct.
Um recurso interessante é o controle de conexão simultânea. Isso impede que um usuário passe suas credencias (login/senha) para amigos e todos usem ao mesmo tempo, dando "preju". Na sessão "session" adicione "sql", ficando assim:
session {
sql
}
Ainda não está pronto o controle de sessão, você terá que editar o sql.conf e descomentar as linhas que definem as variáveis:
simul_count_query
simul_verify_query
Vamos criar um usuário chamado "joao", que terá direito a apenas uma conexão. Conecte-se ao MySQL no banco radius:
# mysql -psenharoot radius
Criar usuário:
mysql>
INSERT INTO radcheck (username, attribute, op, value)
mysql>
VALUES ('joao', 'Password', '==', 'senhasecreta');
Criar grupo com direito a uma conexão chamado 'sessaounica':
mysql>
INSERT INTO radgroupcheck (groupname, attribute,
mysql>
op, value) VALUES ('sessaounica', 'Simultaneous-Use',
mysql>
':=', 1);
Inserir joao nesse grupo:
mysql>
INSERT INTO usergroup (username, groupname) VALUES ('joao', 'sessaounica');
Pronto. João agora não pode passar seu login pra ninguém, senão ficará sem acesso! Para conexões ISDN 128k, crie um grupo de dupla permissão, pois senão o segundo canal não conseguirá conectar-se. Veja como aparece no log, uma tentativa de conexão simultânea após o usuário já estar conectado de outro lugar:
Auth: Login OK: [joao/senhasecreta] (from client pr4k port 326 cli 31555xxxx)
Auth: Multiple logins (max 1) : [joao/senhasecreta] (from client pr4k port 315 cli 31552xxxx)
Acontece, de vez em quando, do usuário ficar "agarrado" no radius. Ele é desconectado do RAS ou NAS, porém o radius não da baixa na sessão, os motivos podem ser, principalmente, perda do pacote no caminho até o radius, problema muito comum para provedores que lidam com ADSL de outras operadoras. A próxima vez que o usuário tenta logar, o acesso é negado - o servidor radius pensa que é sessão simultânea. Para resolver esse problema, sempre que um usuário (joao por exemplo) ficar "agarrado", você libera ele com a SQL:
mysql>
DELETE FROM radacct WHERE username = 'joao' AND acctsessiontime = 0 ORDER BY radacctid DESC LIMIT 1;
A desvantagem é que João terá que solicitar suporte técnico para ter o problema resolvido!