Página 1 de 16 123456 ... ÚltimoÚltimo
+ Responder ao Tópico



  1. O objetivo deste tutorial é demonstrar como configurar um balanceamento de carga entre múltiplos links com um avançado Failover (Sem Scripts).

    Existem algumas formas de balancear links:
    - ECMP
    - NTH
    - PCC

    Para o balanceamento, iremos utilizar o PCC.
    O PCC ou “Per Connection Classifier”, marca os pacotes para que os mesmos sejam direcionados para o gateway certo, com isso a conexão ficará pertinente à certo gateway.

    Para o Failover, algumas pessoas usam ferramenta NetWatch para monitorar o Link. Outros usam scripts para executar ping periodicamente hosts remotos E então desabilitar rotas ou de alguma outra forma alterar o comportamento do roteamento/balanceamento.
    Mas nós iremos usar apenas /ip route para fazer esse monitoramento, sem NetWatch, sem script...

    Vamos lá.


    Cenário


    Clique na imagem para uma versão maior

Nome:	         CENARIO BALANCE.jpg
Visualizações:	17036
Tamanho: 	28,3 KB
ID:      	50501


    Eth5 – Lan 10.10.10.0/24
    IP no Mikrotik: 10.10.10.1

    Eth4 – LINK 1 - 10 MEGA - 192.168.30.0/24
    IP no Mikrotik: 192.168.30.2
    Gateway: 192.168.30.1

    Eth3 – LINK 2 - 10 MEGA - 192.168.31.0/24
    IP no Mikrotik: 192.168.31.2
    Gateway: 192.168.31.1



    REGRAS PARA OS IMPACIENTES

    /ip address
    add address=10.10.10.1/24 disabled=no interface=Eth5 network=10.10.10.0
    add address=192.168.30.2/24 disabled=no interface=Eth4 network=192.168.30.0
    add address=192.168.31.2/24 disabled=no interface=Eth3 network=192.168.31.0


    /ip firewall nat
    add action=masquerade chain=srcnat comment="### MASQUERADE ###" disabled=no out-interface=Eth4
    add action=masquerade chain=srcnat disabled=yes out-interface=Eth3


    /ip firewall mangle
    add action=mark-connection chain=prerouting comment="SITE POR LINK" connection-state=new disabled=no dst-


    address-list=LINK0 in-interface=Eth5 new-connection-mark=Sites0 passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=Sites0 disabled=no in-interface=Eth5 new-routing-mark=Rota0 passthrough=no
    add action=mark-connection chain=prerouting connection-state=new disabled=no dst-address-list=LINK1 in-interface=Eth5 new-connection-mark=Sites1 passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=Sites1 disabled=no in-interface=Eth5 new-routing-mark=Rota1 passthrough=no


    add action=add-dst-to-address-list address-list=ftp_con address-list-timeout=6h chain=prerouting comment="FTP FORA DO BALANCE" disabled=no dst-port=21 in-interface=Eth5 protocol=tcp
    add action=accept chain=prerouting disabled=no dst-address-list=ftp_con in-interface=Eth5
    add action=accept chain=prerouting comment="OUTRAS PORTAS FORA DO LOADBALACED" disabled=no dst-port=443,5000-6999,8080 in-interface=Eth5 protocol=tcp
    add action=accept chain=prerouting disabled=no dst-port=443,5000-6999,8080 in-interface=Eth5 protocol=udp


    add action=accept chain=prerouting comment="ACEITA REDE" disabled=no dst-address=192.168.30.0/24 in-interface=Eth5
    add action=accept chain=prerouting disabled=no dst-address=192.168.31.0/24 in-interface=Eth5


    add action=mark-connection chain=prerouting comment="MARCA CONEXAO ENTRADA PARA VOLTAR PELO MESMO LINK" connection-state=new disabled=no in-interface=Eth4 new-connection-mark=Eth4_conn passthrough=yes
    add action=mark-connection chain=prerouting connection-state=new disabled=no in-interface=Eth3 new-connection-mark=Eth3_conn passthrough=yes
    add action=mark-routing chain=output connection-mark=Eth4_conn disabled=no new-routing-mark=to_Eth4 passthrough=yes
    add action=mark-routing chain=output connection-mark=Eth3_conn disabled=no new-routing-mark=to_Eth3 passthrough=yes


    add action=mark-connection chain=prerouting comment="BALANCEANDO CONEXAO" connection-state=established disabled=no dst-address-type=!local in-interface=Eth5 new-connection-mark=Eth4_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/0
    add action=mark-connection chain=prerouting connection-state=established disabled=no dst-address-type=!local in-interface=Eth5 new-connection-mark=Eth3_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/1


    add action=mark-routing chain=prerouting comment="DIRECIONA MARCACAO PARA ROTEAMENTO" connection-mark=Eth4_conn disabled=no in-interface=Eth5 new-routing-mark=to_Eth4 passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=Eth3_conn disabled=no in-interface=Eth5 new-routing-mark=to_Eth3 passthrough=yes


    /ip route
    add disabled=no distance=1 dst-address=200.154.56.80/32 gateway=192.168.30.1 scope=10 target-scope=10
    add disabled=no distance=1 dst-address=208.67.222.222/32 gateway=192.168.30.1 scope=10 target-scope=10
    add disabled=no distance=1 dst-address=200.160.2.3/32 gateway=192.168.31.1 scope=10 target-scope=10
    add disabled=no distance=1 dst-address=208.67.220.220/32 gateway=192.168.31.1 scope=10 target-scope=10


    add check-gateway=ping disabled=no distance=1 dst-address=192.168.56.1/32 gateway=208.67.220.220 scope=10 target-scope=10
    add check-gateway=ping disabled=no distance=1 dst-address=192.168.56.1/32 gateway=200.160.2.3 scope=10 target-scope=10
    add check-gateway=ping disabled=no distance=1 dst-address=192.168.57.1/32 gateway=208.67.222.222 scope=10 target-scope=10
    add check-gateway=ping disabled=no distance=1 dst-address=192.168.57.1/32 gateway=200.154.56.80 scope=10 target-scope=10


    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=Rota0 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=Rota0 scope=30 target-scope=10
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=Rota1 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=Rota1 scope=30 target-scope=10


    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=to_Eth3 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=to_Eth3 scope=30 target-scope=10
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=to_Eth4 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=to_Eth4 scope=30 target-scope=10


    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.56.1 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.57.1 scope=30 target-scope=10


    add disabled=no distance=20 dst-address=200.154.56.80/32 type=blackhole
    add disabled=no distance=20 dst-address=200.160.2.3/32 type=blackhole
    add disabled=no distance=20 dst-address=208.67.220.220/32 type=blackhole
    add disabled=no distance=20 dst-address=208.67.222.222/32 type=blackhole
    Última edição por AndrioPJ; 27-02-2014 às 23:20.

  2. EXPLICAÇÃO DAS REGRAS IP ADDRESS e IP FIREWALL

    /ip address
    add address=10.10.10.1/24 disabled=no interface=Eth5 network=10.10.10.0
    add address=192.168.30.2/24 disabled=no interface=Eth4 network=192.168.30.0
    add address=192.168.31.2/24 disabled=no interface=Eth3 network=192.168.31.0


    /ip firewall nat
    add action=masquerade chain=srcnat comment="### MASQUERADE ###" disabled=no out-interface=Eth4
    add action=masquerade chain=srcnat disabled=yes out-interface=Eth3
    As regras acima criam a rede e faz o NAT.


    /ip firewall mangle
    add action=mark-connection chain=prerouting comment="SITE POR LINK" connection-state=new disabled=no dst-address-list=LINK0 in-interface=Eth5 new-connection-mark=Sites0 passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=Sites0 disabled=no in-interface=Eth5 new-routing-mark=Rota0 passthrough=no
    add action=mark-connection chain=prerouting connection-state=new disabled=no dst-address-list=LINK1 in-interface=Eth5 new-connection-mark=Sites1 passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=Sites1 disabled=no in-interface=Eth5 new-routing-mark=Rota1 passthrough=no
    As regras acima criam um address list para cadastrar ips que você queira que saia por um ou pelo outro Link.


    /ip firewall mangle
    add action=add-dst-to-address-list address-list=ftp_con address-list-timeout=6h chain=prerouting comment="FTP FORA DO BALANCE" disabled=no dst-port=21 in-interface=Eth5 protocol=tcp
    add action=accept chain=prerouting disabled=no dst-address-list=ftp_con in-interface=Eth5
    A regra acima evita problema com servidores FTP.


    /ip firewall mangle
    add action=accept chain=prerouting comment="OUTRAS PORTAS FORA DO LOADBALACED" disabled=no dst-port=443,5000-6999,8080 in-interface=Eth5 protocol=tcp
    add action=accept chain=prerouting disabled=no dst-port=443,5000-6999,8080 in-interface=Eth5 protocol=udp
    A regra acima retira outras portas do Balance.


    /ip firewall mangle
    add action=accept chain=prerouting comment="ACEITA REDE" disabled=no dst-address=192.168.30.0/24 in-interface=Eth5
    add action=accept chain=prerouting disabled=no dst-address=192.168.31.0/24 in-interface=Eth5
    A Regra acima aceita a conexão de cada Link.


    /ip firewall mangle
    add action=mark-connection chain=prerouting comment="MARCA CONEXAO ENTRADA PARA VOLTAR PELO MESMO LINK" connection-state=new disabled=no in-interface=Eth4 new-connection-mark=Eth4_conn passthrough=yes
    add action=mark-connection chain=prerouting connection-state=new disabled=no in-interface=Eth3 new-connection-mark=Eth3_conn passthrough=yes
    add action=mark-routing chain=output connection-mark=Eth4_conn disabled=no new-routing-mark=to_Eth4 passthrough=yes
    add action=mark-routing chain=output connection-mark=Eth3_conn disabled=no new-routing-mark=to_Eth3 passthrough=yes
    A regra acima marca a conexão de entrada do link para que ele volte pelo mesmo Link.


    /ip firewall mangle
    add action=mark-connection chain=prerouting comment="BALANCEANDO CONEXAO" connection-state=established disabled=no dst-address-type=!local in-interface=Eth5 new-connection-mark=Eth4_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/0
    add action=mark-connection chain=prerouting connection-state=established disabled=no dst-address-type=!local in-interface=Eth5 new-connection-mark=Eth3_conn passthrough=yes per-connection-classifier=both-addresses-and-ports:2/1
    A Regra acima é responsável pelo balanceamento. Como os dois links tem o mesmo peso, então criamos apenas 2 regra.
    Caso Um link tenha peso maior, então precisa ter 1 regra a mais para esse Link.


    /ip firewall mangle
    add action=mark-routing chain=prerouting comment="DIRECIONA MARCACAO PARA ROTEAMENTO" connection-mark=Eth4_conn disabled=no in-interface=Eth5 new-routing-mark=to_Eth4 passthrough=yes
    add action=mark-routing chain=prerouting connection-mark=Eth3_conn disabled=no in-interface=Eth5 new-routing-mark=to_Eth3 passthrough=yes
    A regra acima direciona a marcação para cada Link.


    EXPLICAÇÃO DAS REGRAS /IP ROUTE

    Aqui vem o pulo de Gato.
    Antes de explicar a Regra, temos que entender 3 coisas:

    1 - IP para Teste (a sua escolha).

    • Para o Link 1, eu configurei um dos IP do OpenDNS (208.67.222.222) e o site do Terra (200.154.56.80).
    • Para o Link 2, eu configurei o outro IP do OpenDNS (208.67.220.220) e o site do Registrobr (200.160.2.3)


    2 - Criar um Gateway Falso (Fake) (a sua escolha).

    • Para o Link 1, eu decidi que o Gateway Falso seria 192.168.56.1
    • Para o Link 2, eu decidi que o Gateway Falso seria 192.168.57.1


    3 - E finalmente, o Gateway Verdadeiro (veja a faixa de IP de cada link).

    • Para o Link 1, Gateway Verdadeiro é 192.168.30.1
    • Para o Link 2, Gateway Verdadeiro é 192.168.31.1



    Então vamos lá.

    /ip route
    add disabled=no distance=1 dst-address=200.154.56.80/32 gateway=192.168.30.1 scope=10 target-scope=10
    add disabled=no distance=1 dst-address=208.67.222.222/32 gateway=192.168.30.1 scope=10 target-scope=10

    add disabled=no distance=1 dst-address=200.160.2.3/32 gateway=192.168.31.1 scope=10 target-scope=10
    add disabled=no distance=1 dst-address=208.67.220.220/32 gateway=192.168.31.1 scope=10 target-scope=10
    A Regra diz por qual Link cada IP de teste deverá sair.
    Ele irá testar um IP, senão tiver sucesso irá testar o outro IP, se também não tiver sucesso só então irá derrubar a conexão.


    /ip route
    add check-gateway=ping disabled=no distance=1 dst-address=192.168.56.1/32 gateway=208.67.220.220 scope=10 target-scope=10
    add check-gateway=ping disabled=no distance=1 dst-address=192.168.56.1/32 gateway=200.160.2.3 scope=10 target-scope=10


    add check-gateway=ping disabled=no distance=1 dst-address=192.168.57.1/32 gateway=208.67.222.222 scope=10 target-scope=10
    add check-gateway=ping disabled=no distance=1 dst-address=192.168.57.1/32 gateway=200.154.56.80 scope=10 target-scope=10
    A Regra acima cria um destino Virtual.
    As duas primeiras direcionam os IPs de teste para o Gateway Falso do Link 1 (192.168.56.1/32)
    As duas outras direcionam os outros IPs de teste para o Gateway Falso do Link 2 (192.168.57.1/32)


    /ip route
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=Rota0 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=Rota0 scope=30 target-scope=10
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=Rota1 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=Rota1 scope=30 target-scope=10
    As Regras acima criam a rota de saída dos IPs que foram marcados no firewall (address-list) para sair por um ou outro Link.


    /ip route
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=to_Eth3 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=to_Eth3 scope=30 target-scope=10
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.57.1 routing-mark=to_Eth4 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.56.1 routing-mark=to_Eth4 scope=30 target-scope=10
    As regras acima criam as rotas de saída da marcação do Balanceamento.


    /ip route
    add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.56.1 scope=30 target-scope=10
    add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=192.168.57.1 scope=30 target-scope=10
    As regras acima é do Default Route, para aqueles que foram configurados no Firewall para sair por Fora do Balance.


    /ip route
    add disabled=no distance=20 dst-address=200.154.56.80/32 type=blackhole
    add disabled=no distance=20 dst-address=200.160.2.3/32 type=blackhole
    add disabled=no distance=20 dst-address=208.67.220.220/32 type=blackhole
    add disabled=no distance=20 dst-address=208.67.222.222/32 type=blackhole
    As regras acima corrigi um bug em algumas versões do Mikrotik.
    Quando um link caia, após retornar, as Rotas não eram recalculadas e todo o trafego continuava saindo por um unico Link.
    Com essas regras tudo é recalculado corretamente.
    Última edição por AndrioPJ; 27-02-2014 às 23:19.



  3. Muito Bom ! ! !
    Valew pela Contribuição amigo, já me tirou muitas duvidas aqui !

  4. Muito bom! Parabéns pela ótima iniciativa, vai ser de grande ajuda p/ muitos aqui no fórum.

    Tenho uma pergunta: no caso do exemplo postado, o cenário é c/ modems roteados, correto ?

    O que mudaria (além de não precisar adicionar IPs no IP>Address), se os modems estiverem em bridge ?

    Abraço.



  5. Citação Postado originalmente por FabianoMartins2 Ver Post
    Muito bom! Parabéns pela ótima iniciativa, vai ser de grande ajuda p/ muitos aqui no fórum.

    Tenho uma pergunta: no caso do exemplo postado, o cenário é c/ modems roteados, correto ?

    O que mudaria (além de não precisar adicionar IPs no IP>Address), se os modems estiverem em bridge ?

    Abraço.
    Citação Postado originalmente por Arthur Bernardes Ver Post
    Criar uma interface "PPPoE-Client" e nas configurações do balance, onde se define as interfaces cabeadas dos modens, defina as interfaces "PPPoE-Client".
    Olha, em parte o Arthur está certo.
    Basicamente nas regras de firewall basta alterar para a interface do PPoE.

    Contudo, em IP Route fica um pouco complicado fazer esse Failover.
    Em um breve teste, não foi possível criar um Gateway Fake em cima do PPoE, ele precisa de um IP para isso.

    Mas vou fazer mais testes.
    Quem sabe, adicionando um IP no mikrotik, direcionando esse IP para o PPoE... e depois criar um Gateway Fake em cima do IP criado.






Tópicos Similares

  1. Load balance pcc com links ip dinamico , como fazer?
    Por julinribeiro no fórum Redes
    Respostas: 21
    Último Post: 25-10-2017, 08:41
  2. Mini Balance PCC com Failover automático
    Por AndrioPJ no fórum Tutoriais
    Respostas: 149
    Último Post: 11-08-2017, 08:31
  3. Respostas: 35
    Último Post: 01-07-2016, 12:22
  4. Mini Balance PCC com Failover automático
    Por AndrioPJ no fórum Redes
    Respostas: 119
    Último Post: 29-06-2015, 11:00
  5. Load Balance pcc com Lentidão!
    Por maninho03 no fórum Redes
    Respostas: 26
    Último Post: 24-07-2012, 08:46

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L