Práctica TFTP y Broadcast
Práctica TFTP y Broadcast
Práctica TFTP y Broadcast
Para esto utilizaremos un programa para simular varias computadoras en una red
con routers y switches simulados el cual se llama GNS3 el cual tiene la ventaja
también de permitirnos mediante una configuración especial conectar nuestro propio
equipo a esta simulación.
2. Conceptos
TFTP
Broadcast
Switch
En los Routers Cisco la configuración que estos tienen por defecto se guarda en el
archivo running-config en cuanto se inicia el router cisco voltea a ver dicho archivo
para cargar la configuración de los puestos y protocolos que tenga guardados en
este archivo.
3. TFTP
Objetivo de la práctica
Obtener archivo running-config, de un router en gns3, mediante TFTP desde una máquina
linux para modificarlo y enviarlo al router por TFTP
Desarrollo
Tenemos la siguiente topología en GNS3
R1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#line vty 0
R1(config-line)#password Pass123
R1(config-line)#login
R1(config-line)#exit
R1(config)#
❏ El comando "line vty" habilita el telnet, y el parámetro "0" solo habilita una sesión al
router.
❏ El comando "password" establece a "Pass123" como contraseña para telnet.
❏ El comando "login" auténtica y le pide la contraseña de telnet
Ahora debemos establecer la contraseña de enable, del router, para poder controlarlo de
forma remota. Ejecutamos el siguiente comando:
Podemos observar que el archivo running-config llegó con éxito al servidor TFTP en linux
Ahora enviamos el archivo de configuración del servidor TFTP en linux al router, con el
comando:
Para esta parte como podemos ver el script en Python 3, para utilizar Telnet utilizaremos la
librería telnetlib. Primero, lo que hacemos es mandar directamente las instrucciones a los
routers desde el script para que vaya realizando las cosas, gracias al telnet que
configuramos previamente, cabe mencionar que para las contraseñas hay que codificarlas
en ascii, el comando que utilizamos para traernos el archivo de configuración es el copy
running-config tftp: e l cual nos permite traer vía el tftp el archivo especificado. Cabe
mencionar que se le metió un sleep para poder esperar a que el archivo se pase de forma
completa ya que en ocasiones si no se mete el sleep puede que el archivo no se termine de
pasar y a la hora de editarlo marque el error el programa de que no está completo o está
siendo utilizado, una vez que llego el archivo aplicamos los cambios que se necesiten, para
esto abrimos el archivo que tenemos en el servidor tftp y aplicamos el reemplazo y lo
cerramos, una vez que los hemos hecho, procedemos a enviar el archivo con los cambios
con el comando copy tftp: running-config.
Código de python
import telnetlib
import os
import time
'''
SEND AND RECIVE RUNNIG CONFIG FOR ROUTER R1
'''
tn_r1.read_until(b"R1>")
tn_r1.write('enable'.encode('ascii') + b"\r") # write enable command
tn_r1.read_until(b"Password: ")
tn_r1.write(password_enable.encode('ascii') + b"\r") # write password
enable
tn_r1.read_until(b"R1#")
tn_r1.write('copy running-config tftp:'.encode('ascii') + b"\r") # send
runnig config to tftp server in linux
# Read operation
lines = []
for line in file.readlines():
if 'R1' in line:
lines.append(line.replace('R1', 'Remplazo1'))
lse:
e
ines.append(line)
l
file.close()
# Write operation
new_file = open(path, 'w+')
new_file.writelines(lines)
new_file.close()
tn_r1.read_until(b"R1#")
tn_r1.write('copy tftp: running-config'.encode('ascii') + b"\r") # send
runnig config to router in gns3
tn_r1.read_until(b"Remplazo1#")
tn_r1.write('write'.encode('ascii') + b"\r") # save config
tn_r1.read_until(b"Remplazo1#")
tn_r1.close()
print('R1: telnet connection is close')
Capturas de pantalla
Ejecutando el script de python:
4. Broadcast
Objetivo de la práctica
Lograr que la transmisión broadcast llegue desde la máquina host hasta todas las maquinas
que esten en el broadcast
Desarrollo
Tenemos esta topología en gns3:
Ahora contamos con una máquina virtual linux, en mi caso con kubuntu. Esto para poder
ejecutar el cliente broadcast implementado en lenguaje C.
Los routers están configurados con RIPV2 y además se ha configurado el cloud para poder
utilizarlo con el adaptador virtual TAP0
Primero debemos encender nuestra máquina virtual linuxlite-2 y asignarle una ip estática
de manera manual, también le especificamos la puerta de enlace:
1. enable
2. configure terminal: Se habilita la terminal para entrar a modo de configuración
del router
3. ip forward-protocol udp: Se especifica que debe aceptar el protocolo UDP
4. interface type number: Se indica la interfaz se hará la configuración siguiente
5. ip address address mask: Se asigna la ip con máscara a la interfaz actual
6. ip helper-address address: Habilita una dirección IP auxiliar para la interfaz que
recibe los paquetes de difusión UDP, cabe mencionar que esto a menudo da
como resultado que el origen de los paquetes de difusión UDP reciba
respuestas de dos o más hosts. En la mayoría de las circunstancias, la fuente de
los paquetes de difusión UDP acepta la primera respuesta e ignora las
respuestas posteriores. En algunas situaciones, la fuente de los paquetes de
difusión UDP no puede manejar respuestas duplicadas y reacciona recargando
u otro comportamiento inesperado.
7. exit: Se sale de la configuración de la interfaz actual
8. interface type number
9. ip address address mask
10. ip directed-broadcast: Habilita el envío broadcast por IP en la interfaz que
transmite las transmisiones UDP.
11. end
Después cargamos el cliente broadcast en la máquina virtual, para esto nos podemos ayudar de
las carpetas compartidas de virtualbox.
Compilamos y ejecutamos el cliente broadcast en la máquina virtual linuxlite-2:
Ejecutamos el servidor broadcast desde la nuestra máquina padre, donde se está emulando la
subred:
Capturas de pantalla
Finalmente podemos observar que el cliente broadcast recibe correctamente los paquetes
enviados desde la máquina linux, a través del servidor broadcast, y estos pasan
correctamente a través de la subred y los routers R1 y R2