#!/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!"