hackingsnake
(usa Slackware)
Enviado em 23/03/2009 - 23:38h
Olá comunidade, preciso da ajuda de vocês no seguinte: Tenho 2 conexões e ambas são de IP Dinâmicos, sendo que uma é “Net-Virtua” e outra (PPPOE) “Speedy-Telefonica”, eu preciso somar os links, sendo que cada um deles tem 4MB de Downstream e 600 Kbp/s de UPStream. Foi então que resolvi implementar um load-balance com referencia técnica obtidas em:
http://lartc.org/howto/ . O meu problema é o seguinte, parece que ele apesar de não me devolver erro no script quando testado com o “bash –vx /usr/sbin/load-balance.sh” parece que não está funcional, e depois de muito testar acredito que seja algo referente ao GW do speedy, uma vez que eu não tenho um arquivo que me mostre todos os status da conexão do speedy como a que eu tenho com o Virtua: Abaixo segue meu script e espero que vocês possam me ajudar:
******* Acredito não estar funcional, pois ele não está fazendo as conexões a partir de speedy em nenhum servi;co, mesmo quando o link do virtua está carregado, e além do mais, quando eu desligo o link do Virtua, ele não faz o switch para o link do speedy, mesmo eu tendo alterado o valor de (300 para 20) milesegundos em: "/proc/sys/net/ipv4/route/gc_timeout"
#/usr/sbin/loadbalance.sh
#################################
#!/bin/bash
# = Fazendo as conexoes de REDE com os serviços de Internet:
# Conectando o NET-VIRTUA (SP)
dhcpcd -d eth3 &
# Conectando o Telefonica Speedy (SP) conforme configuracao do pppoe-setup
pppoe-start
# Fazendo uma espera de 3 segundos para o reconhecimento do PPPOE (SPEEDY)
sleep 3
#Ativa o ROTEAMENTO IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#== Marcando as conexoes Conforme segue abaixo:
# Conexao com a rede local LAN:
P0_NET='192.168.0.0/24'
# Conexao com a rede local (Local Gateway)
IF0='eth1'
#Conexao com o NET Virtua:
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
# Conexao com o Telefonica Speedy:
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
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 "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 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 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 $IF_VIRTUA via $PVIRTUA weight 1
echo "OK"
echo "Criando as regras de roteamento:"
ip rule add from $IP1 table speedy1 prio 25
ip rule add from $IP_VIRTUA table virtua prio 26
ip rule add fwmark 1 table speedy1 prio 29
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 eth1 --dport 25 -j MARK --set-mark 3
# Marcando o LINK para o servico de pesquisa de DNS:
iptables -t mangle -A OUTPUT -p udp --dport 53 -m owner --uid-owner 25 -j MARK --set-mark 1
# Selecionando o roteamento com load balance para servicos especificos:
iptables -t mangle -A OUTPUT -p tcp --dport 80 -m owner --uid-owner 23 -j MARK --set-mark 4
iptables -t mangle -A OUTPUT -p tcp --dport 5900 -m owner --uid-owner 23 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p udp --dport 28009 -m owner --uid-owner 23 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p tcp --dport 28009 -m owner --uid-owner 23 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p udp --dport 18009 -m owner --uid-owner 23 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p tcp --dport 18009 -m owner --uid-owner 23 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 4
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
echo "OK"
No aguardo, e muito Obrigado,
One.!
Só ajudando para ser ajudado... Só contribuindo para ter de volta.!
Nothing good comes easy, and all good things take sometime.!