[FUG-BR] RES: Load Balance

Marcio A. Sepp marcio em zyontecnologia.com.br
Terça Outubro 2 21:49:55 BRT 2007


O pf faz sim...  Segue um exemplo:
pass out on em0 route-to (em0 200.xxx.xxx.2) round-robin from any to any
keep state probability 33%

Indo um pouco mais a fundo...  Neste exemplo modelo, se uma placa cair, o
tráfego continuará sendo enviado para ela, mas como eu faria para no caso de
uma placa falhar, o tráfego ser encaminhado para a outra?  

Não digo necessariamente a placa, mas digamos que o "gateway da placa" caia.
Tem como redirecionar o tráfego para outra interface (digo isso em
real-time)?  

Alguém sabe como resolver isso? 



Att.
Márcio A. Sepp
 

> -----Mensagem original-----
> De: freebsd-bounces em fug.com.br 
> [mailto:freebsd-bounces em fug.com.br] Em nome de Neerlan Amorim
> Enviada em: terça-feira, 2 de outubro de 2007 20:25
> Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
> Assunto: Re: [FUG-BR] Load Balance
> 
> Jean, vou ficar te devendo essa, pois só vi isso no ipfw.
> 
> On 10/2/07, jean <jean em w3nt.com> wrote:
> >
> > Neerlan, nao tenho conhecimento em PF, mas nele vc pode gerenciar 
> > varios links e controlar a % de caga para cada um?
> >
> > Obrigado,
> >
> > Jean
> >
> > ----- Original Message -----
> > From: "Neerlan Amorim" <neerlan em gmail.com>
> > To: "Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)"
> > <freebsd em fug.com.br>
> > Sent: Tuesday, October 02, 2007 6:15 PM
> > Subject: Re: [FUG-BR] Load Balance
> >
> >
> > Da uma olhada nesse link.
> > http://www.bsdsul.com.br/tutoriais_detalhe.php?cod=27&tipo=2
> > é uma solução bem interessante usando o PF.
> >
> > Neerlan Amorim
> >
> > On 10/2/07, Jean Zanuzo <jean em w3nt.com> wrote:
> > >
> > > Marcelo Soares da Costa escreveu:
> > > > Podia postar aqui um exemplo disso , na net vc acha 
> exemplos com 
> > > > carp []'s
> > > >
> > > >>>
> > > >>>
> > > >> Voce também pode usar o ipfw com prob e mais de uma 
> instancia do 
> > > >> natd combinando com regra forward, conforme a largura dos seu 
> > > >> links vc
> > pode
> > > >> regular a probabilidade de pacotes para cada um, ou nao usar o 
> > > >> prob e fazer forward nas rotas ou portas, conforme 
> preferir, ou 
> > > >> combinando
> > > tudo
> > > >> isso, fica muito bom! ;)
> > > >>
> > > >> Jean Zanuzo
> > > >>
> > > >>
> > > >> -------------------------
> > > >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> > > >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> > > >>
> > > >
> > > > -------------------------
> > > > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > > > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> > > Exemplo com dois Links, a interface bge0 na operadora A e 
> a bge1 na 
> > > operadora B, e a em0 indo para a INTRANET.
> > >
> > > *As configuracoes das Interfaces:
> > > *# ifconfig bge0
> > > bge0 inet 200.xxx.yyy.138 netmask 0xfffffffc broadcast 
> 200.xxx.yyy.139
> > >      inet 200.xxx.yyy.142 netmask 0xffffffff broadcast 
> > > 200.xxx.yyy.142 # ifconfig bge1
> > > bge1 inet 189.xxx.yyy.2 netmask 0xfffffffc broadcast 189.xxx.yyy.3
> > >      inet 189.xxx.yyy.10 netmask 0xffffffff broadcast 
> 189.xxx.yyy.10 
> > > # ifconfig em0 em0  inet 189.xxx.yyy.17 netmask 
> 0xfffffffc broadcast 
> > > 189.xxx.yyy.19
> > >
> > > *O Default router*
> > > defaultrouter="200.xxx.yyy.137" #Sendo o ip do roteador 
> da operadora 
> > > A (Que será a operadora principal)
> > >
> > > *A configuracao do natd*
> > > Um arquivo por operadora, vamos criar o arquivo natd.a para a 
> > > operadora A e o natd.b para a operadora B *Cada natd 
> utilizara uma 
> > > porta diferente.
> > >
> > > Arquivo /etc/natd.a
> > > alias_address 200.xxx.yyy.142
> > > port 8667
> > > use_sockets yes
> > >
> > > Arquivo /etc/natd.b
> > > alias_address 189.xxx.yyy.10
> > > port 8668
> > > use_sockets yes
> > >
> > > inicialize o natd
> > > natd -f /etc/natd.a
> > > natd -f /etc/natd.b
> > >
> > > *A configuracao do ipfw*
> > > ipfw add check-state
> > >
> > > # Aqui é onde direciona os pacotes para os natd \\ # das 
> operadoras, 
> > > exceto da operadora A, que já \\ # está no defaultrouter, entao o 
> > > que nao combinhar \\ # com nenhuma regra, automaticamente 
> vai \\ # 
> > > para a operadora A
> > >
> > >    # exemplo q redireciona para a operadora B as portas 
> espeficicas 
> > > 80, 443, 22, 23
> > >    ipfw add divert 8668 ip from not 189.xxx.yyy.0/25 to 
> any dst-port
> > > 80,443,22,23 recv em0
> > >
> > >    # exemplo q redireciona para a operadora B os destinos 64.0.0.0
> > >    ipfw add divert 8668 ip from not 189.xxx.yyy.0/25 to 
> 64.0.0.0/8 
> > > recv em0
> > >
> > >    # exemplo q redireciona para a operadora B 50% dos pacotes
> > >    ipfw add prob 0.5 divert 8668 ip from not 
> 189.xxx.yyy.0/25 to any 
> > > recv em0 setup keep-state
> > >
> > >    # exemplo q redireciona para a operadora B 30% dos pacotes,e o 
> > > restanta p/ a operadora A
> > >    ipfw add prob 0.3 divert 8668 ip from not 
> 189.xxx.yyy.0/25 to any 
> > > recv em0 setup keep-state
> > >
> > >    # para mais links, basta criar mais instancias do 
> natd.[c,d,e,f] 
> > > para cada e criar regras para elas
> > >
> > > # passagem direta fora do natd para os ips validos da opradora B 
> > > ipfw add fwd 189.xxx.yyy.1 ip from 189.xxx.yyy.0/25 to 
> any recv em0 
> > > ipfw add fwd 189.xxx.yyy.1 ip from 189.xxx.yyy.0/25 to 
> any xmit bge0
> > >
> > > #natd para os pacotes na interface da operadora B ipfw add divert 
> > > 8668 ip from any to any via bge1
> > >
> > > #natd para operadora A
> > > ipfw add divert 8667 ip from not 200.xxx.yyy.128/25 to 
> any out via 
> > > bge0 #nao vamos fazer nat nos ips validos ipfw add divert 8667 ip 
> > > from any to 200.xxx.yyy.142 in via bge0 #vamos nat no retorno 
> > > somente do ip na alias usada pelo nat
> > >
> > > ipfw add allow ip from any to any
> > >
> > > * o 189.xxx.yyy.1 é o roteador da operadora B.
> > >
> > > ----
> > > Faz o teste, é mais ou menos isso, vc adequa a suas necessidades, 
> > > qualquer duvida, problema ou sugestao principalmente 
> posta ai, hehehe.
> > > []'s
> > >
> > >
> > > Jean Zanuzo
> > > -------------------------
> > > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> > >
> > -------------------------
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >
> > -------------------------
> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> 



Mais detalhes sobre a lista de discussão freebsd