rendered paste body#!/bin/bash
IP=`which ip`
IPTABLES=`which iptables`
# Configurao de rede.
P0_NET=192.168.0.0/24
IF0=eth0
IP0=192.168.0.100
# Link 1
P1_NET=100.100.100.0/24
IF1=eth1
IP1=100.100.100.100
P1=100.100.100.1
# Link 2
P2_NET=255.255.255.0
IF2=eth2
IP2=200.200.200.200
P2=200.200.200.2
echo "[+] Limpando todo garbage..."
$IP route flush all
$IP route flush table link1
$IP route flush table link2
echo "[*] OK!"
echo "[+] Adicionando rotas para tabela principal..."
$IP route add $P0_NET dev $IF0 src $IP0
$IP route add $P1_NET dev $IF1 src $IP1
$IP route add $P2_NET dev $IF2 src $IP2
echo "[*] OK!"
echo "[+] Configurando Link 1..."
$IP route add $P1_NET dev $IF1 src $IP1 table link1
$IP route add default via $P1 table link1
echo "[*] OK!"
echo "[+] Configurando Link 2..."
$IP route add $P2_NET dev $IF2 src $IP2 table link2
$IP route add default via $P2 table link2
echo "[*] OK!"
#echo "[+] Adicionando rota preferida..."
#$IP route add default via $P2
#echo "[*] OK!"
echo "[+] Adicionando regras das rotas..."
$IP rule del from $IP1 table link1
$IP rule add from $IP1 table link1
$IP rule del from $IP2 table link2
$IP rule add from $IP2 table link2
echo "[*] OK!"
echo "[+] Adicionando rede local na tabela do link1..."
$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
echo "[*] OK!"
echo "[+] Adicionando rede local na tabela do link2..."
$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
echo "[*] OK!"
echo "[+] Adicionando rede local na tabela do link3..."
$IP route add $P0_NET dev $IF0 table link3
$IP route add $P1_NET dev $IF1 table link3
$IP route add $P2_NET dev $IF2 table link3
$IP route add 127.0.0.0/8 dev lo table link3
echo "[*] OK!"
echo "[+] Habilitando forwarding do kernel..."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "[*] OK!"
echo "[+] Desabilitando filtro de pacotes reverso..."
for i in `ls /proc/sys/net/ipv4/conf`; do
echo "0" > /proc/sys/net/ipv4/conf/$i/rp_filter
done
echo "[*] OK!"
echo "[+] Balanceando links..."
echo "2" > /proc/sys/net/ipv4/route/gc_interval
echo "2" > /proc/sys/net/ipv4/route/gc_timeout
$IP route add default scope global equalize nexthop via $P1 dev $IF1 weight 3 nexthop via $P2 dev $IF2 weight 1
# nexthop via $P3 dev $IF3 weight 1
echo "[*] OK! Load Balance concludo com sucesso!!! =)"
echo "[+] Flush routes..."
$IP route flush cache
echo "[*] OK!"