Cargando...
 

Implementación de Quagga en Linux

Quagga es un servicio que corre sobre distribuciones de Linux esencialmente convirtiéndolo en un enrutador muy poderoso.

Los que han configurado enrutadores Cisco encontrarán una interfaz muy familiar.

1. para instalar quagga en debian por ejemplo digitamos:

#apt-get install quagga


2. configuramos los demonios para que active zebra y bgpd con el siguiente comando:

#nano /etc/quagga/daemons y cambiamos a yes:


zebra=yes
bgpd=yes
ospfd=no
ospf6d=no
ripd=no

ripngd=no


3. Después hay que entrar a la ruta cd /usr/share/doc/quagga/examples/ y copiar los archivos zebra y bgpd a la ruta /etc/quagga, quedaría así:

#cp /usr/share/doc/quagga/examples/zebra.conf.sample /etc/quagga/zebra.conf

#cp /usr/share/doc/quagga/examples/bgpd.conf.sample /etc/quagga/bgpd.conf


4. Reiniciamos el servicio de quagga:

#sudo /etc/init.d/quagga


5. Ahora podremos acceder por separado con una interfaz interactiva a cada uno de los demonios.

DemonioPuerto
zebra2601
ripd2602
ripng2603
ospfd2604
bgpd2605
ospf6d2606


Para acceder a Zebra (Password por defecto zebra):

#telnet localhost 2601

Password: zebra

Router>enable
Router#conf t
Router(config)#interface eth0
Router(config-if)#ip address 200.100.100.1/24
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)# exit
Router# write
Configuration saved to /etc/quagga/router.conf

#telnet localhost 2605
Password: zebra

ripd> enable
ripd# configure terminal
ripd(config)# router bgp ASN de la red
ripd(config-router)# bgp router-id 192.168.1.6
...
ripd(config)# exit
ripd# write

Configuration saved to /etc/quagga/bgpd.conf



Un ejemplo de configuración BGP es con dual stack para soportar IPv4 e IPv6:

hostname your_router_name 
password your_router_password 
log file /var/log/quagga/bgpd.log 
log stdout 
! 
router bgp 65320 
no synchronization 
bgp router-id 192.168.1.2 
network 192.168.1.0 mask 255.255.255.0 
neighbor 192.168.1.1 remote-as 65321 
neighbor 192.168.1.1 description peer-router-v4 
neighbor 2001:DB8:1::1 remote-as 65321 
neighbor 2001:DB8:1::1 description peer-router-v6 
no auto-summary 
no neighbor 2001:DB8:1::1 activate 
! 
address-family ipv6 
network 2001:DB8::/32 
neighbor 2001:DB8:1::1 soft-reconfiguration inbound 
neighbor 2001:DB8:1::1 allowas-in
neighbor 2001:DB8:1::1 activate 
neighbor 2001:DB8:1::1 route-map IPV6-OUT out 
exit-address-family 
! 
ipv6 prefix-list pl-ipv6 seq 10 permit 2001:DB8::/32 
route-map IPV6-OUT permit 10 
match ipv6 address prefix-list pl-ipv6 
set ipv6 next-hop global 2001:DB8:2::1 
! 
line vty 
!


La cláusula "soft-reconfiguration inbound" permite que todas la rutas recibidas queden en memoria, incluso las descartadas y así poder comparar la diferencia usando por ejemplo:

Router# show ip bgp neighbors 172.16.0.2 received-routes

BGP table version is 6, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path

  • 192.168.2.0 172.16.0.2 100 0 65200 ?
  • 192.168.3.0 172.16.0.2 100 0 65200 ?

Total number of prefixes 2


En comparación a:

Router# show ip bgp neighbors 172.16.0.2 routes

BGP table version is 6, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path

  • 192.168.3.0 172.16.0.2 100 0 65200 ?

Total number of prefixes 1


6. Después de configurar todo lo de quagga procedemos a configurar las tarjetas de red. Para eso editamos el archivo:

#nano /etc/network/interfaces



7. Luego de hacer estas configuraciones hay que restaurar el servicio de red con el siguiente comando:

#sudo /etc/init.d/networking restart



8. despues hay que activar el enrrutamiento en GNU/Linux con el siguiente comando:

#echo "1" > /proc/sys/net/ipv4/ip_forward


y para que no se borre despues de reiniciar el sistema utilizamos la siguiente linea:

#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf


El comando vtysh es sumamente útil porque nos permite pasar comandos directo a nuestro router Linux desde la linea de comando:

# vtysh

Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

Router#


Por ejemplo, para ver el estado de los peers BGP:

# vtysh -c "show ip bgp summary"
BGP router identifier 192.168.1.6, local AS number 262149
RIB entries 1190232, using 127 MiB of memory
Peers 6, using 27 KiB of memory
Peer groups 1, using 32 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.1.1     4 262149 1030329   13021        0    0    0 01w2d00h   531812
192.168.1.2     4 262149 1317064   13021        0    0    0 01w2d00h   617296
192.168.1.3     4 262149   16253   13021        0    0    0 01w2d00h     1047

Total number of neighbors 3


Esto nos será sumamente útil para la elaboración de scripts o una página "Looking Glass" que configuremos en el futuro.