jan 14

Zebra / Quagga
Zebra Site: http://www.zebra.org/
Quagga Site: http://www.quagga.net/
-
O GNU/Zebra é um software que gerencia protocolos de roteamento baseados em TPC/IP e ele suporta BGP,RIP,OSPF tanto versões 2 e 3 sendo de ipv6. O Zebra foi idealizado pelo Kunishiro Ishiguro e após isso surgiu uma ramificação chamada Zebra-pj, que recentemente foi rebatizado de Quagga. A arvore de desenvolvimento do Quagga tem o objetivo de ser mais envolvida com a comunidade do que a do modelo centralizado do GNU Zebra.
Por que Quagga? Quagga é uma a evolução do Zebra que foi extinto por causa de problemas maiores. E foi então chamado assim por causa de uma brincadeira africana chamada “kwa-ha-ha, kwa-haha,” que repetindo varias vezes era o som de um animal. Bom nao sei qual!!
O Quagga possui um core daemon chamado zebra que atua como uma camada de abstração entre os Unix Kernel e Zserv API over a Unix ou TCP Stream to Quagga clients.
-
Os Zserv clients são:
ospfd: Implementação do OSPFv2
ospfd: Implementação do OSPFv2
ripd: Implementação do RIPv1 e v2
ospf6d: Implementação do OSPFv3 (IPv6)
ripngd: Implementação do RIPv3 (IPv6)
bgpd: Implementação do BGPv4+, incluindo suporte para IPv6 e multicast.• ospfd: Implementação do OSPFv2• ripd: Implementação do RIPv1 e v2• ospf6d: Implementação do OSPFv3 (IPv6)• ripngd: Implementação do RIPv3 (IPv6)• bgpd: Implementação do BGPv4+, incluindo suporte para IPv6 e multicast.
-
A instalação do Quagga/Zebra é muito mais recomendada atraves de uma compilação mas pode ser oferecida tambem pelo mantedor da sua distribução como no caso do Debian/Ubuntu e RHEL/SuSE/CentOS e Fedora.
A instalação do Quagga/Zebra é muito mais recomendada atraves de uma compilação mas pode ser oferecida tambem pelo mantedor da sua distribução como no caso do Debian/Ubuntu e RHEL/SuSE/CentOS e Fedora.
Para instalar o quagga no debian e ubuntu, execute: apt-get install quagga e em distribuições como Red Hat e CentOS execute o comando yum install quagga. Ja no SuSE vc pode usar o yast para pegar do DVD ou o zypper para pegar na internet.
Quando instalamos o quagga ele mantem em seu servidor 5 daemons que serão utilizados em background para gerenciar seus devidos protocolos de roteamento , tais como ripd, ripngd, ospfd, ospf6d, bgpd. Em distribuições antigas do Debian e CentOS era usado o daemon geral ou principal com o nome de zebra em /etc/init.d ou /etc/rc.d mas hoje é gerenciado pelo daemon /etc/init.d/quagga e os seus arquivos de configuração são encontrados no diretorio /etc/quagga , mas antes eram encontrados em /etc/zebra. Eles são:
-
bgpd.conf – Arquivo padrão de configuração do bgpd
daemons – Arquivo contendo opções para iniciar os daemos
ospf6d.conf – Arquivo padrão de configuração do ospfv3
ospfd.conf – Arquivo padrão de configuração do ospfv2
ripd.conf – Arquivo padrão de configuração do rip
ripngd.conf – Arquivo padrão de configuração do ripv3
vtysh.conf – Arquivo padrão de configuração de um nova shell integrada
zebra.conf – Arquivo de configuração do gerenciador
-
Toda configuração dos daemons do Quagga/Zebra são configurados no estilo daemon=(yes|no|priority) no arquivo /etc/quagga/daemons. Onde habilitamos o daemon derivado ao quagga ou não toda vez que ele for iniciado em boot (runlevel). O conteudo do arquivo se parece com:
-
zebra=no
bgpd=no
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
-
Caso encontre a necessidade na sua rede de usar o zebra (que gerencia) com bgp é so alterar o “no” para “yes” e reinciiar o quagga. Lembrando que tanto em Red Hat/CentOS , tanto em Debian /Ubuntu os initscripts são inicados da seguinte maneira:
/etc/init.d/quagga start|stop|restart|priority
O daemon zebra que é mais importante em distribuições Debian e Ubuntu,. o seu arquivo principal nao deve ser confundido com o arquivo /etc/quagga/debian.conf (que contem informacoes de loopback), e sim vc pode ter um arquivo ” sample ” de ambos no diretorio /usr/share/doc/quagga que para ser utilizado devemos copiar o arquivo modelo “sample” para o diretorio /etc/quagga seguindo somente a extencao do arquivo .conf.
O arquivo zebra.conf configura o daemon do zebra, que controla os outros módulos. Abaixo temos uma configuração mínima:
hostname unixrouter
password zebra
enable password zebra
log file /var/log/quagga/zebra.log
Após iniciar o daemon pode-se ter um sessão interativa através de um telnet:
# telnet 127.0.0.1 zebra
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘]’.
Hello, this is quagga (version 0.96.2).
Copyright 1996-2002 Kunihiro Ishiguro.
User Access Verification
Password:
Router> en
Password:
-
Router#
configure Configuration from vty interface
copy Copy configuration
debug Debugging functions (see also ‘undebug’)
disable Turn off privileged mode command
end End current mode and change to enable mode. 41
exit Exit current mode and down to previous mode
help Description of the interactive help system
list Print command list
no Negate a command or set its defaults
quit Exit current mode and down to previous mode
show Show running system information
terminal Set terminal line parameters
who Display who is on vty
write Write running configuration to memory, network, or terminal
Router#
-
Com o zebra podemos verificar a tabela de rotas do kernel, assim como colocar rotas estáticas e configurar interfaces e a sua configuração lembra muito o IO/OS da Cisco. Vejamos:
-
unixrouter# conf t
unixrouter(config)# interface eth1
unixrouter(config-if)# ip address 192.168.0.2/30
unixrouter(config-if)# quit
unixrouter(config)# ip route 10.10.10.10/24 192.168.0.1
unixrouter(config)# write
Configuration saved to /etc/quagga/zebra.conf
unixrouter(config)# exit
unixrouter# show ip route
Codes: K – kernel route, C – connected, S – static, R – RIP, O – OSPF,
B – BGP, > – selected route, * – FIB route
S>* 10.10.10.0/24 [1/0] via 192.168.0.1, eth1
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.0.0/30 is directly connected, eth1
unixrouter#
-
NOTA: lembrando que aqui como nao possuímos a memoria VALATIL e nem a NVRAM como o cisco vc não vai ser preciso copiar (hehehe) com o copy a memoria running-config para a startup-config E nem executar o famoso write mem para salvar mas somente executar o comando write e pronto, salvo em /etc/quagga/zebra.conf.
-
Um exemplo de configuracao do bgp:
unixrouter# conf t
unixrouter(config)# router bgp 65002
unixrouter(config-router)# bgp router-id 192.168.0.2
unixrouter(config-router)# network 20.10.0.0/16
unixrouter(config-router)# network 20.20.0.0/16
unixrouter(config-router)# network 20.30.0.0/16
unixrouter(config-router)# network 20.40.0.0/16
unixrouter(config-router)# neighbor 192.168.0.1 remote-as 65001
unixrouter(config-router)# quit
unixrouter(config)# wr
Configuration saved to /etc/quagga/bgpd.conf
unixrouter(config)# exit
unixrouter# show ip bgp summary
BGP router identifier 192.168.0.2, local AS number 65002
2 BGP AS-PATH entries
0 BGP community entries
Neighbor V AS MsgRcvd? MsgSent TblVer? InQ OutQ Up/Down State/PfxRcd
192.168.0.1 4 65001 6 10 0 0 0 00:01:57 4
Total number of neighbors 1
unixrouter# sh ip bgp
BGP table version is 0, local router ID is 192.168.0.2
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal
Origin codes: i – IGP, e – EGP, ? – incomplete
Network Next Hop Metric LocPrf? Weight Path
*> 10.10.0.0/16 192.168.0.1 0 0 65001 i
*> 10.20.0.0/16 192.168.0.1 0 0 65001 i
*> 10.30.0.0/16 192.168.0.1 0 0 65001 i
*> 10.40.0.0/16 192.168.0.1 0 0 65001 i
*> 20.10.0.0/16 0.0.0.0 0 32768 i
*> 20.20.0.0/16 0.0.0.0 0 32768 i
*> 20.30.0.0/16 0.0.0.0 0 32768 i
*> 20.40.0.0/16 0.0.0.0 0 32768 i
Total number of prefixes 8
unixrouter#


