[FUG-BR] RES: Quagga + PBR + FreeBSD
Patrick Tracanelli
eksffa em freebsdbrasil.com.br
Quarta Novembro 19 10:36:11 BRST 2008
Renato Frederick escreveu:
> Patrick,
>
> Muito estranho,
>
> Se no meu firewall eu tenho 2 sessões BGP e faço por ex:
>
> #ipfw add 1 fwd ISP2 all from IP_INTERNO to any
Muito estranho. Em um dos ambientes que faço PBR o ambiente é exatamente
igual. Mas faço na interface de entrada, o ambiente ta assim
em0 = gw do cliente (Interna)
em1 = EBT
em2 = Intelig
Faço com pf-route-to mas acabei de testar com ipfw, com balanceamento:
01000 3503343728 3411906585417 prob 0.400000 fwd $gw_ebt ip from {
$rede1 or $rede2 } to not $rede1,$rede2 in via em0
01100 5255091455 5117945807373 fwd $gw_gvt ip from { $rede1 or $rede2 }
to not $rede1,$rede2 in via em0
E também PBR:
01500 866602 57539533 fwd $gw_ebt ip from $rede3 to not $rede3
in via em0
O unico detalhe é que faço a alteração do próximo salto na entrada.
Fiz isso pra testar, na verdade o que uso é:
pf.conf:
pass in on $ifi route-to { ($ifebt $gwebt), ($ifgvt $gwgvt) }
round-robin from any to route <4230t18881> keep state
Sendo um router o 'keep state' é dispensável se quiser fazer PBB por
pacote; resolvi fazer por sessão.
bgpd.conf:
match from any { source-as 4230, transit-as 18881 } set localpref +200
match from any { source-as 4230, transit-as 18881 } set rtlabel
"4230t18881"
Funciona que é uma beleza =)
> Quero algo parecido que você, na verdade, o tráfego de entrada já coloquei
> prepends para forçar a voltar por um ISP. Agora o tráfego de saída irei
> forçar conforme a origem.
>
> Por exemplo.
>
> Rede 100.100.0.0/21 sair ISP1
> Rede 100.100.8.0/21 sair ISP2
>
> A volta já está OK.
>
>
> No cisco eu faria um PBR na interface LAN e ele ainda, caso o gateway do
> ISP2 estivesse down, faria o tráfego sair pelo ISP1. Com o IPFW também acho
> que isto não vai funcionar, se o ISP2 cair ele vai continuar mandando o FWD
> para lá...
Vai sim, com ipfw você vai precisar dar um "set disable" na regra quando
detectar que o peer está down. Facil de qualquer forma, 1 linha no cron.
Com pf e rtlabel isso ja funciona sozinho, as sessoes sao removidas
quando a rota com o label deixa de existir, e ai match do openbgp não
bate mais com nenhuma rota pois se não tem o peer, não tem rota q
coincida com a regra.
> o route get mostra a rota que o zebra entregou...
Deveria funcionar, na minha cabeça não faz sentido não funcionar pq
tanto bgpd do quagga quanto do openbgp fazem inclusive as mesmas
syscalls pra manipular a tabela de rotas.
--
Patrick Tracanelli
FreeBSD Brasil LTDA.
Tel.: (31) 3516-0800
316601 em sip.freebsdbrasil.com.br
http://www.freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"
Mais detalhes sobre a lista de discussão freebsd