Já vi vários posts na internet mostrando como fazer
o balanceamento de carga em dois ou mais links no mikrotik, mas todos os que eu
vi ou deixam um dos links sem utilização somente como failover ou você tem que
dividir as saídas por certos ips da sua rede interna.
Nenhum dos casos me agradou, à seguir vou mostrar
como fazer um balanceamento de carga de uma forma eficaz sem subutilizar um dos
links ou dividir sua rede, usando “ECMP load balance” no mikrotik.
Cenário:
LAN: 192.168.0.1/24
WAN1: 172.16.10.10/32 – Link Embratel 2Mb
WAN2: 172.16.20.10/32 – Link OI 2Mb
IPS Mikrotik:
LAN: 192.168.0.1
WAN1:172.16.10.1
WAN2:172.16.20.1
IPS Routers:
WAN1: 172.16.10.10
WAN2:172.16.20.10
Regras:
/ip address
add address=192.168.0.1/24 broadcast=192.168.0.255 comment=”LAN”
disabled=no \
interface=ether2 network=192.168.0.0
add address=172.16.10.1/24 broadcast=172.16.10.255 comment=”WAN1″
disabled=no \
interface=ether3 network=172.16.10.0
add address=172.16.20.1/24 broadcast=172.16.20.255 comment=”WAN2″
disabled=no \
interface=ether1 network=172.16.20.0
/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.10.10,172.16.20.10
check-gateway=ping
/ ip firewall nat
add chain=srcnat out-interface=WAN1 action=masquerade
add chain=srcnat out-interface=WAN2 action=masquerade
/ ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection
new-connection-mark=wan1_conn
add chain=input in-interface=WAN2 action=mark-connection
new-connection-mark=wan2_conn
add chain=output connection-mark=wan1_conn action=mark-routing
new-routing-mark=to_wan1
add chain=output connection-mark=wan2_conn action=mark-routing
new-routing-mark=to_wan2
/ ip route
add dst-address=0.0.0.0/0 gateway=172,16.10.10 routing-mark=to_wan1
add dst-address=0.0.0.0/0 gateway=172.16.20.10 routing-mark=to_wan2
Explicação:
-IP Address:
/ip address
add address=192.168.0.1/24 broadcast=192.168.0.255 comment=”LAN”
disabled=no \
interface=ether2 network=192.168.0.0
add address=172.16.10.10/24 broadcast=172.16.10.255 comment=”WAN1″
disabled=no \
interface=ether3 network=172.16.10.0
add address=172.16.20.10/24 broadcast=172.16.20.255 comment=”WAN2″
disabled=no \
interface=ether1 network=172.16.20.0
Neste
trecho definimos os ips da interface local LAN (192.168.0.1/24) e os ips das
interfaces externas WAN(172.16.10.1/24 e 172.16.20.1/24), claro, ips inválidos,
adeque a sua necessidade!
-Routing:
/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.10.10,172.16.20.10
check-gateway=ping
Aqui
criamos uma rota tipica de ECMP (Equal Cost Multi-Path), com check-gateway. Por
definição o ECMP é persistente por conexão, ou seja, se um cliente estabelece
conexão pelo gateway 172.16.10.10, ele irá utilizar somente este gateway
durante ESTA conexão. Assim que um dos links cair o check-gateway irá remove-lo
da lista de gateway, com isso você terá um efeito failover de brinde.
Você
pode utilizar também links assimétricos, por exemplo, digamos que o link da OI
seja de 4Mb e o da Embratel de 8Mb, sendo o da Embratel o dobro do link da OI,
você pode fazer a rota da seguinte forma para não subutilizar um dos links:
/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.20.10,172.16.10.10,172.16.10.10
check-gateway=ping
-NAT:
/ ip firewall nat
add chain=srcnat out-interface=wan1 action=masquerade
add chain=srcnat out-interface=wan2 action=masquerade
Como
as rotas já foram decididas, só precisamos das regras para corrigir o
src-address para os pacotes de saída, Se o pacote sair pela WAN1 será “NATeado”
para 172.16.10.10/24, caso contrário será para 172.16.20.10/24.
-Conexões Entrantes:
/ ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection
new-connection-mark=wan1_conn
add chain=input in-interface=wlan2 action=mark-connection
new-connection-mark=wan2_conn
add chain=output connection-mark=wan1_conn action=mark-routing
new-routing-mark=to_wan1
add chain=output connection-mark=wan1_conn action=mark-routing
new-routing-mark=to_wan2
/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.10.10 routing-mark=to_wan1
add dst-address=0.0.0.0/0 gateway=172.16.20.10 routing-mark=to_wan2
Imagine
um pacote INPUT vindo pelo link da Oi e retornando pelo link da Embratel, com
ip diferente não vai dar, para evitar isso, vamos avisar ao mikrotik que o
pacote que for recebido pelo link1 deve ser retornado pelo mesmo link.
Conclusão:
O
ECMP é uma boa forma de balancear múltiplos links no mikrotik, com a utilização
dele não subutilizamos os links e conseguimos um failover caso um dos links
caiam, ele bem configurado dificilmente dará problemas.
Nenhum comentário:
Postar um comentário