Decidi fazer este post devido a crescente demanda por links unidirecionais. Os famosos links
via sátelite que estão com preços bem acessíveis e alta disponibilidade. Entretanto
existe um grande problema que é o fato dele somente funcionar para o download.
Abaixo mostrarei como resolver este problema de uma forma bem simples.
Vou simular um cenário onde possuimos 2 links, sendo:
O "link A" é bi-direcional de 2MB e o "link B" unidirecional de 4MB.
### Primeiramente vamos definir as interfaces que serão usadas ###
Interface do link A: LinkA
Interface do link B: LinkB
Interface dos clientes: Clientes
### Não precisaremos efetuar marcações de entrada e saida pois somente um link é bi-direcional ###
### Agora precisamos efetuar o balanceamento conforme a capacidade de cada link. Iremos usar a proporção 1/3, pois a soma dos links é 6MB e denominador comun é 2.
Logo 6/2 = 3. Para isso###
/ip firewall mangle
add action=mark-connection chain=prerouting comment="" disabled=no dst-address-type=!local in-interface=Clientes new-connection-mark=A_conn \
passthrough=yes per-connection-classifier=both-addresses:3/0
add action=mark-connection chain=prerouting comment="" disabled=no dst-address-type=!local in-interface=Clientes new-connection-mark=B_conn \
passthrough=yes per-connection-classifier=both-addresses:3/1
add action=mark-connection chain=prerouting comment="" disabled=no dst-address-type=!local in-interface=Clientes new-connection-mark=B_conn \
passthrough=yes per-connection-classifier=both-addresses:3/2
### Neste caso não precisaremos alterar as rotas conforme as marcações das conexões pois somente um link é bi-direcional. ###
### Agora precisamos fazer uma correção nas conexões para que elas saiam pelo link A e voltem pelo link B ###
/ip firewall nat
add action=masquerade chain=srcnat comment="" disabled=no out-interface=LinkA connection-mark=A_conn
add chain=srcnat action=src-nat to-addresses=IP_do_LinkB out-interface=LinkA connection-mark=B_conn
### Por fim as tabelas de rotas ###
/ip route
add comment="" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=LinkA scope=30 target-scope=10
Obs.: Neste caso o FAILOVER não será possível, pois somente um dos links é bi-direcional.
Então é isso ai pessoal. Espero ter ajudado e qualquer dúvida é só perguntar, ok?
Abs.