Boa Noite amigos!
Fazer funfar uma autenticação Radius remota é fichinha com Mk-auth + IP Fixo.
Mais hoje, me deparei com um esquema bem complicado e resolvi com sucesso apenas usando um pouquinho da cabeça.
Existe aqui no fórum 1001 forma de fazer isso com adsl (sem ip fixo) e montando uma VPN. Mais como eu queria uma coisa mais simples acabei complicando e resolvendo um dilema que nós administradores de rede sempre encaramos. Usar IP Dinâmico no Radius do Mikrotik, é isso mesmo, achei uma forma simples de fazer funcionar apenas usando Scripts de atualização automática conforme já conhecemos.
Bom, vou deixar de papo furado e mostrar na prática.
Esquema:
| Mikrotik 01
Cidade 01 -- | Mk-auth
| Velox (Dinâmico)
Cidade 02 -- |Mikrotik 02
| Velox (Dinâmico)
1º Passo:
Certifique-se de que os 2 mikrotiks estão sendo acessados remotamente usando ddns (Ex.: provedor.ddns.info).
Mikrotik 01, faça o redirecionamento das portas do mk-auth que serão utilizadas.
Portas:
80 - http
85 - Página de Bloqueio
22 - ssh
1812 - Authentication Port
1813 - Accounting Port
OBS: Essas portas são de extrema importância para o bom funcionamento do seu provedor.
Regras:
/ip firewall nat
add action=dst-nat chain=dstnat comment=\
"Redirecionamento porta 1812 FreeRadius" dst-port=1812 in-interface=Link01 \
protocol=udp to-addresses=172.31.255.2 to-ports=1812
add action=dst-nat chain=dstnat comment=\
"Redirecionamento porta 1813 FreeRadius" dst-port=1813 in-interface=Link01 \
protocol=udp to-addresses=172.31.255.2 to-ports=1813
add action=dst-nat chain=dstnat comment="Redirecionamento porta 22 MK-AUT
dst-port=(Porta de sua preferencia) in-interface=Link01 protocol=tcp to-addresses=172.31.255.2 to-ports=22
add action=dst-nat chain=dstnat comment="Redirecionamento porta 80 Mk-auth" \
dst-port=(Porta de sua preferencia) protocol=tcp to-addresses=172.31.255.2 to-ports=80
add action=dst-nat chain=dstnat comment="Redirecionamento porta 85 Mk-auth" \
dst-port=85 in-interface=Link01 protocol=tcp to-addresses=172.31.255.2 \
to-ports=85
OBS: Altere os dados em negrito conforme suas necessidades.
2º Passo:
Configuraremos agora o Mikrotik 02, o mesmo receberá o IP Válido (Dinâmico) do Mikrotik 01. Sabemos que o RouterOS ou simplesmente Mikrotik não suporta nomes de host no campo Address do Radius correto? pois bem, o que vamos fazer, é simplesmente atualizar o IP no campo Address conforme o ddns for sendo atualizado, ou seja, a cada IP novo gerado e passado para o ddns, iremos informar-lo no campo Address do Radius usando script automático.
Lembrando que, estamos considerando que seus 2 mikrotiks tem ddns funcional.
Vamos então simular os seguintes ddns para os 2 Mkrotiks.
Mikrotik 01 - ( cidade01.ddns.info )
Mikrotik 02 - ( cidade02.ddns.info )
Feito isso, vamos então em System/ Scripts do Mikrotik 02 e add um novo script e nele inserimos o seguinte código:
#Resolve o endereço atual do servidor RADIUS
:local atualipserverradius [:resolve "cidade01.ddns.info"]
:log info "Atual IP do servidor RADIUS: $atualipserverradius"
#Consulta o IP do servidor cadastrado no momento
:local ipcadastradoserverradius [radius get 0 address]
:log info "IP cadastrado do servidor RADIUS: $ipcadastradoserverradius"
#Compara os IPs e altera a configuração do RADIUS se os endereços não forem iguais
:if ($atualipserverradius != $ipcadastradoserverradius) do={
radius set 0 address=$atualipserverradius
:log info "Configuracao de RADIUS alterada"
}
OBS: Altere apenas o ddns conforme informado acima.
3º Passo:
Cadastre no sistema Mk-Auth o Mikrotik 02 informando em IP do Mikrotik o ddns do mesmo, como no exemplo: cidade02.ddns.info.
4º Passo:
Para usar a página de corte, basta também criar os scripts de atualização para as regras de PGCORTE seguindo o modelo a seguir e editando.
#Resolve o endereço atual do servidor RADIUS
:local atualipserverradius [:resolve "cidade01.ddns.info"]
:log info "Atual IP do servidor RADIUS: $atualipserverradius"
#Consulta o IP do servidor cadastrado no momento
:local ipcadastradoserverradius [/ip firewall nat get 0 to-address]
:log info "IP cadastrado do servidor RADIUS: $ipcadastradoserverradius"
#Compara os IPs e altera a configuração do RADIUS se os endereços não forem iguais
:if ($atualipserverradius != $ipcadastradoserverradius) do={
ip firewall nat set 0 to-address=$atualipserverradius
:log info "Configuracao de RADIUS alterada"
}
OBS: Apartir desta regra, edite os scripts para as demais regras que deseje atualizar os IPs automaticamente, lembrando que em quase todas as regras é possível incrementar scripts de atualização automática.
Bom pessoal, o que eu tinha pra passar era isso, se alguém tiver dúvida posta aqui que vamos respondendo conforme a disponibilidade. Forte abraço.
Respostas
Pessoal, acabei esquecendo! Só lembrar de adicionar rotinas no Scheduler dos scripts criados no Mikrotik 02, caso contrário não irá funcionar, e na rotina coloquem o intervalo que melhor lhe convierem, aqui uso sempre 00:10:00 tanto em DDNS como no script de Atualização do Radius... Forte Abraço!
muito, mais muito obrigado amigo...
Eliabys C. Ribeiro disse:
Que bom que foi útil pra vc meu nobre amigo!
Pedro, só tive um problema com as regras de aviso do PPPoE, consigo criar o script de atualização do ip da regra, porém a regra tem o (!) antes do dst-address, e não conseguir concatenar ou encontrar o código referente a essa função no mikrotik. Ou seja, sempre que o script atualiza o ip muda normalmente porém o (!) fica desmarcado e não sei como fazer isso de forma automática. Vou postar o código conforme estou usando aqui...:
#Resolve o endereço atual do servidor Radius
:local atualipserverradius [:resolve "provedor.ddns.com.br"]
:log info "Atual IP do servidor RADIUS: $atualipserverradius"
#Consulta o IP do servidor cadastrado no momento
:local ipcadastradoserverradius [/ip firewall nat get 2 to-address]
:log info "IP cadastrado do servidor RADIUS: $ipcadastradoserverradius"
#Compara os IPs e altera a configuração do Radius se os endereços não forem iguais
:if ($atualipserverradius != $ipcadastradoserverradius) do={
ip firewall nat set 2 dst-address=$atualipserverradius to-address=$atualipserverradius
:log info "Configuracao de RADIUS alterada"
}
OBS: Pra quem não entendeu o script, o número 2 representa o ID da regra posicionada no seu Firewall, ou seja dependendo do seu caso esse número var ter que ser alterado.
Pedro, ver se vc consegue encontrar a função pra quando atualizar marcar também o (!), forte abraço!
Pedro Filho disse:
irei ver...
Eliabys C. Ribeiro disse:
Pedro meu amigo, conseguiu encontrar uma forma de resolver esse pequeno empasse?
Estou fazendo consultoria em um provedor e estou implementando esse recurso pra eles, porém ainda tem esse pequeno problema... Aguardo sua posição!
pra quem tem loadbalance nao foi :( buaaaaá
uai amigo, é pra dar... só tem que abrir caminho no firewall...
Rafael disse:
o céu é distante kkk já tentei os encaminhamentos mas...
Me add no Skype, de repente posso te ajudar: eliabys.ribeiro
Rafael disse:
Pedro, Mais um provedor beneficiado pelo método acima. Provedor do meu amigo Rafael, porém ainda está limitado à regra de aviso do PPPoE por causa da bendita (!) na regra! Faz uma forcinha pra gente aí! abraços!