Instalando FreeRadius 3.0.X com integração MySQL ou MariaDB no Debian 9 Stretch
Neste tutorial vamos configurar o FreeRadius 3 em nosso servidor Debina 9, com integração dos usuários/atributos de configurações em uma base de dados MySQL/MariaDB com o módulo SQL, e ainda o módulos SQLIPPOOL para armazenar nossa pool de IPs na base de dados.
Esse tutorial é ideal para provedores fazerem autenticação PPPoE, autenticação Wireless PSK e EAP.
Se você gostou do tutorial ou tem dúvidas deixe seu comentário. Se precisar de alguma ajuda ou trocar uma ideia pode me chamar lá no Telegram @remontti
REQUISITOS
1 – Debian 9 Stretch recomendo uma instalação limpa do Debian
2 – Servidor Atualizado:
# apt update
Mãos à obra!
Primeiramente escolha qual banco de dados você irá instalar:
MySQL ou MariaDB?
Com o lançamento do Debian 9 ao solicitar a instalação do mysql-server, você irá se deparar com a instalação do MariaDB automaticamente.
MariaDB é um banco de dados que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua aquisição pela Oracle. Para saber mais acesse https://pt.wikipedia.org/wiki/MariaDB
Para MySQL
A equipe do MySQL Release Engineering fornece repositórios apt para usar com a maioria do software, incluindo o servidor e muitos de seus utilitários. Para instalação com o Mysql então será necessário adicionar em seus repositórios.
# echo -e "deb http://repo.mysql.com/apt/debian/ stretch mysql-5.7\ndeb-src http://repo.mysql.com/apt/debian/ stretch mysql-5.7" > /etc/apt/sources.list.d/mysql.list # wget -O /tmp/RPM-GPG-KEY-mysql https://repo.mysql.com/RPM-GPG-KEY-mysql --no-check-certificate # apt-key add /tmp/RPM-GPG-KEY-mysql # apt update
# apt install mysql-server
Para MariaDB
Não será necessário alterar nada em seus repositórios.
Note que na instalação do MariaDB ele não irá pedir senha do usuário root como acontece no mysql, por padrão o mesmo vem sem senha com permissão de logar apenas via shell.
# apt install mariadb-client mariadb-server
Agora que já temos nosso bando de dados instalado MySQL ou MariaDB, vamos instalar uma servidor web junto com o PHPMyAdmin para facilitar nossa vida.
# apt install apache2 libapache2-mod-php7.0 php7.0 phpmyadmin
Após instalar acesse http://SEU-IP/phpmyadmin para ver se tudo esta ok!
Instalação do FreeRadius
# apt install freeradius freeradius-mysql freeradius-utils
Crie um banco de dados e usuário e conceda permissões para acessar sua base.
No MariaDB use o comando:
# mariadb -u root
* Vale lembrar que MariaDB seu usuário root vem sem senha, para setar uma senha faça:
USE mysql; UPDATE user SET password=PASSWORD('SUA-SENHA-USER-ROOT') WHERE User='root'; UPDATE user SET plugin="mysql_native_password"; FLUSH PRIVILEGES;
Acesse via linha de comando seu banco de dados, e crie uma base chamada de radius e usuário também chamado de radius, para configurarmos nossa aplicação freeradius.
CREATE DATABASE radius; GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'SENHA-DO-USER-RADIUS'; FLUSH PRIVILEGES; quit;
Agora vamos criar nossas tableas
No MariaDB use o comando:
# mariadb -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql # mariadb -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql
No MySQL use o comando:
# mysql -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql # mysql -u radius -p radius < /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql
Após cada comando será solicitado a senha (SENHA-DO-USER-RADIUS)
Caso deseje logs mais detalhados edite radiusd.conf
# cp /etc/freeradius/3.0/radiusd.conf /etc/freeradius/3.0/radiusd.conf.orig # vim /etc/freeradius/3.0/radiusd.conf
Localize as variáveis e altere para yes
[...] log { [...] stripped_names = yes auth = yes auth_badpass = yes auth_goodpass = yes [...] } [...]
Vamos habilitar nosso mod SQL, mas antes precisamos fazer algumas alterações no arquivo
# cp /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-available/sql.orig # vim /etc/freeradius/3.0/mods-available/sql
Altere:
driver = "rlm_sql_null" por driver = "rlm_sql_mysql" dialect = "sqlite" por dialect = "mysql"
Descemente as linhas e altere a senha:
server = "localhost" port = 3306 login = "radius" password = "SENHA-DO-USER-RADIUS"
Descomente:
read_clients = yes
Habilite o mod:
# ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/sql
Agora no arquivo /etc/freeradius/3.0/sites-enabled/default vamos comentar alguns valores e descomentar outros:
# cp /etc/freeradius/3.0/sites-available/default /etc/freeradius/3.0/sites-available/default.org # vim /etc/freeradius/3.0/sites-enabled/default
authorize { #digest #suffix #files sql #-ldap } authenticate { #digest } preacct { #suffix #files } accounting { sql #exec #attr_filter.accounting_response } session { # Se você deseja usar o atributo Simultaneous-Use, descomente sql e comente radutmp</em> #radutmp sql } post-auth { sql #exec # Post-Auth-Type REJECT { # # log failed authentications in SQL, too. # -sql # attr_filter.access_reject # # Insert EAP-Failure message if the request was # # rejected by policy instead of because of an # # authentication failure # eap # # # Remove reply message if the response contains an EAP-Message # remove_reply_message_if_eap # }
Faça o mesmo com inner-tunnel
# cp /etc/freeradius/3.0/sites-available/inner-tunnel /etc/freeradius/3.0/sites-available/inner-tunnel.org # vim /etc/freeradius/3.0/sites-enabled/inner-tunnel
authorize { #suffix #files sql #-ldap } authenticate { } session { # Se você deseja usar o atributo Simultaneous-Use, descomente sql e comente radutmp #radutmp sql } post-auth { sql # Post-Auth-Type REJECT { # # log failed authentications in SQL, too. # -sql # attr_filter.access_reject # # # # # Let the outer session know which module failed, and why. # # # update outer.session-state { # &Module-Failure-Message := &request:Module-Failure-Message # } # } }
Habilita mod sqlippool
# ln -s /etc/freeradius/3.0/mods-available/sqlippool /etc/freeradius/3.0/mods-enabled/sqlippool # vim /etc/freeradius/3.0/mods-enabled/sqlippool
# Comente: # pool_key = "%{NAS-Port}" # Descomente pool_key = "%{Calling-Station-Id}"
Precisamos adicionar o mod sqlippool no nosso arquivo default, você acrescentará sqlippool em accounting e post-auth logo abaixo de sql:
# vim /etc/freeradius/3.0/sites-enabled/default
accounting { sql sqlippool } session { sql } post-auth { sql sqlippool }
Uma alteraçõe que acho interessante é para que a cada nova alocação de IP ela seja randômica, isso pode solucionar alguns problemas como o daqueles clientes que jogam online, que fazem download, que estão sendo atacados, que ao reiniciar seu equipamento o mesmo irá receber um novo IP. Para isso vamos editar /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf
# vim /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf
# # The ORDER BY clause of this query tries to allocate the same IP-address # which user had last session... #COMENTE: #allocate_find = "\ # SELECT framedipaddress FROM ${ippool_table} \ # WHERE pool_name = '%{control:Pool-Name}' \ # AND (expiry_time < NOW() OR expiry_time IS NULL) \ # ORDER BY \ # (username <> '%{User-Name}'), \ # (callingstationid <> '%{Calling-Station-Id}'), \ # expiry_time \ # LIMIT 1 \ # FOR UPDATE" # # If you prefer to allocate a random IP address every time, use this query instead. #DESCOMENTE allocate_find = "\ SELECT framedipaddress FROM ${ippool_table} \ WHERE pool_name = '%{control:Pool-Name}' \ AND expiry_time IS NULL \ ORDER BY \ RAND() \ LIMIT 1 \ FOR UPDATE"
Opcional
Inicialmente eu particularmente não gosto da ideia da tabela radusergroup não ter um ID então para alterar isso faça. (Se desejar)
# mysql/mariadb -u radius -p
Entre com SUA-SENHA do radius no MySQL.
USE radius; ALTER TABLE `radusergroup` ADD `id` INT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ; ALTER TABLE `radusergroup` ADD UNIQUE(`id`);
Caso você tenha uma alta demanda de requisições você pode fazer algumas alterações no radiusd.conf.
Altere conforme sua necessidade, e hardware de seu servidor. Vale lembrar que fazendo essas alterações será necessário alterar as configurações do MySQL/MariaDB para permitir uma maior número de conexões.
Ex carga de cerca de 1000 Access-Request por segundo:
# vim /etc/freeradius/3.0/radiusd.conf
#... thread pool { start_servers = 256 max_servers = 512 min_spare_servers = 256 max_spare_servers = 512 max_queue_size = 1048576 max_requests_per_server = 0 auto_limit_acct = no } #...
Para conhecer os atributos que você pode usar em sua base recomendo a leitura do tutorial: "ALIMENTANDO NOSSA BASE DE DADOS" em diante.
Servidor FreeRadius com integração MySQL + Autenticação PPPoE & Hotspot VS Mikrotik + Ubiquiti EAP/PSK
Sugestões ou criticas envie para Telegram: @remontti
Espero ter ajudado! 😉
ARQUIVOS EDITADOS:
# cat /etc/freeradius/3.0/sites-enabled/default |grep -v "#" |awk 'NF>0'
server default { listen { type = auth ipaddr = * port = 0 limit { max_connections = 16 lifetime = 0 idle_timeout = 30 } } listen { ipaddr = * port = 0 type = acct limit { } } listen { type = auth port = 0 limit { max_connections = 16 lifetime = 0 idle_timeout = 30 } } listen { ipv6addr = :: port = 0 type = acct limit { } } authorize { filter_username preprocess chap mschap eap { ok = return } sql expiration logintime pap } authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } mschap eap } preacct { preprocess acct_unique } accounting { detail sql sqlippool } session { sql } post-auth { update { &reply: += &session-state: } sql sqlippool remove_reply_message_if_eap } pre-proxy { } post-proxy { eap } }
# cat /etc/freeradius/3.0/sites-enabled/inner-tunnel |grep -v "#" |awk 'NF>0'
server inner-tunnel { listen { ipaddr = 127.0.0.1 port = 18120 type = auth } authorize { filter_username chap mschap update control { &Proxy-To-Realm := LOCAL } eap { ok = return } sql expiration logintime pap } authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } mschap eap } session { sql } post-auth { sql } pre-proxy { } post-proxy { eap }
# cat /etc/freeradius/3.0/mods-enabled/sql |grep -v "#" |awk 'NF>0'
sql { driver = "rlm_sql_mysql" dialect = "mysql" server = "localhost" port = 3306 login = "radius" password = "SENHA-USUARIO-RADIUS" radius_db = "radius" acct_table1 = "radacct" acct_table2 = "radacct" postauth_table = "radpostauth" authcheck_table = "radcheck" groupcheck_table = "radgroupcheck" authreply_table = "radreply" groupreply_table = "radgroupreply" usergroup_table = "radusergroup" delete_stale_sessions = yes pool { start = ${thread[pool].start_servers} min = ${thread[pool].min_spare_servers} max = ${thread[pool].max_servers} spare = ${thread[pool].max_spare_servers} uses = 0 retry_delay = 30 lifetime = 0 idle_timeout = 60 } read_clients = yes client_table = "nas" group_attribute = "SQL-Group" $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf }
# cat /etc/freeradius/3.0/mods-enabled/sqlippool |grep -v "#" |awk 'NF>0'
sqlippool { sql_module_instance = "sql" dialect = "mysql" ippool_table = "radippool" lease_duration = 3600 pool_key = "%{Calling-Station-Id}" messages { exists = "Existing IP: %{reply:Framed-IP-Address} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})" success = "Allocated IP: %{reply:Framed-IP-Address} from %{control:Pool-Name} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})" clear = "Released IP %{Framed-IP-Address} (did %{Called-Station-Id} cli %{Calling-Station-Id} user %{User-Name})" failed = "IP Allocation FAILED from %{control:Pool-Name} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})" nopool = "No Pool-Name defined (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})" } $INCLUDE ${modconfdir}/sql/ippool/${dialect}/queries.conf }
# cat /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf |grep -v "#" |awk 'NF>0'
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}'" allocate_find = "\ SELECT framedipaddress FROM ${ippool_table} \ WHERE pool_name = '%{control:Pool-Name}' \ AND expiry_time IS NULL \ ORDER BY \ RAND() \ LIMIT 1 \ FOR UPDATE" pool_check = "\ SELECT id \ FROM ${ippool_table} \ WHERE pool_name='%{control:Pool-Name}' \ LIMIT 1" allocate_update = "\ UPDATE ${ippool_table} \ SET \ nasipaddress = '%{NAS-IP-Address}', pool_key = '${pool_key}', \ callingstationid = '%{Calling-Station-Id}', \ username = '%{User-Name}', expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \ WHERE framedipaddress = '%I' \ AND expiry_time IS NULL" start_update = "\ UPDATE ${ippool_table} \ SET \ expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \ WHERE nasipaddress = '%{NAS-IP-Address}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ AND framedipaddress = '%{Framed-IP-Address}'" stop_clear = "\ UPDATE ${ippool_table} \ SET \ nasipaddress = '', \ pool_key = 0, \ callingstationid = '', \ username = '', \ expiry_time = NULL \ WHERE nasipaddress = '%{Nas-IP-Address}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ AND framedipaddress = '%{Framed-IP-Address}'" alive_update = "\ UPDATE ${ippool_table} \ SET \ expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \ WHERE nasipaddress = '%{Nas-IP-Address}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ AND framedipaddress = '%{Framed-IP-Address}'" on_clear = "\ UPDATE ${ippool_table} \ SET \ nasipaddress = '', \ pool_key = 0, \ callingstationid = '', \ username = '', \ expiry_time = NULL \ WHERE nasipaddress = '%{Nas-IP-Address}'" off_clear = "\ UPDATE ${ippool_table} \ SET \ nasipaddress = '', \ pool_key = 0, \ callingstationid = '', \ username = '', \ expiry_time = NULL \ WHERE nasipaddress = '%{Nas-IP-Address}'"
Boa Tarde!!
Estou a dias tentando amarrar o endereço mac um determinado login de usuario utilizando o atributo :
ja tentei das seguintes formas
(‘cliente’, ‘Calling-Station-Id’, ‘==’, ’00:11:22:33:44:55′);
(‘cliente’, ‘Calling-Station-Id’, ‘:=’, ’00:11:22:33:44:55′);
(‘cliente’, ‘Calling-Station-Id’, ‘==’, ’00-11-22-33-44-55′);
(‘cliente’, ‘Calling-Station-Id’, ‘:=’, ’00-11-22-33-44-55′);
Acontece que o Radius não valida o Calling-station-id e autentica qualquer equipamento com o mesmo usuário e senha,
onde sera que estou errando?
Parabéns pelo artigo! Dificilmente encontra-se material tão detalhado!
Rudimar trabalhamos com sistema de gerenciamento para provedores (netControl), utilizamos o freeradius para autenticar os clientes e entregar os IPs.
Para fazer a alocação do IPv4 usamos o allocate_find contendo o select que retorna o IPv4. Tem algum allocateIPv6_find que eu poderia usar ou eu teria que retornar o IPv6 junto com o IPv4 no mesmo select?
Tem outros dois tutoriais de freeradius no blog, da uma pesquisada. Falo sobre a questão do ipv6
Ola, boa tarde. Tem como o FreeRadius autenticar os usuarios PPPoE utilizando qualquer usuario e qualquer senha ? Para uma situação de emergência onde dê pau no servidor Radius.
podem ajudar, voces nao falaram o caminho pra da start e stop, acho que estou fazendo no caminho certo, mas mesmo configurando o NAS, nao loga fica dando sempre o mesmo erro
Thu Dec 26 11:06:27 2019 : Error: Ignoring request to auth address * port 1812 bound to server default from unknown client 172.17.200.102 port 1812 proto udp
O arquivo clientes.conf deve ser informado as configurações do dispositivo que vai comunicar com o servidor freeradius.
exemplo:
# joe /etc/freeradius/3.0/clients.conf
client ELIASWIFI {
ipaddr = 172.17.200.102/32
secret = exemplosenha
require_message_authenticator = no
nastype = other
virtual_server = eliaswifi
}
Ciao a tutti vengo dall’italia
Ajuda! Desde já, parabéns pelo compartilhamento de conhecimento. Tentei várias vezes instalar o passo a passo deste tutorial, deu certo em partes, depois dos usuário logar, a tabela *radacct*, não recebe nenhuma informação pra a montagem do extrato da conexão do usuário, gostaria de saber se vc tem alguma ideia que possa ser
Olá, depois de refazer umas diversas vezes e lê centenas de artigos, encontrei a solução, Eu, estava importando a tabela antiga do meu Radius, que continha um campo modificado ( nasidentifier), que pega o nome da RB, que este eu modifiquei um arquivo do freeradius. Até aí tudo bem, removi ele, porém ainda não testei, mas, pretendo.
Outra coisa que percebi que na versão mais nova o Radius na tabela *radacct*, não possui algumas colunas, a esxemplo de (acctstartdelay, acctstopdelay, xascendsessionsvrkey).
Muito bom material, parabéns!
Pensa em fazer algum material envolvendo Freeradius com autenticação no ldap??
Boa noite prezados, estou tentando prender mac usando freeradius 3 com mikrotik, porem não estou conseguindo prender o mac.
INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES (‘computador’, ‘Caller-ID’, ‘==’, ’62:45:CB:A5:FF:0D’);
estou tentando prender o mac com o attributo Caller-ID, mas não esta funcionando, eu usava isso no freeradius 2 e agora no freeradius 3 não estou conseguindo usar, alguem sabe como prender mac do cliente pppoe usando freeradius 3 ?
('cliente', 'Cleartext-Password', ':=', 'senha'),
('cliente', 'Calling-Station-Id', '==', '00:11:22:33:44:55');
Olá, primeiramente gostaria de agradecer por todos os seus tutorias postados no site, são realmente bem didáticos e de fácil compreensão !!
Remontti, gostaria de saber como faço para armazenas IPv6’s na tabela SQLIPPOOL, e disponibilizar meus IPv6’s (WAN e LAN) nessa tabela, sempre que o cliente logar pegar 1 que está disponível, assim como é feito no IPv4.
Nesse caso utilizando os parâmetros:
Framed-IPv6-Prefix: Responsável pela a entrega do IPv6 da WAN(/64);
Delegated-IPv6-Prefix: Responsável pela entregada do IPv6 da LAN (/56);
Sei que deve ser trabalhoso, mas se puder complementar nesse seu tutorial seria incrível!!
Ainda não é possível fazer isso os atributos:
Framed-IPv6-Prefix, Delegated-IPv6-Prefix devem ser atrelados ao usuários. Vale lembrar que o Delegated-IPv6-Prefix no mikrotik não esta funcionando até a versão 6.45beta16
Opa gostei mto tutorial!! Parabéns! No caso gostaria saber onde posso estudar mais sobre assunto?? e se para fazer páginas php integrado freeradius preciso somente alteração banco dados? Queria material bom para possa estudar kk obg.
Minhas maiores duvidas sempre tirei em: https://wiki.freeradius.org
Com relação a entrega dos pool de IPv6 estou usando o seguinte comando
(‘usuario@dominio.com.br’, ‘Framed-IPv6-Prefix’, ‘:=’, ‘2001:db8:A:B::/64’), /* IPv6 “Wan” */
(‘usuario@dominio.com.br’, ‘Mikrotik-Delegated-IPv6-Pool’, ‘:=’, ‘2001:db8:C::/56’); /* IPv6 “Lan” */
Esse comando tbm é usado na versão 3 do freeradius?
Pq o bloco que estou adicionando no freeradius não é pego no mikrotik, ele pega o do propio mikrotik mas não pega o do freeradius, vc ja passou por algo semelhante?
Mikrotik-Delegated-IPv6-Pool = nome-da-pool-q-exite-no-mk
No tutorial antigo ta errado mesmo. Oara vc poder mandar seu bloco o atributo seria Delegated-IPv6-Prefix (mas o mk nao entende ele) Existe no forum do mk muita reclamação…
Olá Rudimar,
Parabéns pelo blog, recentemente me formei em Engenharia de Computação, procurando por alguns temas de meu interesse em adquir conhecimento encontrei teu blog, que acabou por suprir várias necessidades de minhas pesquisas.
Tenho uma dúvida sobre o freeradius, seria possível a aplicação de um servidor radius em nuvem para utilização em uma rede de terceiros? Em uma topologia que seria basicamente a seguinte:
servidor freeradius internet onu ap
Onde clientes se autenticaria em meu servidor radius por meio de um ap que estraria atrás de um nat da onu de um provedor qualquer.
Lembrando que eu os únicos ativos os quais eu iria dispor de gerência seria o servidor e o ap.
Grato,
Um grande abraço!
Sim, muitos sistemas fazem isso, porem vc tem q estar 100% on para nada ficar fora, e ter um ip fixo, se o radius tiver atras de um nat é so direcionar a porta. já qm for buscar informacao no radius precisa ter um ip fixo tb, pois vai ter q informar na tabela nas o ip valido do lado q vai até o radius fazer a verificacao dos dados.
Olá, coloquei o Radius para funcionar e ele está autenticando normalmente, acontece que quando coloco em produção em um concentrador com um numero maior de requisições (500 assinates nesse concentrador) alguns clientes pppoe deixam de conectar. Isso ocorre por que a requisição ainda fica aberta no banco de dados, o cliente desconecta e não consegue mais conectar dando erro no log mikotik: user XXXX autentication failed.
Provavelmente vc está tendo alguma falha de comunicação do radius com o RouterOS, ou vc cria Scripts para resolver esse problema ou vc desabilita o Simultaneous-Use. Observe os logs, e veja o pq isso está acontecendo…
O radius esta hospedado em nuvem (Digital Ocean), provavelmente em algum momento tenha falha na comunicação. Sim uso o simultaneous-use, nas pesquisas que fiz disseram para desabilitar, porém em minha percepção não é a maneira correta de resolver o problema. Os scrips que vc esta falando seria para derrubar a conexão em aberto? ok vou dar uma olhada, desde já agradeço.
Em nuvem fica f*! Sim vc vai precisar fechar as conexões.
Boa tarde, como eu consigo criar as queues no freeradius e quando o PPPOE autenticar no mikrotik ele já criar o controle de velocidade também
Sim. Leia http://blog.remontti.com.br/1651 Pule a parte da instalação, pois você ja fez procure: “ALIMENTANDO NOSSA BASE DE DADOS” lá tem os atributos que vão estar no banco de dados do freeradius, que sera interpretado pelo routerOS (mikrotik)
ERROR 1050 (42S01) at line 4: Table ‘radippool’ already exists
Você deve ter pulado algo pois ta dizendo q a tabela não existe.
deu tudo certo!!!!!
primeiro tutorial na minha vida que da certo do início ao fim.
Parabens.
Notei que quando reinicio o sistema operacional o serviço freeradius sobe desativado, tenho que dar o comando: service start freeradius, para ele volte funcionar, mas tenho que fazer isso toda vez que o sistema é reiniciado. Já tentei alguns scripts mas sem sucesso. Desde já agradeço.
O serviço não deve estar carregando na inicialização, veja se ele esta enable, se não habilite ele:
Boa tarde, o servidor freeradius esta funcioando tudo ok, porém tem acontecido de travar o sistema operacional. Uso virtualizado em uma vmware, servidor dell, verifiquei na maquina virtual questão de processamento ou memoria e não passa dos 20%, já alterei tbm a questão da quantidade de max_queue_size = 1048576, dando uma amenizada no problema, porem ainda travando algumas vezes na semana, já passou por algo semelhante? Ah! quando altero os valores no radiusd.conf para:
start_servers = 256
max_servers = 512
min_spare_servers = 256
max_spare_servers = 512
Da um erro, só voltando a funcionar com os valores padrões.
Desde já agradeço.
e veja Tenta dar uma olhada na documentação.
http://networkradius.com/doc/3.0.10/raddb/thread-pool.html
Deixa os valores padrões, só altere se realmente precisar.
Na versão 3 do freeRadius, os arquivos:
/sites-enabled/default
/sites-enabled/inner-tunnel
Não vem mais com o ‘#” no sql para ser descomentado e sim com um sinal de “-” (menos) na frente do sql;
Nesse caso o sinal de – é removido para que a opção sql seja ativada?
Comente elas.
Boa noite, só confirmando, tem que remover o sinal de menos (-) antes de sql para que a função seja ativada, se baixar o Radius hj ele não virá mais com # e sim com sinal de menos antes do sql, o pessoal pode se confundir nessa parte da configuração.
Obrigado.
Muito bom seu tutorial, to pensando em criar uma pagina em php para que pudesse o desse cadastrar os clientes em uma interface gráfica seria possível?
Sim, vc pode montar um “sisteminha” para gerenciar.
Bom dia, parabens pelo post.
Uma pergunta, comigo, não está funcionando a opção de Simultaneous-Use, mesmo definindo tudo certo, o mesmo usuario autentica várias vezes.
Tem alguma outra coisa que precisa ser feito?
session {
# Se você deseja usar o atributo Simultaneous-Use, descomente sql e comente radutmp
#radutmp
sql
}
Saberia dizer o motivo do erro abaixo ao tentar realizar um teste com o Radtest retornando conexão rejeitada:
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: returned from sql (rlm_sql)
Mon Feb 26 12:42:17 2018 : Debug: (1) [sql] = ok
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: calling expiration (rlm_expiration)
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: returned from expiration (rlm_expiration)
Mon Feb 26 12:42:17 2018 : Debug: (1) [expiration] = noop
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: calling logintime (rlm_logintime)
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: returned from logintime (rlm_logintime)
Mon Feb 26 12:42:17 2018 : Debug: (1) [logintime] = noop
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: calling pap (rlm_pap)
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: !!! Ignoring control:User-Password. Update your !!!
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: !!! configuration so that the “known good” clear text !!!
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: !!! password is in Cleartext-Password and NOT in !!!
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: !!! User-Password. !!!
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: No “known good” password found for the user. Not setting Auth-Type
Mon Feb 26 12:42:17 2018 : WARNING: (1) pap: Authentication will fail unless a “known good” password is available
Mon Feb 26 12:42:17 2018 : Debug: (1) modsingle[authorize]: returned from pap (rlm_pap)
Mon Feb 26 12:42:17 2018 : Debug: (1) [pap] = noop
Mon Feb 26 12:42:17 2018 : Debug: (1) } # authorize = ok
Mon Feb 26 12:42:17 2018 : ERROR: (1) No Auth-Type found: rejecting the user via Post-Auth-Type = Reject
Mon Feb 26 12:42:17 2018 : Debug: (1) Failed to authenticate the user
Mon Feb 26 12:42:17 2018 : Auth: (1) Login incorrect (No Auth-Type found: rejecting the user via Post-Auth-Type = Reject): [anderson.barbosa/cma123] (from client localhost port 10)
Mon Feb 26 12:42:17 2018 : Debug: (1) Using Post-Auth-Type Reject
Obrigado!
Quais os atributos que estao nas tabelas?
Duvida, tem como deixar as senhas criptografadas na base? Obrigado!
Tem sim.
Nos arquivos
/etc/freeradius/3.0/sites-enabled/default
/etc/freeradius/3.0/sites-enabled/inner-tunnel
/etc/freeradius/3.0/mods-enabled/sqlippool
Vc faz a copia por segurança colocando no final do arquivo .orig
Porém o endereço do copy esta para /sites-available/
É isso msmo, já que o sites-enable é uma especie de link para o available, ou foi erro de digitação?
É isso mesmo!
Em *-available estão os arquivos “realmente”, se você renomear os arquivos dentro do *-enabled vai estar renomeando o nome do atalho, vc vai continuar “chamando” esse arquivo na hora de carregar o freeradius, e pior se você criar outro dentro de enabled irá duplicar as configurações e terá vários erros.
Olá, muito bom o seu tutorial, parabéns. Consegui fazer aqui funcionou tudo certo, so no mikrotik quando o usuario autentica no hotspot no log do mikrotik da a seguinte mensagem RADIUS ACCOUNTING REQUEST NOT SENT: NO RESPONSE.
Saberia me dizer o que pode estar acontecendo ??
Desde já muito obrigado
Verifique se exite algum firewall no meio do caminho, desative e faça os testes.
Fiz examente isso tudo ai , porem qdo reinicio o radius , pela primeira vez , ele nao sobe mais…
Restarting freeradius (via systemctl): freeradius.serviceJob for freeradius.service failed because the control process exited with error code.
See “systemctl status freeradius.service” and “journalctl -xe” for details.
failed!
como se algum arquivo de config estivesse errado , no tutorial vc diz pra descomentar algumas partes com nome ‘sql’ no arquivo está como ‘-sql’ é normal ? é o mesmo parametro ?
Sim, porém remova o –
Verifique nos logs qual erro.
# journalctl -xe
Estou com o mesmo problema.
Amigo tenho uma duvida antigamente na senha de um login PPPOE eu usava o atributo Password == senha_pppoe vi que nessa versão ele não aceita mais esse atributo que foi alterado para Cleartext-Password := consegue me dizer o por que? E por sinal o tópico abordado acima e muito bom parabéns me ajudou muito.
Password ficou muito “genérico” como você não esta usando criptografia ele usa o Cleartext-Password, o nome já diz.
https://wiki.freeradius.org/search?q=Cleartext-Password
Amigo, muito bom. Como seria para fazer com que o hotspot do Mikrotik seja autenticado no banco de dados mysql?
Tinha um aqui, mas dava o erro que radius não reponde, funcionava mas dava esse erro às vezes..
Alguma dica ou ajuda?
Ter que ter conhecimento sobre o funcionamento do Freeradius, é configurar certo como no tutorial q não tem erro. Precisa entender tb como os atributos funcionam…
Parabéns, muito bom seu tutorial. Teria como me ajudar com os valores que devo inserir nas tabelas do radius?
Quero fazer autenticação pppoe.
Obrigado!
LEANDRO
No final deste post falo sobre valores que são inserido nas tabelas: http://blog.remontti.com.br/1651
Eu particularmente gosto de criar grupos para ficar mais organizando, então ficaria + – assim:
Se precisar ajuda me chama la no telegram. Posso demorar para responder mas respondo 😉
E como eu vincularia o grupo em um determinado usuário?
Vlw pelo post =D
Depende o que você quer fazer… Aí vc precisa estudar os atributos.