Ver Feed RSS

berghetti

faillover mikrotik sem netwatch!

Avalie este Post de Blog
Código:
# Só altere oque está entre aspas

:global interface "pppoe-out1";
:global comentario1 "OI1";
:global comentario2 "OI2";
:global ipteste "177.135.94.46";
:global timeout "00:00:00.250";
:global email "[email protected]";

####################################


:global stats;
:global data [/system clock get date]; 
:global hora [/system clock get time];
/interface pppoe-client monitor $interface once do={:set $stats $status};
:if ($stats != "connected") do={ 
:local testerota [ip route get [find comment ="$comentario1"] disabled];
:local testerota2 [ip route get [find comment ="$comentario2"] disabled];
:if (testerota = false || testerota2 = false) do={ /ip route set [find comment="$comentario1"] disabled=yes;
{/ip route set [find comment="$comentario2"] disabled=yes}; :log warning  "$interface down"; /tool e-mail send to="$email" subject="$interface down! - $data as $hora" body="$interface down! as $hora de $data." start-tls=yes; }} else={:local pingr [ping $ipteste interface=$interface count=50 interval=$timeout]; 
:local testerota [ip route get [find comment ="$comentario1"] disabled];
:local testerota2 [ip route get [find comment ="$comentario2"] disabled]; 
 :if ($pingr <= 25) do={:if (testerota = false || testerota2 = false) do={ /ip route set [find comment="$comentario1"] disabled=yes;
{/ip route set [find comment="$comentario2"] disabled=yes}; :log warning  "$interface com perda de pacote"; /tool e-mail send to="$email" subject="$interface com perda de pacote! - $data as $hora" body="$interface com perda de pacote! as $hora de $data." start-tls=yes;
}} else={ :local testerota [ip route get [find comment ="$comentario1"] disabled];
:local testerota2 [ip route get [find comment ="$comentario2"] disabled];
 :if (testerota = true || testerota2 = true) do={:log warning  "$interface operante"; /ip route set [find comment ="$comentario1"] disabled=no; {/
ip route set [find comment ="$comentario2"] disabled=no;/tool e-mail send to="$email" subject="$interface operante! - $data as $hora" body="$interface operante as $hora de $data." start-tls=yes;}}}}
Olá pessoal, venho contribuir um pouquinho, não sou nenhum expert em mikrotik e muito menos em programação, então oque fiz foi, pesquisando e testando, e montei um sisteminha de fail-over, espero que ajude.

O intuito de montar esse script é que o uso no netwatch as vezes encomoda, vamos supor que bem na hora que deu o tempo do netwatch testar, o link perde 1 (um) pacotinho, ai ele ja acusa uma queda, te manda e-mail e tudo mais, com isso a caixa de e-mail fica lotada rsrsr. esse script tem 3 niveis, primeiro ele verifica se a interface pppoe-cliente está com o status de "connected", se não, ele desativa o link, se sim, ele dispara 50 pacote para o IP pre determinado no script (possivel alterar para mais ou para menos esse valor), e depois faz uma comparação do resultado, se a perca foi maior que 50% ele desativa o link (possivel ajustar tambem), e se a perca foi inferior ele NÂO altera o link e por ultimo tem uma condição onde que, caso nenhuma das condições anteriores tenham sido satisfeitas (oque desativaria o link), ele ativa o link.

Bom esse script ajuda para quem utiliza balance(estático ou automatico) e autentica direto no mikrotik(pode ser adaptado para quem usa modem roteado), nesse script você informa a interface de saida que será testada, os comentários das rotas (pois é atraves dos comentários que elas são identificadas, o Ip de destino para ser testado e o tempo de espera maximo de cada pacote.

Altere apenas os valores que estão entre aspa, vou explicar cada campo,
:local interface "pppoe-out1"; # aqui você coloca a interface de saida a ser testada
:local comentario1 "OI1"; # aqui você coloca o mesmo comentario que está na sua rota
:local comentario2 "OI2";
:local ipteste "8.8.4.4"; # aqui informa o IP de destino que o teste vai se basear
:local timeout "00:00:00.250"; #aqui você informa o tempo de resposta maximo de cada pacote, no exemplo está para 250ms, lembrando que um valor muito alto indica link ruim, então não aumente muito, pois ai o script irá desativar a rota ruim.

Como podem ver á dois campos para inserir comentario (comentario1 e comentario2), pois geralmente quem utiliza balance, cria duas rotas para cada link, uma rota com as devidas marcações e a outra rota fica como default ou mesmo backup da default.

script testado na versão 6.30.1, depois de aplicar o script é só agendar para executar a cada 1 minuto por exemplo, script bem simples, pode ser configurado para enviar e-mail tambem, se alguem quiser melhorar e divulgar aqui ... a vontade.

Atualizado 24-09-2015 em 12:46 por berghetti

Categorias
Dicas , Tutoriais

Comentários

  1. Avatar de Alex20cf
    e como faz pra testar a rota de mais de um pppoe ?
  2. Avatar de berghetti
    Adiciona um script para cada link, se tem dois links ( foi testado com dois) adiciona um agendamento desse script configurado para cada link.

    As configurações são nas primeiras linhas do script, só editar oque está entre aspas.
  3. Avatar de Alex20cf
    entendi, voce sabe algo que faça Failback sem precisar de ip fixo ?

+ Enviar Comentário




Visite: BR-Linux ·  VivaOLinux ·  Dicas-L