Olá pessoal,
Vou colocar aqui um tutorial de load-balance + fail-over para 2 LINK de internet e saída para clientes.
OBS: Já deve ter algum tutorial por ai no fórum, mas é sempre bom ter mais conteúdo.
Vamos lá.
Cenário a ser configurado.
Código :Interfaces Ether1 – LINK 1 Ether2 – LINK 2 Ether3 – CLIENTES
Adicionando IP as interfaces.
Código :ip address add address=192.168.10.2/30 interface=Ether1 comment="********* LINK 1 *********" ip address add address=192.168.20.2/30 interface=Ether2 comment="********* LINK 2 *********" ip address add address=10.0.0.1/24 interface=Ether3 comment="********* CLIENTES *********"
Agora vamos as regras para configurar o balance.
Mangle
Essa regra é conhecida como policy router, onde estamos criando uma regra que a entrada dos clientes vai sair pela rede 192.168.10.0 ou pela rede 192.168.20.0.
Código :/ ip firewall mangle add chain=prerouting dst-address=192.168.10.0/30 action=accept in-interface=Ether3 add chain=prerouting dst-address=192.168.20.0/30 action=accept in-interface=Ether3
Aqui estamos marcando as conexões para sair e voltar pela mesma rota, evitando perda de conexões com alguns sites e ocasionando erros.
Código :add chain=prerouting in-interface=ether1 connection-mark=no-mark action=mark-connection new-connection-mark=ether1_conn add chain=prerouting in-interface=ether2 connection-mark=no-mark action=mark-connection new-connection-mark=ether2_conn
Aqui vamos fazer o mark-routing, onde é capturado todo o tráfego que está indo para o próprio router, e dividir todo o tráfego entre os links.
Código :add chain=prerouting in-interface=Ether3 connection-mark=no-mark dst-address-type=!local per-connection-classifier=both-addresses:2/0 action=mark-connection new-connection-mark=Ether1_conn add chain=prerouting in-interface=Ether3 connection-mark=no-mark dst-address-type=!local per-connection-classifier=both-addresses:2/1 action=mark-connection new-connection-mark=Ether2_conn
É preciso marcar os pacotes com uma própria marcação, para ele sairem e retornarem no mesmo link, também para politica de roteamento.
Código :add chain=prerouting connection-mark=Ether1_conn in-interface=Ether3 action=mark-routing new-routing-mark=to_Ether1 add chain=prerouting connection-mark=Ether2_conn in-interface=Ether3 action=mark-routing new-routing-mark=to_Ether2 add chain=output connection-mark=Ether1_conn action=mark-routing new-routing-mark=to_Ether1 add chain=output connection-mark=Ether2_conn action=mark-routing new-routing-mark=to_Ether2
Vamos criar roteamento agora.
Antes na regras de mangle nós criamos marcação para usar no roteamento, e logo abaixo vamos criar rota já usando marcação de roteamento criado acima.
Código :/ ip route add dst-address=0.0.0.0/0 gateway=192.168.10.1 routing-mark=to_Ether1 check-gateway=ping add dst-address=0.0.0.0/0 gateway=192.168.20.1 routing-mark=to_Ether2 check-gateway=ping
Aqui vamos habilitar o fail-over, caso uma rota caia, partir para segunda rota que é calculado na distance, isso acontece pois logo na regra anterior habilitamos o check gateway
Código :add dst-address=0.0.0.0/0 gateway=192.168.10.1 distance=1 check-gateway=ping add dst-address=0.0.0.0/0 gateway=192.168.20.1 distance=2 check-gateway=ping
Agora crie o mascaramento dos links.
Código :/ ip firewall nat add chain=srcnat out-interface=Ether1 action=masquerade add chain=srcnat out-interface=Ether2 action=masquerade
Obs: Espero ter ajudado alguém, alguma dúvida pergunte que vamos respondendo na medida do possível para todos ter conhecimento dessa configuração e implantar em seu provedor ou empresa.
Att.
Everton Luigi
OBS: Essa configuração de balance está sendo utilizado em meu cenário real, com as configurações parecidas.