Crie um arquivo de script “.sh” e digite o código abaixo:
# nano /etc/script/balanceamento.sh
#!/bin/bash
# aqui apenas criamos as variáveis com todas as informações da sua rede
# como ip, mascara de sub-rede e gateway.
IF0=eth0
P0_NET="`ip route | grep -v default | grep src | grep $IF0 | awk '{print $1}'`"
IF1=eth1
P1_NET="`ip route | grep -v default | grep src | grep $IF1 | awk '{print $1}'`"
P1="`ip route | grep -v default | grep src | grep $IF1 | awk -F. '{print $1"."$2"."$3".1"}'`"
IP1=`ip addr show dev $IF1 | grep "inet " | awk '{print $2}' | awk -F/ '{print $1}'`
IF2=ppp0
P2_NET="`ip route | grep -v default | grep src | grep $IF2 | awk '{print $1}'`"
P2="`ip route | grep -v default | grep src | grep $IF2 | awk -F. '{print $1"."$2"."$3".1"}'`"
IP2=`ip addr show dev $IF2 | grep "inet " | awk '{print $2}' | awk -F/ '{print $1}'`
# você esta preenchendo as tabelas de roteamento com as variáveis.
# assim, tudo que vier da rede eth1 irá para a tabela link1
ip route add $P1_NET dev $IF1 src $IP1 table link1
ip route add default via $P1 table link1
# tudo que vier da rede ppp0 irá para a tabela link2
ip route add $P2_NET dev $IF2 src $IP2 table link2
ip route add default via $P2 table link2
# na tabela link1 também deverá conter os endereços da eth0 (rede local)
# ppp0 (a outra internet) e o seu computador localhost
ip route add $P0_NET dev $IF0 table link1
ip route add $P2_NET dev $IF2 table link1
ip route add 127.0.0.0/8 dev lo table link1
# na tabela link2 também deverá conter os endereços da eth0 (rede local)
# eth1 (a outra internet) e o seu computador localhost
ip route add $P0_NET dev $IF0 table link2
ip route add $P1_NET dev $IF1 table link2
ip route add 127.0.0.0/8 dev lo table link2
# estamos indicando qual a tabela certa para fazer o roteamento
# indicando o IP de origem e a tabela
ip rule add from $IP1 table link1
ip rule add from $IP2 table link2
# aqui é a parte importante em que ele divide a conexão ao meio usando o 'weight 1'
# significa que seu link1 e link2 são da mesma velocidade
ip route change default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
Transforme o seu ‘.sh’ em executável:
# chmod +x /etc/script/balanceamento.sh
Salve o arquivo e crie um atalho para que ele execute automaticamente ao iniciar o PC, geralmente eu sempre uso o rc.local para que meus scripts iniciem.
# nano /etc/rc.local #[adicione no final do arquivo:] /etc/script/balanceamento.sh
Adicionando as tabelas de roteamento:
Edite também o arquivo onde contem as tabelas, só assim o link1 e o link2 serão referenciados.
# /etc/iproute2/rt_tables
E adicione o que estiver o link1 e link2, siga o exemplo abaixo, digite apenas o que estiver em negrito.
# # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 1 link1 2 link2