Pessoal,
estou tentando fazer o balanceamento de carga entre 2 speedys home e um 
virtua
no Slackware 11.0.
Não sei o que está errado, mas não há maneira de fazer o mascaramento pela 
conexões.
O que eu quero fazer é o seguinte:
Usar os 3 links somados, e acessar o DNS apenas por 1 speedy.

segue abaixo o script que escrevi baseado em um que vi na net:
# conecta o virtua
dhcpcd -d eth3 &
#conecta o speedy
/etc/rc.d/speedy1
# espera 3 segundos
sleep 3
# Conecta o speedy 2
/etc/rc.d/speedy2
# Retira a rota padrao do speedy 2
#Ativa o IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#pega as conexoes
P0_NET='192.168.0.0/24'
IF0='eth0'
IF_VIRTUA='eth3'
IP_VIRTUA=`cat /etc/dhcpc/dhcpcd-eth3.info|grep -i IPADDR|cut -d "=" -f 2`
PVIRTUA=`cat /etc/dhcpc/dhcpcd-eth3.info|grep -i GATEWAY |cut -d "=" -f 2`
VIRTUA_NET=`cat /etc/dhcpc/dhcpcd-eth3.info|grep -i NETWORK |cut -d "=" -f 
2`
VIRTUA_NET=$VIRTUA_NET/23
IF1='ppp0'
IP1=`ifconfig |grep -i ppp0 -A 4 |grep -i addr |cut -d " " -f 12 |cut -d 
":" -f 2`
P1=`ifconfig |grep -i ppp0 -A 4 |grep -i addr |cut -d " " -f 14 |cut -d 
":" -f 2`
P1_NET=`ifconfig |grep -i ppp0 -A 4 |grep -i addr |cut -d " " -f 14 |cut -d 
":" -f 2`
P1_NET=$P1_NET/32
echo $P1_NET
IF2='ppp1'
IP2=`ifconfig |grep -i ppp1 -A 4 |grep -i addr |cut -d " " -f 12 |cut -d 
":" -f 2`
P2=`ifconfig |grep -i ppp1 -A 4 |grep -i addr |cut -d " " -f 14 |cut -d 
":" -f 2`
P2_NET=`ifconfig |grep -i ppp1 -A 4 |grep -i addr |cut -d " " -f 14 |cut -d 
":" -f 2`
P2_NET=$P2_NET/32
echo $P2_NET
echo -n "Inicializando as tabelas de rotas"
echo "255 local" > /etc/iproute2/rt_tables
echo "254 main" >> /etc/iproute2/rt_tables
echo "253 default" >> /etc/iproute2/rt_tables
echo "0 unspec" >> /etc/iproute2/rt_tables
#outras tabelas
echo "200 speedy1" >> /etc/iproute2/rt_tables
echo "201 speedy2" >> /etc/iproute2/rt_tables
echo "202 virtua" >> /etc/iproute2/rt_tables
echo "203 router1" >> /etc/iproute2/rt_tables
echo "OK"
echo -n "resetando as tabelas:"
ip route flush table speedy1
ip route flush table speedy2
ip route flush table virtua
ip route flush table router1
echo "OK"
echo -n "Criando tabela do speedy 1:"
ip route show table main | grep -v ^default |while read ROUTE ; do
ip route add table speedy1 $ROUTE
done
ip route add $IP1 via $P1 table speedy1
ip route add default via $P1 table speedy1
echo "OK"
echo -n "criando a tabela do speedy2:"
ip route show table main | grep -v ^default |while read ROUTE ; do
ip route add table speedy2 $ROUTE
done
ip route add $IP2 via $P2 table speedy2
ip route add default via $P2 table speedy2
echo "OK"
echo -n "criando a tabela do virtua:"
ip route show table main | grep -v ^default |while read ROUTE ; do
ip route add table virtua $ROUTE
done
ip route add $IP_VIRTUA via $PVIRTUA table virtua
ip route add default via $PVIRTUA table virtua
echo "OK"
echo -n "criando a tabela de roteamento:"
ip route add default table router1 nexthop dev $IF1 via $P1 weight 1 nexthop 
dev $IF2 via $P2 nexthop dev $IF_VIRTUA via $PVIRTUA
echo "OK"
echo "Criando as regras de roteamento:"
ip rule add from $IP1 table speedy1 prio 26
ip rule add from $IP2 table speedy2 prio 27
ip rule add from $IP_VIRTUA table virtua prio 25
ip rule add fwmark 1 table speedy1 prio 29
ip rule add fwmark 2 table speedy2 prio 30
ip rule add fwmark 3 table virtua prio 31
ip rule add fwmark 4 table router1 prio 24
echo "OK"
echo -n "Limpando o Cache de roteamento"
ip route flush cache
echo "OK"
echo -n "Configurando o iptables"
iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -F -t mangle
iptables -X
# Default Politic Rules
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t mangle -A PREROUTING -p tcp -i eth0 --dport 25 -j 
MARK --set-mark 3
### faz com que o servico dns faca consultas por um link
iptables -t mangle -A OUTPUT -p udp --dport 53 -m owner --uid-owner 25 -j 
MARK --set-mark 3
### faz o squid utilizar a tabela de roteamento com load balance
iptables -t mangle -A OUTPUT -p TCP --dport 80 -m owner --uid-owner 23 -j 
MARK --set-mark 4
iptables -t mangle -A PREROUTING -i eth0 -j MARK --set-mark 4
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
echo "OK"

O que estou fazendo de errado ?

Obrigado.

Fábio Russo. 


---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a