# Wiki source code of Balanceamento de Mikrotik com failover

Last modified by Jean Franco on 2023/06/28 17:52
Export
Office Formats
Export as PDF Export as ODT Export as RTF
Other Formats

Select the pages to export:

select all/ none

Legend:
  Created Page
  Modified Extension Page
  Clean Extension Page

Export as HTML

Show last authors

author | version | line-number | content
--- | --- | --- | ---
|  | 1 | **Motivo:**
|  | 2 |
|  | 3 | Prover um balanceamento entre os links e certamente redundância.
|  | 4 |
|  | 5 | **Tipos de Balanceamento:**
|  | 6 |
|  | 7 | - Bonding
|  | 8 |
|  | 9 | - Policy Route
|  | 10 |
|  | 11 | - PCC
|  | 12 |
|  | 13 | - Por banda
|  | 14 |
|  | 15 | **Bonding:**
|  | 16 |
|  | 17 | * Utiliza a tecnologia 802.3ad LACP e ambos os lados necessitam utilizar o mesmo tipo de equipamento para evitar compatibilidades.
|  | 18 |
|  | 19 | **Policy Routing:**
|  | 20 |
|  | 21 | * Uma lista de IPs internos utiliza uma rota e uma outra lista utiliza a segunda rota.
|  | 22 | * Não é dinâmico
|  | 23 |
|  | 24 | **PCC (Per Connection Classifier):**
|  | 25 |
|  | 26 | * Escalável e estável, mas não faz balanceamento.
|  | 27 |
|  | 28 | **Por banda:**
|  | 29 |
|  | 30 | * Escalável
|  | 31 | * Utiliza o link status como gatilho
|  | 32 | * Controle sobre as conexões
|  | 33 | * Pode usar links com diferentes velocidades
|  | 34 |
|  | 35 | ----
|  | 36 |
|  | 37 | Definido o tipo de balanceamento, vamos trabalhar.
|  | 38 |
|  | 39 | **Conexão:**
|  | 40 |
|  | 41 | Um pacote originado de uma origem precisa retornar para esta origem. Chamamos de Stream.
|  | 42 |
|  | 43 | No caso de uma conexão UDP, UDP stream.
|  | 44 |
|  | 45 | **Mangle:**
|  | 46 |
|  | 47 | Uma facilidade do ROS que permite que as conexões sejam "marcadas" e então ser utilizadas para um propósito.
|  | 48 |
|  | 49 | Essas marcas não saem do roteador, ficam localmente.
|  | 50 |
|  | 51 | **Rotas:**
|  | 52 |
|  | 53 | Tabelas para onde o roteador encaminha os pacotes.
|  | 54 |
|  | 55 | Por padrão todos os pacotes no Mikrotik são direcionadas para a tabela "main".
|  | 56 |
|  | 57 | Podemos criar nossas tabelas manualmente e direcionar os pacotes para essas novas rotas.
|  | 58 |
|  | 59 | **Topologia:**
|  | 60 |
|  | 61 | Internet - ISP 1 Internet - ISP 2
|  | 62 |
|  | 63 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~- ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~--
|  | 64 |
|  | 65 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~--
|  | 66 |
|  | 67 | ~| |
|  | 68 |
|  | 69 | Roteador
|  | 70 |
|  | 71 | {{code language="none"}}
|  | 72 | /interface ethernet
|  | 73 | set 0 name=LAN
|  | 74 | set 3 name=ISP_1 set 4 name=ISP_2
|  | 75 | /ip address add address=192.168.22.1/24 interface=LAN
|  | 76 | add address=1.1.1.2/24 interface=ISP_1
|  | 77 | add address=2.2.2.3/24 interface=ISP_2
|  | 78 | /ip firewall nat
|  | 79 | add action=masquerade chain=srcnat out-interface=ISP_1
|  | 80 | add action=masquerade chain=srcnat out-interface=ISP_2
|  | 81 | {{/code}}
|  | 82 |
|  | 83 | Neste exemplo, estamos configurando o ISP_1 e ISP_2 com IPs estáticos. Criamos as regras de mascaramento de cada um.
|  | 84 |
|  | 85 | Agora para a parte de Roteamento:
|  | 86 |
|  | 87 | {{code language="none"}}
|  | 88 | /ip route
|  | 89 | add gateway=1.1.1.1 distance=1
|  | 90 | add gateway=2.2.2.1 distance=2
|  | 91 | add gateway=1.1.1.1 routing-mark=ISP1_Route distance=1
|  | 92 | add gateway=2.2.2.1 routing-mark=ISP2_Route distance=1
|  | 93 | {{/code}}
|  | 94 |
|  | 95 | Adicionamos ambos os gateways, com pesos diferentes e também criamos distâncias diferentes para o failover.
|  | 96 |
|  | 97 | {{code language="none"}}
|  | 98 | /ip firewall address-list
|  | 99 | add address=1.1.1.0/24 list=Conectado
|  | 100 | add address=2.2.2.0/24 list=Conectado
|  | 101 | add address=192.168.22.0/24 list=Conectado
|  | 102 | add address=192.168.22.0/24 list=LAN
|  | 103 | {{/code}}
|  | 104 |
|  | 105 | Para evitar a perda de contato entre as redes, precisamos criar listas de conexões. Criamos portanto a lista Conectado
|  | 106 |
|  | 107 | {{code language="none"}}
|  | 108 | /ip firewall mangle
|  | 109 | add chain=prerouting src-address-list=Conectado
|  | 110 | dst-address-list=Connected action=accept
|  | 111 | {{/code}}
|  | 112 |
|  | 113 | Deste modo temos a conexão do roteador para fora, a conexão da WAN para LAN e da LAN para WAN.
|  | 114 |
|  | 115 | Quando a conexão vier da WAN precisamos certificar de que o pacote irá sair pela mesma interface que entrou.
|  | 116 |
|  | 117 | Vamos marcar os pacotes:
|  | 118 |
|  | 119 | {{code language="none"}}
|  | 120 | /ip firewall mangle
|  | 121 | add chain=input connection-mark=no-mark in-interface=ISP_1
|  | 122 | action=mark-connection new-connection-mark=ISP_1-LAN
|  | 123 | add chain=input connection-mark=no-mark in-interface=ISP_2
|  | 124 | action=mark-connection new-connection-mark=ISP2-LAN
|  | 125 | {{/code}}
|  | 126 |
|  | 127 | Agora adicionamos na tabela:
|  | 128 |
|  | 129 | {{code language="none"}}
|  | 130 | add chain=output connection-mark=ISP_1-LAN
|  | 131 | action=mark-routing new-routing-mark=ISP1_Route
|  | 132 | add chain=output connection-mark=ISP_2-LAN
|  | 133 | action=mark-routing new-routing-mark=ISP2_Route
|  | 134 | {{/code}}
|  | 135 |
|  | 136 | O mesmo para a LAN:
|  | 137 |
|  | 138 | {{code language="none"}}
|  | 139 | /ip firewall mangle
|  | 140 | add chain=forward connection-mark=no-mark in-interface=ISP_1
|  | 141 | action=mark-connection new-connection-mark=WAN1->LANs
|  | 142 | add chain=forward connection-mark=no-mark in-interface=ISP_2
|  | 143 | action=mark-connection new-connection-mark=WAN2->LANs
|  | 144 | add chain=prerouting connection-mark=WAN1->LANs src-address-list=LAN
|  | 145 | action=mark-routing new-routing-mark=ISP1_Route
|  | 146 | add chain=prerouting connection-mark=WAN2->LANs src-address-list=LAN
|  | 147 | action=mark-routing new-routing-mark=ISP2_Route
|  | 148 | {{/code}}
|  | 149 |
|  | 150 | Entrada pronta, agora a parte da LAN.
|  | 151 |
|  | 152 | {{code language="none"}}
|  | 153 | /ip firewall mangle
|  | 154 | add chain=prerouting connection-mark=no-mark src-address-list=LAN dst-addresslist=!Conectado dst-address-type=!local action=mark-connection
|  | 155 | new-connection-mark=LAN->WAN
|  | 156 | add chain=prerouting connection-mark=LAN->WAN src-address-list=LAN
|  | 157 | action=mark-routing new-routing-mark=ISP1_Route
|  | 158 | comment="Load-Balance"
|  | 159 | {{/code}}
|  | 160 |
|  | 161 | Precisamos desta regra pois quando trocarmos de link, vai trocar também por onde saem os links.
|  | 162 |
|  | 163 | {{code language="none"}}
|  | 164 | add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP1_Route
|  | 165 | action=mark-connection new-connection-mark=Sticky_ISP1
|  | 166 | add chain=prerouting connection-mark=LAN->WAN routing-mark=ISP2_Route
|  | 167 | action=mark-connection new-connection-mark=Sticky_ISP2
|  | 168 | add chain=prerouting connection-mark=Sticky_ISP1 src-address-list=LAN
|  | 169 | action=mark-routing new-routing-mark=ISP1_Route
|  | 170 | add chain=prerouting connection-mark=Sticky_ISP2 src-address-list=LAN
|  | 171 | action=mark-routing new-routing-mark=ISP2_Route
|  | 172 | {{/code}}
|  | 173 |
|  | 174 | Estas regras resolvem o problema de iniciar a conexão por um provedor e tentar usar outro provedor depois, muito importante especialmente para acesso a bancos.

# Applications

# Tips

Jump to any page in the wiki with Ctrl+G or Meta+G.
See more shortcuts.

Maila Networks
XWiki Debian 14.4.1