[FUG-BR] [patch] add support setfib(1) in rc.d/routing
Renato Frederick
frederick em dahype.org
Quinta Setembro 3 10:02:11 BRT 2009
Quagga nao sabe nada de tabela so sistema operacional, o que ele vai fazer é, por exemplo, se o zebra estiver ativo e junto um daemon como ospf ou bgp, injetar a rota com metrica 0 ou outra dependendo da preferencia que ele resolver conforme o protocolo entregar.
Se voce pensa em fazer algo do tipo PBR, tera que apelar para o IPFW ou PF e manipular neles.
O máximo que dá para fazer é algum route-map + match e manipular o next-hop.
> -----Original Message-----
> From: freebsd-bounces em fug.com.br [mailto:freebsd-bounces em fug.com.br]
> On Behalf Of Danton Dorati
> Sent: quinta-feira, 3 de setembro de 2009 08:43
> To: "Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)"
> Subject: Re: [FUG-BR] [patch] add support setfib(1) in rc.d/routing
>
> Acredito que não, fib é a nível kernel, tanto que precisa estar compilado com
> a opção ROUTETABLES=N para que possa usar esse recurso.
>
>
> Rafael Ganascim wrote:
> > Aproveitando o assunto....
> >
> > Sera que o quagga de alguma maneira pode trabalhar com as varias
> > tabelas? Ou ele consegue apenas usar a main?
> >
> >
> > 2009/9/2 Danton Dorati <danton em freebsdbrasil.com.br>:
> >
> >> Para aqueles que já estão familiarizados com o novo recurso de poder
> >> manipular várias (no total 16) tabelas de roteamento (fib)
> >> no FreeBSD aqui vai um patch, mesmo que ainda não oficial (já foi
> >> submetido um PR para adicionar esse recurso),
> >> para poder manipular através do rc.conf, rotas defaults de cada tabela
> >> (defaultrouter_fibN) e rotas estáticas (static_routes_fibN),
> >> onde "N" é número da tabela de roteamento que deseja manipular
> >> (lembrando que a primeira fib é a 0).
> >>
> >> # fetch -o /usr/src/rc.d-routing_man-rc.conf.patch
> >> "http://www.freebsd.org/cgi/query-pr.cgi?prp=132476-1-
> txt&n=/patch.txt"
> >> # patch -d /usr/src -p0 < /usr/src/rc.d-routing_man-rc.conf.patch
> >> # cp -p /etc/rc.d/routing /etc/rc.d/routing.old
> >> # cp /usr/src/etc/rc.d/routing /etc/rc.d
> >> # chmod +x /etc/rc.d/routing
> >> # cp -p /usr/share/man/man5/rc.conf.5.gz
> >> /usr/share/man/man5/rc.conf.5.gz.old
> >> # gzip -cn /usr/src/share/man/man5/rc.conf.5 >
> >> /usr/share/man/man5/rc.conf.5.gz
> >>
> >> Para mais informações do novo recurso.
> >> # man rc.conf
> >>
> >> Obs.: Eu mesmo fiz alguns testes, inclusive com servidores em produção,
> >> ou seja rebootei as máquinas e usei os comandos:
> >>
> >> Muita atenção em executar esses comandos em máquinas remotas.
> >> # /etc/netstart
> >> # /etc/rc.d/routing (stop|start|restart)
> >>
> >> Acredito que esse Problem Report ainda não foi "committado", pois
> >> quando se deixa de usar a forma padrão para atribuir
> >> uma rota default na fib 0 e passa a usar especificando a tabela de
> >> roteamento (defaultrouter_fib0="IP"), ou seja ignorando
> >> defaultrouter="IP", a máquina fica sem rota de saída para internet. Ou
> >> seja o uso dessa opção ainda é necessário (obrigatório)
> >> caso queira que continue tendo conectividade com o mundo externo
> >> (nuvem). No entanto é bem simples de corrigir esse pequeno
> >> "bug" (patch do patch). Basta adicionar o seguinte no arquivo
> >> /etc/rc.d/routing na função "static_start()":
> >>
> >> Logo abaixo de "_fibs_num=`sysctl -n net.fibs`"
> >>
> >> if [ -z "${defaultrouter}" ] || [ "${defaultrouter}" = "NO" ] &&
> >> [ -n "${defaultrouter_fib0}" ]; then
> >> defaultrouter=${defaultrouter_fib0}
> >> fi
> >> if [ -z "${defaultrouter}" ] || [ "${defaultrouter}" = "NO" ] &&
> >> [ -z "${defaultrouter_fib0}" ]; then
> >> defaultrouter="NO"
> >> fi
> >>
> >> Ficando parecido com esse trecho:
> >>
> >> ...
> >> static_start()
> >> {
> >> _fibs_num=`sysctl -n net.fibs`
> >> if [ -z "${defaultrouter}" ] || [ "${defaultrouter}" = "NO" ] &&
> >> [ -n "${defaultrouter_fib0}" ]; then
> >> defaultrouter=${defaultrouter_fib0}
> >> fi
> >> if [ -z "${defaultrouter}" ] || [ "${defaultrouter}" = "NO" ] &&
> >> [ -z "${defaultrouter_fib0}" ]; then
> >> defaultrouter="NO"
> >> fi
> >> if [ -n "${static_routes}" ]; then
> >> static_routes_fib0=${static_routes}
> >> fi
> >> if [ -n "${defaultrouter}" ]; then
> >> defaultrouter_fib0=${defaultrouter}
> >> fi
> >>
> >> # Setup static routes. This should be done before router discovery.
> >> ...
> >>
> >>
> >>
> >>
> >> --
> >> Atenciosamente,
> >> Danton Dorati
> >>
> >> http://www.freebsdbrasil.com.br
> >> Telefone/Fax: (31) 3516 0800
> >> FreeBSD Brasil - FreeBSD Brasil LTDA
> >> Avenida Getulio Vargas, 54 - 3º andar
> >> Funcionarios - Belo Horizonte.
> >>
> >> "Happiness is nothing more than good health and a bad memory."
> >>
> >> -------------------------
> >> 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
> >
>
>
> --
> Atenciosamente,
> Danton Dorati
>
> http://www.freebsdbrasil.com.br
> Telefone/Fax: (31) 3516 0800
> FreeBSD Brasil - FreeBSD Brasil LTDA
> Avenida Getulio Vargas, 54 - 3º andar
> Funcionarios - Belo Horizonte.
>
> "Happiness is nothing more than good health and a bad memory."
>
> -------------------------
> 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