AInternet estável é cada vez mais importante, especialmente durante a COVID19 quando uma grande parte da população tem de trabalhar remotamente. Uma das medidas para garantir o acesso à Internet é adquirir um link da segunda operadora, muitas pessoas decidem escolher o acesso na forma de linha LTE.
Tem havido muitas idéias de como operar o segundo link, que em princípio deveria ser apenas um backup. Infelizmente, nenhuma solução correspondeu às minhas expectativas, embora todas elas "tenham funcionado".
Na minha busca por inspiração encontrei um artigo publicado no Server Management por Timo Puistaj a partir de 2017. A maneira descrita de detectar um link através da extensão e manipulação do roteamento se mostrou bastante eficiente, mas não foi possível detectar falhas no link quando há perdas de pacotes ou um aumento drástico no tempo de transferência de pacotes no link principal. Decidi alargar esta ideia para todas as minhas necessidades.
O princípio de operação é baseado no uso da ferramenta Netwatch implementada no MikroTik RouterOS com suporte a scripts e verificação adicional, estendendo a rota de roteamento e verificando a disponibilidade do gateway padrão.
/sistema script
add dont-require-permissions=no name=NetWatch-check owner=admin policy=
reiniciar, ler, escrever, política, testar fonte="#Aqui você pode mudar o valor.
A quantidade de tempo em minutos que o link BACKUP é o preferido.
antes de verificarmos se a ligação principal está a funcionar correctamente.
...
global nwwait 15.
Deixe inalterado.
global nwgw2.
global nwgw2;nwgw2;nwgw2
local nwgw2;}
nm:local nwgw status;}
nwgwstatus ([/tool netwatch get value-name=status [find comment=
"NetWatch"]);})
nwnset nwstatus ([/ip route get value-name=distance number=[/ip route f
ind comment="BACKUP"]);}
}:if ($nwstatus = "6") do={.
Set nwgw2 (nwgw2 1)}
}
Se (($nwgw2 > $nwgwwait) e ($nwgw status = "para cima")) do={ :log err
ou "Mestre GW: OK".
set nwgw2 (0).
[find comment="BACKUP"] distance=66;nwgw2 (0)}
\n"
add dont-require-permissions=no name=NetWatch owner=admin policy=
reboot,read,write,test source="/log error" "Master GW: PROBLEMA".
ip route set [find comment="BACKUP"] distance=6.
[find comment="BACKUP"] distância=6
\n"
add dont-require-permissions=no name=NetWatch-init owner=admin policy=
ftp,reiniciar,ler,escrever,política,teste,senha,sniff,sensível,romon
source="#número deverificações antes da ligação ser trocada".
global nwwait 20;}
\n"
NetWatch - script executado em caso de falha do link principal
NetWatch-check - script executado temporariamente verificando a comutação para a ligação principal, neste script podemos definir por quanto tempo a ligação BACKUP a partir do momento da comutação permanecerá a ligação principal antes de verificarmos se a ligação principal já está a funcionar correctamente. Na situação padrão, isto é 15 minutos.
O próximo passo é definir um temporizador para a execução de scripts.
/sistema de agendamento
adicionar intervalo=1m nome=NetWatch no evento=
"/system script run NetWatch-check" policy="policy
policy="/system script run NetWatch-check".
ftp,reiniciar,ler,escrever,política,teste,senha,sniff,sensível,romon
start-date=apr/11/2020 start-time=17:31:44
É hora de configurar a ferramenta Netwatch Mikrotik. no lugar de A.B.C.D digite o endereço padrão do gateway do link principal. O valor de timeout podemos especificar o quão sensível será a detecção de falha do link principal.
relógio de rede /ferramenta
add comment=NetWatch down-script="/system script run NetWatch" host=A.B.D.
host=intervalo A.B.C.D =5s timeout=100ms
Finalmente você precisa configurar o roteamento, aqui usamos o truque do roteamento estendido e verificar a disponibilidade do gateway padrão. No lugar de A.B.C.D introduzir o endereço de gateway padrão do link primário, e no lugar de E.F.G.H introduzir o endereço de gateway padrão do link de backup BACKUP.
/rota de mergulho
add comment=MASTER distance=10 gateway=10.255.66.1
adicionar comentário=BACKUP distância=66 gateway=10.255.67.1
add check-gateway= distância de abertura=1 dst-address=10.255.66.1/32 gateway=
208.67.220.220 escopo=10
add check-gateway= distância de abertura=1 dst-address=10.255.66.1/32 gateway=10
8.8.8.8 escopo=10
add check-gateway= distância de abertura=1 dst-address=10.255.67.1/32 gateway=
208.67.222.222 escopo=10
add check-gateway= distância de abertura=1 dst-address=10.255.67.1/32 gateway=10
8.8.4.4 escopo=10
adicionar distância=1 dst-address=8.8.4.4/32 gateway=E.F.G.H scope=10
adicionar distância=1 dst-address=8.8.8.8/32 gateway=A.B.C.D scope=10
add distance=1 dst-address=208.67.220.220/32 gateway=A.B.C.D scope=10
add distance=1 dst-address=208.67.222.222/32 gateway=E.F.G.H scope=10
Utilizamos os populares endereços ip dos serviços dns do Google (8.8.8.8, 8.8.4.4) e OpenDNS (208.67.220.220, 208.67.222.222), os quais verificamos se são contactáveis por um determinado operador. Se eles estiverem disponíveis, o gateway padrão para o link é ativado.
Na solução acima, usamos dupla verificação do trabalho adequado do link da Internet, uma vez verificando o gateway padrão do link principal e, adicionalmente, verificando a disponibilidade de hosts "distantes na Internet" alcançados a partir de links específicos.
Esta solução tem alguma limitação, caso um dos operadores mude o parâmetro padrão do gateway durante a renegociação do link, não podemos configurá-lo diretamente.
Neste caso você tem que usar um roteador separado para esta conexão como mostrado nos diagramas abaixo e usá-lo como um gateway.