Ospf-ipv4-infoadicional
Ejercicio práctico sobre OSPF con IPv4: CONFIGURACIÓN DETALLADA
Sumario
Utilización de Ethereal para las redes virtuales del escenario
- Para poder capturar en tiempo real (con Ethereal, por ejemplo) evitando guardar las capturas de las máquinas virtuales y copiarlas posteriormente de manera remota, se añade en las subredes un nuevo atributo en su especificación, por ejemplo para P1:
<net name="P1" mode="uml_switch" uml_switch_binary="/usr/bin/uml_switch4capture" capture_dev="P1" />
- De esta forma el tráfico de la red se podrá capturar a través de las interfaces P1, P2, etc. desde el host. En esta práctica sólo se hará uso de la interfaz P7, pero se proporciona la posibilidad de capturar cualquiera de las demás.
Archivos de configuración del escenario
Quagga es un paquete de software avanzado de encaminamiento que proporciona un conjunto de protocolos de encaminamiento basados en TCP/IP: RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4 y BGP-4+. Además de los protocolos de encaminamiento IPV4 tradicionales, Quagga también soporta protocolos de encaminamiento IPV6.
Existe un demonio para cada protocolo implementado (ripd, ripngd, ospfd, ospf6d, bgpd) además de un demonio gerente de todos ellos: zebra. Los demonios de encaminamiento necesitan información de zebra para poder ser arrancados, por lo que zebra debe estar ejecutándose antes de invocarlos.
Cada uno de los demonios tiene su propio archivo de configuración. Por ejemplo, el archivo de configuración para "zebra" sería zebra.conf. El nombre por defecto de cada fichero de configuración sería el nombre del demonio seguido de ".conf", y la locación de todos ellos sería /usr/local/etc. Sin embargo, al arrancar cada demonio y utilizando la opción -f, podemos especificar el fichero de configuración (y su localización).
En un archivo de configuración pueden escribirse las opciones de depuración, la contraseña, las configuraciones en los demonios de encaminamiento, un nombre para el archivo de log, etc. Esta información permite que el demonio pueda conocer su configuración al arrancar.
A continuación se muestran los ficheros de configuración utilizados para la máquina A del escenario virtual. El resto de routers tendrán una configuración análoga, teniendo en cuenta sus identificadores, interfaces y redes directamente conectadas.
- zebra.conf: fichero de configuración del demonio "zebra", encargado de la gestión de los demonios de encaminamiento.
! -*- A zebra.conf -*- ! ! zebra configuration file ! !
- Se configura el nombre del host en el router:
hostname A-zebra
- Se configura el password para el interfaz vty. Si no hay password, el vty no aceptará conexiones.
password xxxx
- Se configura el password del modo enable:
enable password xxxx !
- Se especifica el fichero concreto donde se desea que se guarden los logs:
log file /var/log/quagga/zebra.log !
- Se asigna una dirección IPv4 y otra IPv6 al interfaz de loopback:
interface lo ip address 10.0.0.1/32 ipv6 address 2001:db8::1/128 !
- ospfd.conf: fichero de configuración del demonio "ospfd", que implementa el protocolo de encaminamiento OSPFv2 (OSPF en IPV4). NOTA: Sólo se describen los comandos que aún no han aparecido en el fichero anterior.
! -*- A ospfd.conf -*- ! ! ospfv2 configuration file ! hostname A-ospfd password xxxx enable password xxxx ! log file /var/log/quagga/ospfd.log ! ! Interface's description. !
- Se definen las interfaces presentes en el router que participarán en OSPF:
interface eth0 interface eth1 interface eth2 interface eth3
- Se establece explícitamente el tipo de red para la interfaz especificada arriba. En este caso se trata de un enlace punto a punto:
ip ospf network point-to-point interface eth4 ip ospf network point-to-point interface lo !
- Se habilita el proceso ospfd:
router ospf
- Con la siguiente línea se establece el identificador del router en que se ha arrancado el proceso OSPF. Este identificador puede ser un número arbitrario de 32 bits, por ejemplo una de las direcciones IP del router. Además, este identificador debe ser único en todo el dominio OSPF. Si no se especifica ningún valor, el proceso ospfd obtendrá uno automáticamente de zebra.
ospf router-id 10.0.0.1
- Identificamos una interfaz (la utilizada por la herramienta VNUML para acceder a la máquina) para que no participe en el protocolo OSPF. Sin embargo, será anunciada como un enlace de tipo "stub".
passive-interface eth0
- El siguiente comando especifica el área a la que pertenecen las interfaces del router. Por ejemplo, todas las interfaces comprendidas dentro del rango 10.0.100.0/30 pertenecen al área 0.
network 10.0.100.0/30 area 0 network 10.0.100.4/30 area 0 network 10.0.100.12/30 area 0 network 10.0.1.0/24 area 0 network 10.0.0.1/32 area 0 ! line vty !
Secuencias de comandos
- Apartado 1:
- Los archivos necesarios para la configuración de cada router se encuentran en la carpeta ospfv2_conf, con la estructura que se indica en el apartado ospfv2: Archivos de configuración. Cada máquina tiene asociada una carpeta con igual nombre que la propia máquina (A, B, etc.).
- La secuencia descrita a continuación tiene lugar en la máquina virtual A:
- En primer lugar se guarda en el directorio de Quagga (/etc/quagga) la carpeta que contiene todos los ficheros de configuración relativos a la máquina virtual:
<filetree root="/etc/quagga" when="aptdo1">ospfv2_conf/A</filetree>
- Por último se inicia en la máquina los demonios zebra y ospfd, indicando la ubicación de los archivos de configuración:
<exec seq="aptdo1" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo1" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
- Apartado 2:
- En este apartado se realiza la misma secuencia de comandos que en el apartado 1 en la máquina virtual B:
<filetree root="/etc/quagga" when="aptdo2">ospfv2_conf/B</filetree> <exec seq="aptdo2" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo2" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
- Apartado 3:
- En este apartado se realiza la misma secuencia de comandos que en los apartados 1 y 2 en las máquinas virtuales C, D y E:
<filetree root="/etc/quagga" when="aptdo3">ospfv2_conf/C</filetree> <exec seq="aptdo3" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo3" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
<filetree root="/etc/quagga" when="aptdo3">ospfv2_conf/D</filetree> <exec seq="aptdo3" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo3" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
<filetree root="/etc/quagga" when="aptdo3">ospfv2_conf/E</filetree> <exec seq="aptdo3" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo3" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
- Apartado 7:
- En este apartado se realiza la misma secuencia de comandos que en los apartados 1, 2 y 3 en las máquinas virtuales F y G:
<filetree root="/etc/quagga" when="aptdo7">ospfv2_conf/F</filetree> <exec seq="aptdo7" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo7" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
<filetree root="/etc/quagga" when="aptdo7">ospfv2_conf/G</filetree> <exec seq="aptdo7" type="verbatim">/usr/local/bin/zebra -d -f /etc/quagga/zebra.conf</exec> <exec seq="aptdo7" type="verbatim">/usr/local/bin/ospfd -d -f /etc/quagga/ospfd.conf</exec>
Parada de todos los demonios de encaminamiento zebra y ospfd
Existe la posibilidad de parar los demonios de encaminamiento zebra y ospfd en todas las máquinas virtuales, con el objeto de poder empezar de nuevo la práctica sin necesidad de reiniciar el escenario. De esta forma, si observa algún funcionamiento anómalo tras alguna prueba, podrá comenzar desde el principio escribiendo en su host:
root@host:/home/usuario/vnuml/ospfv2# vnumlparser.pl -x stop@ospfv2.xml -v
Para ello se añade una nueva secuencia de comandos en cada máquina virtual:
<exec seq="stop" type="verbatim">killall zebra ospfd</exec>