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
