[FUG-BR] balanceamento ipfw

Alex de A. Souza alex_a_souza em msn.com
Quarta Abril 15 23:50:46 BRT 2009


Quando insiro as três regras no ipfw o cliente para de trafegar.
Então coloquei essas regras de um dos colegas;
${fwcmd} add 10 divert 8669 all from any to 200.88.99.86 in recv rl2
${fwcmd} add 20 divert 8669 all from 192.168.0.0/16 to any out xmit rl0
${fwcmd} add 30 fwd 200.88.99.81 ip from 200.88.99.86 to any
${fwcmd} add 40 divert 8668 all from any to 172.30.50.52 in recv rl0
${fwcmd} add 50 divert 8668 all from 192.168.0.0/16 to any out xmit rl0
Onde o GW default é; 172.30.4.254
rl0 é o principal; 172.30.50.52
rl1 é dos clientes; 192.168.0.1
rl2 é o secundario p/ ser balanceado; 200.88.99.86
natd -s -n rl0 -p 8668
natd -s -n rl2 -p 8669
Dessa forma o rl2 "secundario" funfa legal
e os clientes "rl1" trafegam só que o "rl0" principal
para de trafegar, quando deleto a seguinte linha no ipfw;
${fwcmd} add 20 divert 8669 all from 192.168.0.0/16 to any out xmit rl0 ,
vouta a trafegar no rl0 principal e para o rl2 secundario.
Onde estou errando?




Wanderson Tinti escreveu;

A dica dos colegas são otimas. Mas se for utilizar o ipfw, pode usar o
natd ou a opção setfib. Com natd vc usaria 2 instancia e na regra de
ipfw usaria a opção prob 0.5, para mandar metanda para a instancia 1 e
o resto para instancia 2, por exemplo:

ipfw add 3000 prob 0.5 skipto 3100 ip from any to any out
ipfw add 3050 divert 8668 ip from any to any out
ipfw add 3100 divert 8669 ip from any to any out


com a opção da tabela fib, você compila o kernel com a opção
ROUTETABLES=2        # que é seu numero de gw

adicionaria as rotas:
setfib 0 route add default gw_embratel
setfib 1 route add default gw_telemar

ipfw add prob 0.5 setfib 0 all from any to any out keep-state //metada pra 
um
ipfw add setfib 1 all from any to any out keep-state //resto pro outro
 



Mais detalhes sobre a lista de discussão freebsd