Re: balanceamento de links
lucianogf, implementei o load balance e vou tentar ajudar você em suas dúvidas.
1. Os links ADSL serão configurados normalmente, entretanto, a rota padrão deve ser excluída para que seja incluída uma nova regra no final, informando que a rota padrão será composta pelo balanceamento dos dois links:
ip route add default table $T0 nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
Também será configurada uma rota padrão para a tabela main.
2. Essa regra é a principal do load balance, e para fazer o balanceamento com pesos diferentes basta mudar na regra acima o valor de um dos valores após a palavra "weight":
ip route add default table $T0 nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 3
Neste caso, para 100 pacotes transmitidos através da $IF1 para fora, aproximadamente 30% dos pacotes serão transmitidos através do LINK da $IF1.
3. Essa é a mais importante das dúvidas: como fazer?
IF1=eth1
IF2=eth2
IP1=192.168.0.1
IP2=192.168.1.1
P1=192.168.0.254
P2=192.168.1.254
P1_NET=192.168.0.0
P2_NET=192.168.1.0
echo "199 T1" >> /etc/iproute2/rt_tables
echo "200 T2" >> /etc/iproute2/rt_tables
echo "201 T0" >> /etc/iproute2/rt_tables
iptables -A PREROUTING -t mangle -s 10.0.0.1/24 -d 0/0 -j MARK --set-mark 3
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip rule add fwmark 3 lookup $T0 prio 3
ip route add default table $T0 nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
ip route flush cache
As únicas diferenças entre esse script e o que você postou é a existência de uma terceira tabela onde será configurada a rota padrão por onde sairão os pacotes da rede interna (que foram marcados antes), devidamente balanceados.
Quando tentei implementar o loadbalance pela primeira vez, todos os scripts que eu encontrava na Internet configuravam o balanceamento na rota padrão. Tentei por diversas vezes implementar do modo como você postou e não consegui.
Daí tive a idéia de marcar os pacotes da rede interna direcionados aos links e direcioná-los para a tabela $T0. Não sei te explicar porquê, mas sem uma rota na tabela main não rola...
Bem, espero ter ajudado. Tenta aê e posta o resultado!
Re: balanceamento de links
cara...
fiz uns testes aqui mas não saiu como o esperado...
os todas as requisições sempre saem pela rota padrão..
até onde eu sei deveria intercalar entre as duas interfaces, mas não é isso que está acontecendo...
as regras que estou usando são as seguintes:
Citação:
#!/bin/bash
IPT=/usr/local/sbin/iptables
INT=eth0
IF_ADSL1=eth1
IF_ADSL2=eth2
# Limpando Regras antigas
$IPT -t nat -F
$IPT -t filter -F
$IPT -t mangle -F
$IPT -t nat -X
$IPT -t filter -X
$IPT -t mangle -X
# Definicao de regras padrão
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -A PREROUTING -t mangle -i eth0 -d 0/0 -j MARK --set-mark 3
$IPT -t nat -A POSTROUTING -o $IF_ADSL2 -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $IF_ADSL1 -j MASQUERADE
Citação:
#!/bin/bash
# Interface ADSL 1
IF1=eth1
# Interface ADSL 2
IF2=eth2
# IP 1
IP1=10.0.1.1
# IP 2
IP2=10.0.2.1
# Gateway 1
P1=10.0.1.254
# Gateway 2
P2=10.0.2.254
# Rede 1
P1_NET=10.0.1.0
# Rede 2
P2_NET=10.0.2.0
ip route add $P1_NET dev $IF1 src $IP1 table ADSL1
ip route add default via $P1 table ADSL1
ip route add $P2_NET dev $IF2 src $IP2 table ADSL2
ip route add default via $P2 table ADSL2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1
ip rule add from $IP1 table ADSL1
ip rule add from $IP2 table ADSL2
ip rule add fwmark 3 lookup ADSL0 prio 3
ip route add default table ADSL0 nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
ip route flush cache
/etc/iproute2/rt_tables
Citação:
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 ADSL2
199 ADSL1
198 ADSL0
valeu
Re: balanceamento de links
cara..
resolvi a parada aqui...
seguindo o seguinte endereço:
http://www.debian-administration.org/articles/377
depois de ver este artigo, percebi q o problema é q em todos os artigos q havia lido, neles falava pra adicionar a rota padrão, mas se irá fazer balanceamento não precisa adicioná-la, o próprio balanceamento adiciona as duas ou mais rotas como padrão, mas definindo que será feito balanceamento..
e pra poder balancear especificando os tipos de pacotes foi bem simples, é só marcar o pacote com iptables, depois adicionar o outro link, q nao seja o padrão, a uma tabela, e depois especificar a marcação para esta tabela...
valeu
Re: balanceamento de links
Eu não conseguia fazer no início por isso... Daí adicionei mais uma tabela conforme postei, marquei os pacotes da rede interna pra serem roteados através da tabela $T0 e tá funcionando aqui até hoje.
Quando eu tentei fazer sem especificar a rota padrão na tabela main não funcionava de jeito nenhum...
Mas gostei de saber disso! Vou "acertar" o meu aqui e testar pra ver se funciona.