Andreatti,
Segue http://blog.aeciopires.com/wp-conten...r-Mikrotik.pdf
Se usar o dns 8.8.8.8 para sua rede local utilize outros dns's para fazer a verificação.
Utilize algum desses http://www.guiadowindows.net/os-melh...-dns-publicos/
Versão Imprimível
Andreatti,
Segue http://blog.aeciopires.com/wp-conten...r-Mikrotik.pdf
Se usar o dns 8.8.8.8 para sua rede local utilize outros dns's para fazer a verificação.
Utilize algum desses http://www.guiadowindows.net/os-melh...-dns-publicos/
@Andreatti,
Só para você ter mais informações, você pode usar tabelas de roteamento nomeadas para fazer isso, sem precisar criar rotas especificas para IPs públicos. Ao invés de usar o Netwatch, nesse caso, você usa o Scheduler. Digamos que você tem 2 links com roteadores nos seguintes IPs:
Link #1: 192.168.1.1/24
Link #2: 192.168.2.1/24
Você cria as rotas assim:
Código :
/ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=routelink1 distance=1 comment="Link1_Main" /ip route add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=routelink1 distance=2 comment="Link1_Fail" /ip route add dst-address=0.0.0.0/0 gateway=192.168.2.1 routing-mark=routelink2 distance=1 comment="Link2_Main" /ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=routelink2 distance=2 comment="Link2_Fail"
Como você pode ver, usamos os 2 gateways para a tabela de roteamento "routelink1", e os 2 gateways para a tabela de roteamento "routelink2". Porém, perceba os atributos "distance". A tabela "routelink1", tem 2 rotas para qualquer endereço (0.0.0.0/0), mas com "distance" diferente, isso quer dizer que a rota de menor distancia vai sempre ser usada, e a rota de distancia 2 assumirá quando a de distancia 1 não estiver funcionando (quando você desabilitar ela por script). Deste modo, você pode fazer o seu Load Balance com os 2 links funcionando, e quando um link cair, o outro assume o trafego geral.
Os "comment" são para facilitar a vida nos scripts principalmente.
No Scheduler, você pode criar um script assim:
Código :
:local ping [ping 208.67.220.220 routing-table=routelink1 count=2] :if ($ping=0) do={ /ip route set [find comment="Link1_Main"] disabled=yes } else={ /ip route set [find comment="Link1_Main"] disabled=no } :local ping [ping 208.67.220.220 routing-table=routelink2 count=2] :if ($ping=0) do={ /ip route set [find comment="Link2_Main"] disabled=yes } else={ /ip route set [find comment="Link2_Main"] disabled=no }
Esse script, vai fazer uma sequencia de 2 pings no IP especificado (no caso coloquei ali o IP do OpenDNS, pois o do google aqui pra mim costuma perder pacotes de ping). Primeiro 2 pings usando a tabela de roteamento "routelink1" e caso perca os 2 pacotes, ele desabilita a rota com comentário "Link1_Main", que é a rota original do primeiro link, com distancia 1, e nesse momento, a rota de distancia 2 assume, sendo que a rota de distancia 2 na verdade é o segundo link.
Logo após ele da mais 2 pings para o OpenDNS usando a tabela "routelink2", e caso perca os 2 pacotes desabilita a rota com comentário "Link2_Main", o que faz com que a de distancia 2 assuma e ela na realidade é o link 1.
Bom, é por ai.
Claro que pra isso funcionar, você precisa fazer marcação de pacotes no seu mangle, mas você disse que ja tem um loadbalance. Não sei como fez seu LoadBalance, mas se fez com marcação de pacotes, não precisa alterar muito o mangle, é só ajustar os nomes que tu criou para as routing-marks.
A questão de alguns sites, principalmente bancos, não abrirem, vai acontecer com frequencia caso você use PCC especificando valores que com frequencia podem mudar ao acesso a esses serviços. Por exemplo, quando você abre o site do banco, o formulário HTML ou Javascript fornecido para entrar os dados vem de um servidor X, porém, a autenticação dos dados desses formulários é feito no servidor Y (ips diferentes). E por motivos de segurança, os sites identificam caso você tente logar os dados por uma rota (seu IP público) sendo que os dados não foram entrados no formulário por aquela mesma rota.
Por isso, quando você usa PCC com "both address" ou "both address and ports", ou somente "dst address" ou "dst address and ports" costuma dar esse problema, pois frequentemente o load balance vai abrir a pagina (HTML) que ta no servidor X por um link e na hora de logar vai mandar os dados do formulario para o servidor Y por outro link.
Faz tempo que eu vi isso, mas se você simplesmente colocar varios gateways em uma só rota ele faz um load balance com uma política de round-robin se não me engano, o que vai gerar o mesmo problema.
Portanto, a maneira mais facil seria usar PCC com "src address" como valor de hash, pois o mesmo usuário nesse caso sairia sempre pelo mesmo link. Depois disso, criando experiência com o mangle, você pode criar politicas de balanceamento mais complexas, baseando-se por serviços por exemplo, e/ou por portas, protocolos.