Em ambientes onde a conectividade com sistemas remotos é essencial — como servidores ERP, bancos de dados ou aplicações hospedadas em nuvem — é fundamental ter um mecanismo de failover automático para conexões VPN. Este artigo apresenta um script para MikroTik RouterOS que realiza essa verificação e troca automática entre túneis IPsec (principal e backup), garantindo a continuidade do serviço.
📜 O Script V2: Verificação e Failover de VPN IPsec
O código abaixo pode ser adicionado ao seu roteador MikroTik. Ele executa uma verificação via ping em um host remoto e, em caso de falha, alterna para a VPN de backup automaticamente.
/system script
add name=Status_VPN_Monitor policy=read,write,test source={
# IP usado para testar conectividade (host remoto do outro lado da VPN)
:local ipTest "172.16.10.10"
# IP de origem para o teste de ping (geralmente o IP local da interface do túnel)
:local srcIP "192.168.100.1"
# Comentários usados para identificar as VPNs no Mikrotik
:local vpnPrincipal "VPN_Principal"
:local vpnBackup "VPN_Backup"
# Primeira verificação de conectividade com a VPN Principal
:if ([/ping src-address=$srcIP $ipTest count=30 interval=2s] = 0) do={
:log warning "Falha detectada na $vpnPrincipal. Alternando para $vpnBackup..."
/ip ipsec policy disable [find comment=$vpnPrincipal]
/ip route disable [find comment=$vpnPrincipal]
/ip ipsec policy enable [find comment=$vpnBackup]
:log warning "Aguardando 2 minutos para validar a $vpnBackup..."
:delay 2m
# Segunda verificação com VPN Backup ativa
:if ([/ping src-address=$srcIP $ipTest count=30 interval=2s] = 0) do={
:log warning "$vpnBackup também falhou. Retornando para $vpnPrincipal..."
/ip ipsec policy disable [find comment=$vpnBackup]
/ip route enable [find comment=$vpnPrincipal]
/ip ipsec policy enable [find comment=$vpnPrincipal]
} else={
:log info "$vpnBackup está operacional."
}
} else={
:log info "$vpnPrincipal está acessível. Nenhuma ação necessária."
}
}
/system scheduler
add name=check-vpn interval=5m on-event="/system script run Status_VPN_Monitor"
📜 O Script V1: Verificação e Failover de VPN IPsec
Utilize esta versão caso tenha algum problema na V2 apresentada anteriormente.
/system script
add name=Status_VPN_Monitor policy=read,write,test source={
# Primeira verificação de conectividade
:if ([/ping src-address=192.168.100.1 172.16.10.10 count=30 interval=2s] = 0) do={
:log warning "Falha detectada na VPN_Principal. Alterando para a VPN_Backup..."
/ip ipsec policy disable [find comment="VPN_Principal"]
/ip route disable [find comment="VPN_Principal"]
/ip ipsec policy enable [find comment="VPN_Backup"]
:log warning "Aguardando 2 minutos para validar a VPN_Backup..."
:delay 2m
# Segunda verificação
:if ([/ping src-address=192.168.100.1 172.16.10.10 count=30 interval=2s] = 0) do={
:log warning "VPN_Backup ainda inacessível. Retornando para VPN_Principal..."
/ip ipsec policy disable [find comment="VPN_Backup"]
/ip route enable [find comment="VPN_Principal"]
/ip ipsec policy enable [find comment="VPN_Principal"]
} else={
:log info "VPN_Principal voltou a responder."
}
} else={
:log info "VPN_Principal está acessível. Nenhuma ação necessária."
}
}
/system scheduler
add name=check-vpn interval=5m on-event="/system script run Status_VPN_Monitor"
💡 Resumo
IP no Script | Papel | O que usar no seu ambiente |
---|
192.168.100.1 | Origem do ping (MikroTik) | IP da interface do MikroTik com saída para a VPN |
172.16.10.10 | Alvo do ping (host remoto) | IP de um servidor remoto confiável na VPN |
⚙️ Como Funciona
- O script é executado a cada 5 minutos.
- Ele faz 30 tentativas de ping para o IP do sistema monitorado.
- Se o host estiver inacessível:
- Desativa a política e rota da VPN principal.
- Ativa a política da VPN de backup.
- Aguarda 2 minutos e faz uma nova verificação.
- Se o host voltar a responder, mantém a VPN principal.
- Caso contrário, força nova tentativa com a principal, mantendo o log de eventos.
✅ Benefícios
- Evita falhas no acesso a sistemas críticos como ERP.
- Alternância automática entre túneis VPN.
- Logs informativos para auditoria e troubleshooting.
- Totalmente integrado ao sistema MikroTik.
Comments are closed