Práctica 1 - Framework Introduction (Javier de la Rica) (2016)

Pràctica Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas Audiovisuales - 3º curso
Asignatura Comunicaciones Multimedia
Año del apunte 2016
Páginas 45
Fecha de subida 13/03/2016
Descargas 30
Subido por

Vista previa del texto

Javier de la Rica Palma Comunicaciones Multimedia Multimedia Communications Multimedia Communications: Introduction to Practice Framework Departamento de Ingeniería Telemática (ENTEL) Jorge Mata Juanjo Alins Oscar Esparza Jose L. Muñoz 1 Introducción En esta práctica se revisarán todos los principales elementos que se requieren para el desarrollo de las prácticas de laboratorio de la asignatura Comunicaciones Multimedia. En esta práctica se introducirán y revisarán los aspectos generales para la transmisión de información en redes IP a través de un entorno de virtualización que facilitará la emulación de redes, sistemas y servicios de comunicación. El entorno de virtualización proporciona una plataforma de emulación sobre Linux que permitirá analizar y diseñar aplicaciones y servicios multimedia para redes IP.
2 Objetivos El objetivo de esta práctica es familiarizarse con el conjunto de herramientas básicas que se emplearán durante las sesiones de laboratorio de la asignatura. Asimismo, se revisarán los conceptos básicos estudiados anteriormente sobre redes IP, utilizando la plataforma de virtualización sobre Linux. Principalmente se analizarán conceptos de direccionamiento y encaminamiento en redes IP, junto con las aplicaciones y servicios tradicionales de Internet.
Al finalizar la práctica el alumno debe ser capaz de: ● Iniciar un escenario de comunicaciones entre máquinas sobre redes IP.
● Identificar y configurar las interfaces de cada máquina.
● Configurar las tablas de rutas de los routers IP.
● Verificar las comunicaciones entre cada par de máquinas.
● Identificar los servicios abiertos en cada máquina.
● Acceder remotamente desde una máquina a otra.
● Identificar los protocolos utilizados en las comunicaciones unicast.
Javier de la Rica Palma Comunicaciones Multimedia ● Realizar una transferencia elemental de contenidos multimedia utilizando servicios de transferencia de ficheros en Internet.
● Configurar un servidor Web Apache para la distribución de contenidos multimedia.
3 Componentes de la práctica ● Sistema operativo Linux ● Plataforma Simctl ● Software de comunicaciones IP de linux ● Servidores Inetd y Apache ● Aplicación de captura y análisis Wireshark ● Reproductor VLC ● Navegador Firefox 4 Estudio previo Revise los conceptos fundamentales de IP estudiados en cursos anteriores.
A. Para una máquina Linux conectada a una red a través de Ethernet, indica razonadamente los comandos que utizarías para la siguiente configuración: o Dirección de red en la interfaz eth0 10.34.1.2 para una subred de clase C.
$ifconfig eth0 10.34.1.2/24 $ifconfig eth0 10.34.1.2 netmask 255.255.255.0 o Router de salida para el acceso a la subred 10.34.0.0/24 el 10.34.1.1 $route add –net 10.34.0.0/24 gw 10.34.1.1 o Router por defecto el 10.34.0.1 $route add default gw 10.34.0.1 Javier de la Rica Palma Comunicaciones Multimedia B. ¿Puedes averiguar la dirección Ethernet del router 10.34.1.2?. ¿Y del router 10.34.0.1?. Justifica las respuestas.
Se debe hacer el producto binario de la dirección con la máscara de red obteniendo una tercera dirección, que corresponde a la dirección de la subred en la que se encuentra.
10.34.1.2 00001010.00100010.00000001.00000010 255.255.255.0 11111111.11111111.11111111.00000000 10.34.1.0 00001010.00100010.00000001.00000000 10.34.0.1 00001010.00100010.00000000.00000001 255.255.255.0 11111111.11111111.11111111.00000000 10.34.0.0 00001010.00100010.00000000.00000000 C. ¿Cómo averiguarías el número de retransmisiones (o routers atravesados) por los datagramas IP que son enviados desde el servidor www.upc.edu hasta tu máquina?.
Explica el procesado de la cabecera de un datagrama IP llevado a cabo en un router.
Los paquetes tienen unos bits en la cabecera dedicados al tiempo que viven llamados TTL.
Cada vez que el paquete por el router se decrementa éste número una unidad. Conociendo el TTL (Time To Live) inicial podemos saber por cuantos routers ha pasado el paquete.
D. ¿Qué comando utilizarías para averiguar si el servidor Web de la máquina Linux está en funcionando?. No es válido realizar conexiones locales al puerto 80.
Enviando un ping a la dirección IP de la Web, si recibimos respuesta es que la conexión funciona correctamente, si en caso contrario se queda colgado y no recibimos ningún tipo de respuesta quiere decir que el servidor Web no está funcionando.
$ping –c1 IP $ping –c1 192.168.0.2 E. ¿Cómo averiguarías cuántos sockets tiene abiertos un navegador simultáneamente en un momento dado?.
El comando $netsat –tnp proporciona una lista de todas las conexiones TCP entre clientes y servidores e informa del estado en el que se encuentra cada uno en un momento dado (ESTABLISHED, CLOSE_WAIT, etc) Javier de la Rica Palma Comunicaciones Multimedia F. ¿Cómo te conectarías remotamente desde la máquina Linux al router Linux 10.34.1.1 para cambiar su configuración?. Considera que conoces el usuario y passwd del superusuario del router.
Para establecer una conexión desde la máquina Linux al router Linux 10.34.1.1 se debe primeramente poner en marcha la aplicación de servidor telnet mediante la invocación directa de la aplicación en modo debug. A continuación, desde la máquina cliente se debe realizar la conexión a la máquina remota indicando la dirección IP y el puerto TCP. Es entonces cuando la aplicación solicita el nombre de usuario y password.
Por ejemplo, para realizar una conexión al router Linux con la IP proporcionada se utiliza el siguiente comando en el caso de querer conectar en el puerto 2000: $ telnet IP_ADDRESS PORT $ telnet 10.34.1.1 2000 G. ¿Cómo transferirías de forma segura un fichero de configuración desde la máquina Linux al router 10.34.1.1?. Considera el donde el fichero local tiene por nombre nombres-direccionesIP.dat y la copia remota se corresponde con el fichero de configuración /etc/host.
Dicha operación puede realizarse mediante SSH - Secure Shell -. En concreto se realiza mediante un SCP - Secure Copy - . Dicho comando es un programa cliente que usa el protocolo SSH para enviar y recibir archivos mediante una conexión encriptada.
H. ¿Qué línea incluirías en el fichero de configuración /etc/host de la máquina Linux para que se pudiese referenciar la dirección IP como mirouter?. Utiliza el comando echo y el operador >> para realizar la inserción al final del fichero.
I. ¿Cómo averiguarías el nombre asociado a la dirección IP: 147.83.39.174? Podemos obtener el nombre asociado a una dirección IP mediante el comando nbtstat de la siguiente manera: $nbtstat –a IP $nbtstat –a 147.83.39.174 J. ¿Cómo averiguarías la dirección IP del DNS que está utilizando la máquina Linux? Mediante el comando ifconfig obtenemos la información de la red y se puede observar el DNS.
K. ¿Cómo realizarías una conexión al servidor Web de la propia máquina utilizando el comando netcat?. Intenta solicitar la página por defecto desde la aplicación.
Javier de la Rica Palma Comunicaciones Multimedia El funcionamiento del comando netcat es crear un socket para conectarse a un servidor o hacer de servidor.
Cómo utilizar el comando netcat para usar un servidor y cliente que establezca un socket TCP en el host local: Para crear un socket TCP en estado LISTEN debemos utilizar el siguiente comando: $nc –l –p PORT Y a continuación podemos ver el estado del socket mediante el comando netstat de la siguiente manera: $netstat –tlnp | grep PORT verificando que hay una conexión en estado LISTEN en el puerto indicado.
Procedemos, en un terminal distinto a utilizar el comando siguiente para establexer una conexión local TCP en el mismo puerto: $nc localhost PORT (localhost = 127.0.0.1) Desde una tercera terminal podemos observar y verificar con el comando netstat que la conexión se ha establecido correctamente: $netstat –tn | grep PORT 5 Desarrollo de la práctica 5.1 Puesta en marcha del escenario En este ejercicio se presentarán los mecanismos de interacción que facilita la plataforma de emulación.
A. Verifique la correcta instalación del emulador simctl y analice con detalle las opciones que ofrece.
host$ simctl telematic@telem:~$ simctl simctl ( framework | radionet | sap-sdp-rtsp | streaming | tcp-streaming ) OPTIONS OPTIONS start Starts scenario stop Stops scenario status State of the selected simulation (running | stopped) vm vms Shows vm's and tty's from simulation labels [vm] Shows sequence labels for ALL vm's or for Javier de la Rica Palma Comunicaciones Multimedia exec label [vm [vm [ ... ]]] defined Exec label in the vm's where label is or exec the label only in the vm list netinfo Provides info about network connections get [-t term_type] vm [pts] Gets a terminal for vm term_type selects the terminal (xterm | gnome | kde | local) pts is an integer to select the console Podemos comprobar con el resultado obtenido que hemos obtenido una conexión satisfactoria.
B. Arranque el escenario virtual framework.
host$ simctl framework start Puede interaccionar desde una interfaz de comandos con la plataforma de forma continuada a través de: host$ simctl framework sh De esta forma no necesitará identificar la emulación con la que interacciona desde la consola Total time elapsed: 66 seconds En este tiempo de 66 segundos hemos conseguido que se abran las máquinas virtuales.
C. Determine las máquinas que componen el escenario utilizando: host$ simctl framework vms Virtual machines from framework: num vms enabled tty's Id 1 source1 0 2 routerA 0 3 routerB 0 4 source2 0 Podemos observar que disponemos de cuatro máquinas virtuales; dos sources (source1 y source2) y dos routers (routerA y routerB).
Javier de la Rica Palma Comunicaciones Multimedia D. Abra un terminal desde la plataforma para cada máquina. Acceda a cada màquina virtual VMS con login: root y password: xxxx host$ simctl framework get VMS Compruebe el funcionamiento del control de presentación y desplazamiento del terminal en una máquina virtual.
A. Amplie el tamaño del terminal de la máquina virtual. Utilice la combinación del teclado CTRL+A y después F para notificar el cambio a la máquina virtual.
B. Muestre un listado en el terminal: vms$ cat /etc/ffserver.conf Utilizando la combinación del teclado CTRL+A y después Esc, suba hasta el inicio del listado pulsando las flechas del teclado. Para volver a la posición de entrada de comandos (Prompt), debe pulsar dos veces la tecla Esc.
E. Liste las etiquetas que hay asociadas a cada máquina virtual host$ simctl framework labels telematic@telem:~$ simctl framework labels source1 : copy www-config solve routerA : solve routerB : solve source2 : copy solve ______________________________________________________ Debemos estudiar la configuración de cada máquina para establecer la topología de la red y como resultado debemos hacer un dibujo de la red especificando las máquinas que tenemos (fuentes y routers) y cómo están interconectadas mediante switch. Luego debemos configurar los routers (sus tablas de rutas).
______________________________________________________ Javier de la Rica Palma Comunicaciones Multimedia 5.2 Configuración de la red En este ejercicio se analizarán las configuraciones de los routers y hosts del escenario. Una vez analizada las configuraciones se deberán determinar la redes utilizadas en el escenario.
Ténganse en cuenta que puede obtener un manual de utilización de los comandos Linux utilizados desde un terminal escribiendo: host$ man LINUX_COMMAND Verifique el estado del escenario host$ simctl framework status Si es necesario vuelva a arrancar el escenario. Arranque el escenario virtual.
host$ simctl framework start A. Analice la configuración de las interfaces de red de cada máquina.
VMS$ ifconfig -a | more A continuación se detalla la información proporcionada por cada una de las máquinas disponibles: source1:~# ifconfig -a | more eth0 Link encap:Ethernet HWaddr fe:fd:00:00:01:00 inet addr:10.34.1.2 Bcast:10.34.1.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:100/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 _______________________________________________________ source2:~# ifconfig -a | more eth0 Link encap:Ethernet HWaddr fe:fd:00:00:04:00 inet addr:10.34.3.2 Bcast:10.34.3.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:400/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:116 (116.0 B) TX bytes:468 (468.0 B) Javier de la Rica Palma Comunicaciones Multimedia Interrupt:5 __________________________________________________________________ routerA:~# ifconfig -a | more eth0 Link encap:Ethernet HWaddr fe:fd:00:00:02:00 inet addr:10.34.1.1 Bcast:10.34.1.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:200/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:112 (112.0 B) TX bytes:338 (338.0 B) Interrupt:5 eth1 Link encap:Ethernet HWaddr fe:fd:00:00:02:01 inet addr:10.34.2.2 Bcast:10.34.2.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:201/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 _____________________________________________________________ routerB:~# ifconfig -a | more eth0 Link encap:Ethernet HWaddr fe:fd:00:00:03:00 inet addr:10.34.0.2 Bcast:10.34.0.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:300/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:338 (338.0 B) Interrupt:5 eth1 Link encap:Ethernet HWaddr fe:fd:00:00:03:01 inet addr:10.34.2.3 Bcast:10.34.2.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:301/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 Javier de la Rica Palma Comunicaciones Multimedia RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:116 (116.0 B) TX bytes:338 (338.0 B) Interrupt:5 eth2 Link encap:Ethernet HWaddr fe:fd:00:00:03:02 inet addr:10.34.3.1 Bcast:10.34.3.255 Mask:255.255.255.0 inet6 addr: fe80::fcfd:ff:fe00:302/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:384 (384.0 B) TX bytes:338 (338.0 B) Interrupt:5 B. Realice un esquema de las máquinas y redes del escenario Javier de la Rica Palma Comunicaciones Multimedia C. Defina las tablas de rutas necesarias para garantizar la conectividad entre cualquier par de máquinas del escenario utilizando el comando route. Inicialmente, analice la configuración de cada máquina: VMS$ route -n y modifique adecuadamente todas aquellas tablas de encaminamiento que sean necesarias: VMS$ route add -net x.x.x.x netmask x.x.x.x gw x.x.x.x Para empezar miraremos la tabla de rutas del Router A. Para ello observamos la tabla inicialmente y a continuación añadimos las rutas necesarias.
Tabla de rutas de Router A inicialmente: routerA:~# route -n Kernel IP routing table Destination Iface Gateway Genmask Flags Metric Ref Use 10.34.1.0 eth0 0.0.0.0 255.255.255.0 U 0 0 0 10.34.2.0 eth1 0.0.0.0 255.255.255.0 U 0 0 0 Tabla de rutas del Router A una vez insertadas las rutas indicadas a continuación: routerA:~# route add -net 0.0.0.0 gw 10.34.2.3 routerA:~# route -n Kernel IP routing table Destination Iface Gateway Genmask Flags Metric Ref 10.34.1.0 eth0 0.0.0.0 255.255.255.0 U 0 0 0 10.34.2.0 eth1 0.0.0.0 255.255.255.0 U 0 0 0 0.0.0.0 eth1 10.34.2.3 0.0.0.0 UG 0 0 0 A continuación procedemos a mirar la tabla de rutas del Router B de igual forma que con el Router anterior.
Use Javier de la Rica Palma Comunicaciones Multimedia Tabla de rutas de Router B inicialmente: routerB:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.34.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.34.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.34.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 Tabla de rutas del Router B una vez insertadas las rutas indicadas a continuación: routerB:~# route add -net 10.34.1.0 netmask 255.255.255.0 gw 10.34.2.2 routerB:~# route add -net 0.0.0.0 gw 10.34.0.1 routerB:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref 10.34.0.0 0.0.0.0 255.255.255.0 U 0 10.34.1.0 10.34.2.2 255.255.255.0 UG 0 0 0 eth1 10.34.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.34.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 0.0.0.0 10.34.0.1 0.0.0.0 UG 0 0 0 eth0 0 Use Iface 0 eth0 A continuación procedemos a observar la tabla de rutas de la primera fuente source 1 y a actualizarla añadiendo las rutas necesarias.
Tabla de rutas de Source 1 inicialmente: source1:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref 10.34.1.0 0.0.0.0 255.255.255.0 U 0 0 Use Iface 0 eth0 Javier de la Rica Palma Comunicaciones Multimedia Tabla de rutas de Source 1 una vez insertadas las rutas indicadas a continuación: source1:~# route add -net 0.0.0.0 gw 10.34.1.1 source1:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref 10.34.1.0 0.0.0.0 255.255.255.0 U 0 0 Use Iface 0 eth0 0.0.0.0 10.34.1.1 0.0.0.0 UG 0 0 0 eth0 No es necesario añadir una ruta para el resto de redes ya que el router A se encargará de ello puesto que éste ya contiene las rutas necesarias para llegar a dichas redes.
Para finalizar, procedemos de igual manera que en los casos anteriores, a observar y actualizar como sea necesario la tabla de rutas de Source 2.
Tabla de rutas de Source 2 inicialmente: source2:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref 10.34.3.0 0.0.0.0 255.255.255.0 U 0 0 Use Iface 0 eth0 Tabla de rutas de Source 2 una vez insertadas las rutas indicadas a continuación: source2:~# route add -net 0.0.0.0 gw 10.34.3.1 source2:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref 10.34.3.0 0.0.0.0 255.255.255.0 U 0 0 Use Iface 0 eth0 0.0.0.0 10.34.3.1 0.0.0.0 UG 0 0 0 eth0 D. Verifique que los elementos de interconexión tienen habilitada la facilidad de retransmisión de paquetes IP VMS$ cat /proc/sys/net/ipv4/ip_forward Javier de la Rica Palma Comunicaciones Multimedia En caso negativo (resultado 0) se debe activar modificando en registro de la siguiente forma: VMS$ echo 1 > /proc/sys/net/ipv4/ip_forward source1:~# cat /proc/sys/net/ipv4/ip_forward 0 Como podemos comprobar, los elementos de interconexión de source1 no tienen habilitada la facilidad de retransmisión de paquetes IP, así que la activamos: source1:~# echo 1 > /proc/sys/net/ipv4/ip_forward source1:~# cat /proc/sys/net/ipv4/ip_forward 1 De forma paralela procedemos a hacerlo en el resto de máquinas.
source2:~# cat /proc/sys/net/ipv4/ip_forward 0 source2:~# echo 1 > /proc/sys/net/ipv4/ip_forward source2:~# cat /proc/sys/net/ipv4/ip_forward 1 _______________________________________________________________________ routerA:~# cat /proc/sys/net/ipv4/ip_forward 1 _______________________________________________________________________ routerB:~# cat /proc/sys/net/ipv4/ip_forward 1 E. Pruebe la conectividad entre cualquier par de máquinas utilizando el comando ping, enviando en cada caso 10 peticiones ICMP.
VMS$ ping -c 10 IP_DST_ADDRESS source1:~# ping -c 10 10.34.2.3 PING 10.34.2.3 (10.34.2.3) 56(84) bytes of data.
64 bytes from 10.34.2.3: icmp_seq=1 ttl=63 time=39.3 ms 64 bytes from 10.34.2.3: icmp_seq=2 ttl=63 time=0.216 ms Javier de la Rica Palma Comunicaciones Multimedia 64 bytes from 10.34.2.3: icmp_seq=3 ttl=63 time=0.214 ms 64 bytes from 10.34.2.3: icmp_seq=4 ttl=63 time=0.223 ms 64 bytes from 10.34.2.3: icmp_seq=5 ttl=63 time=0.371 ms 64 bytes from 10.34.2.3: icmp_seq=6 ttl=63 time=0.208 ms 64 bytes from 10.34.2.3: icmp_seq=7 ttl=63 time=0.216 ms 64 bytes from 10.34.2.3: icmp_seq=8 ttl=63 time=0.213 ms 64 bytes from 10.34.2.3: icmp_seq=9 ttl=63 time=0.241 ms 64 bytes from 10.34.2.3: icmp_seq=10 ttl=63 time=0.220 ms --- 10.34.2.3 ping statistics --10 packets transmitted, 10 received, 0% packet loss, time 9109ms rtt min/avg/max/mdev = 0.208/4.145/39.334/11.729 ms o Explique la máxima diferencia relativa observada entre RTT mínimo y máximo.
o Identifique el número de máximo de retransmisiones sufridas por un datagrama IP y explique ¿a qué se deben las retransmisiones?.
F. Observe las direcciones MAC almacenadas en la caché ARP cuando cuando se accede dentro la misma red o en otras redes utilizando: VMS$ arp -a ROUTER A routerA:~# arp -n Address HWtype HWaddress 10.34.2.3 ether FE:FD:00:00:03:01 10.34.1.2 ether FE:FD:00:00:01:00 ROUTER B routerB:~# arp -n Address HWtype HWaddress 10.34.3.2 ether FE:FD:00:00:04:00 10.34.2.2 ether FE:FD:00:00:02:01 SOURCE 1 source1:~# arp -a ? (10.34.1.1) at FE:FD:00:00:02:00 [ether] on eth0 SOURCE 2 source2:~# arp -a ? (10.34.3.1) at FE:FD:00:00:03:02 [ether] on eth0 Flags Mask C C Iface eth1 eth0 Flags Mask C C Iface eth2 eth1 G. Analice y comente la información proporcionado por la plataforma a través del comando host$ simctl framework netinfo Javier de la Rica Palma Comunicaciones Multimedia telematic@telem:~$ simctl framework netinfo UML IFACE NET HOST tap0 Net0 HOST tap2 Net2 --------------------------------------routerA eth0 Net1 routerA eth1 Net2 routerB eth0 Net0 routerB eth1 Net2 routerB eth2 Net3 source1 eth0 Net1 source2 eth0 Net3 Podemos observar el escenario de la red, en el que podemos ver los diferentes hosts, routers e interfaces y cómo están interconectados en diferentes subredes, comprobando que todo concuerda con el dibujo adjuntado previamente hecho a mano.
H. Analice la configuración de las interfaces de red del host host$ ifconfig -a | more telematic@telem:~$ ifconfig -a | more eth0 Link encap:Ethernet HWaddr 08:00:27:2c:66:ff inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe2c:66ff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19494 errors:0 dropped:0 overruns:0 frame:0 TX packets:12346 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18307963 (18.3 MB) lo TX bytes:2775554 (2.7 MB) Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:116 errors:0 dropped:0 overruns:0 frame:0 Javier de la Rica Palma Comunicaciones Multimedia TX packets:116 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:8444 (8.4 KB) tap0 Link encap:Ethernet TX bytes:8444 (8.4 KB) HWaddr 4a:17:de:9f:6c:5a inet6 addr: fe80::4817:deff:fe9f:6c5a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:75 errors:0 dropped:0 overruns:0 frame:0 TX packets:17 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:3362 (3.3 KB) tap2 Link encap:Ethernet TX bytes:3595 (3.5 KB) HWaddr 2e:a3:1a:39:4d:49 inet6 addr: fe80::2ca3:1aff:fe39:4d49/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:74 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:6420 (6.4 KB) TX bytes:3510 (3.5 KB) Explique qué es cada interfaz, analice las direcciones MAC e IP asignadas.
Las interfaces tap serían los puertos de acceso en los que se conectan los dispositivos finales (las máquinas virtualizadas).
La interfaz eth0 está conectada a internet permitiendo una conexión con el host real, aquel que soporta la máquina virtual VM. Por otro lado, la interfaz lo es la interfaz de la red local, mientras que eth1 y eth2 no están configuradas. Las interfaces tap son las que se utilizan con el objetivo de conectar el host con las máquinas virtuales.
I. Modifique la configuración del host para que forme parte del escenario utilizando las interfaces tap host$ ifconfig tapX 10.34.Y.Z/24 Modificamos las tablas de encaminamiento añadiendo las rutas necesarias de manera que el host esté conectado con el resto de máquinas para que la conexión a internet sea a partir del host y el multicast sea mediante el tap0.
telematic@telem:~$ ifconfig tap0 10.34.0.1/24 telematic@telem:~$ ifconfig tap2 10.34.2.1/24 Javier de la Rica Palma Comunicaciones Multimedia J. Compruebe la conectividad del host con cualquier máquina virtual Enviando un ping comprobamos la conectividad del host con cualquiera de las máquinas virtuales telematic@telem:~$ ping -c 2 10.34.2.1 PING 10.34.2.1 (10.34.2.1) 56(84) bytes of data.
64 bytes from 10.34.2.1: icmp_req=1 ttl=64 time=0.053 ms 64 bytes from 10.34.2.1: icmp_req=2 ttl=64 time=0.006 ms --- 10.34.2.1 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.006/0.029/0.053/0.024 ms telematic@telem:~$ ping -c 2 10.34.0.1 PING 10.34.0.1 (10.34.0.1) 56(84) bytes of data.
64 bytes from 10.34.0.1: icmp_req=1 ttl=64 time=0.054 ms 64 bytes from 10.34.0.1: icmp_req=2 ttl=64 time=0.033 ms --- 10.34.0.1 ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.033/0.043/0.054/0.012 ms K. Añada las rutas por defecto en todas las máquinas de forma que el acceso a internet se haga siempre a través del host, pasando por el tap0.
Es necesario añadir la ruta por defecto necesaria desde el router B. De tal modo la ruta preferente será en dirección al host real.
routerB:~# route add default gw 10.34.0.1 L. Muestre las tablas resultantes de encaminamiento para todos los componentes del escenario.
XXXXX$ route -n Javier de la Rica Palma Comunicaciones Multimedia telematic@telem:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.34.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 10.34.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0 10.34.1.0 10.34.0.2 255.255.255.0 UG 0 0 0 tap0 10.34.2.0 0.0.0.0 255.255.255.0 U 0 0 0 tap2 10.34.3.0 10.34.0.2 255.255.255.0 UG 0 0 0 tap0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 0.0.0.0 172.16.34.2 0.0.0.0 UG 0 0 0 eth0 M. Añada la funcionalidad de retransmisión en el host y habilite las operaciones de traslación de direcciones (NAT) para que las máquinas virtuales puedan acceder a Internet. Verfique su funcionamiento utilizando el comando ping en la máquina virtual source1 host$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward host$ iptables --table nat --append POSTROUTING --outinterface eth0 -j MASQUERADE host$ iptables --append FORWARD --in-interface tap0 -j ACCEPT telematic@telem:~$ ping -c 1 10.34.1.1 PING 10.34.1.1 (10.34.1.1) 56(84) bytes of data.
64 bytes from 10.34.1.1: icmp_req=1 ttl=63 time=20.0 ms --- 10.34.1.1 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 4ms rtt min/avg/max/mdev = 20.099/20.099/20.099/0.000 ms Comprobamos que el ping llega de forma correcta.
N. Modifique el fichero /etc/hosts de la máquina source1 para que se puedan referenciar por el nombre las máquinas del escenario sin necesidad de utilizar su IP.
Utilice como nombre el mismo que emplea el entorno simctl.
Puede utilizar el editor pico desde el terminal de la máquina source1. Recuerde que la máquina virtual debe conocer la geometría de su terminal que se debe ser notificada siempre que se redimensione su ventana. Para ello utilice la combinación de techas Ctrl+A y después F. A continuación, el editor se puede invocar directamente utilizando: Javier de la Rica Palma Comunicaciones Multimedia source1$ pico index.html O. Para la realización de los siguientes ejercicios, es necesario tener el escenario adecuadamente configurado a nivel de red. La etiqueta solve configura de forma adecuada los interfaces de red y las tablas de rutas de las máquinas virtuales que forman parte del escenario arrancado.
Nota: La configuración de los taps y tablas de rutas del Host no queda incluída.
La solución automatizada propuesta con esta etiqueta puede ser diferente de otras soluciones desarrolladas durante los apartados anteriores.
En este ejercicio se propone que usted compare la solución desarrollada con la solución automatizada al ejecutar la etiqueta solve host$ simctl framework exec solve a través del análisis de la configuración de los interfaces de red y las tablas de ruta de los dispositivos de red que conforman el escenario.
Para verificar el correcto acceso desde el escenario, también se ofrece la posibilidad de configurar el host a través de la invocación del script: host$ sudo /home/telematic/vnuml/scenarios/files/framework/host/solve-host.sh que incluye todas las órdenes de configuración de red señaladas anteriormente.
telematic@telem:~$ simctl framework exec solve Virtual machines group: source2 routerB routerA source1 OK The command has been started successfully.
OK The command has been started successfully.
OK The command has been started successfully.
OK The command has been started successfully.
Total time elapsed: 1 seconds Javier de la Rica Palma Comunicaciones Multimedia 5.3 Servicios de acceso remoto Telnet y ssh En este ejercicio se revisarán algunos aspectos relacionados con aplicaciones y servicios que utilizan tradicionalmente con los protocolos de transporte TCP y UDP.
⋆ Generación de un nuevo usuario para el acceso remoto Para la realización del ejercicio crearemos un usuario en la máquina virtual source1 source1:~# useradd -b /home -d /home/myvirtusr -m myvirtusr Se debe asignar un password al usuario para que pueda validarse en la máquina (p.e. xxxx): source1:~# passwd myvirtusr Este usuario lo utilizaremos para identificarnos cuando accedamos desde otra máquina.
5.3.1 Servicio Telnet A. En primer lugar procederemos a realizar una conexión remota desde la máquina virtual routerB. Para ello, previamente se debe poner en marcha la aplicación de servidor telnet en la máquina remota, que en este caso es source1. Ésto lo realizamos con la invocación directa de la aplicación en modo debug utilizando el puerto 2000 del protocolo TCP: source1:~# /usr/sbin/in.telnetd -debug 2000 La aplicación se mantendrá en marcha hasta que se cierre una conexión remota.
Desde la máquina cliente realizamos la conexión a la máquina remota indicando IP y puerto TCP: routerB:~# telnet 10.34.1.2 2000 routerB:~# telnet 10.34.1.2 2000 Trying 10.34.1.2...
Connected to 10.34.1.2.
Escape character is '^]'.
Debian GNU/Linux 5.0 source1 login: myvirtusr Password: Linux dellpo 2.6.18.1-bb2-xt-4m-2 #4 Wed Apr 6 01:13:04 CEST 2011 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Javier de la Rica Palma Comunicaciones Multimedia Ejecutando el comando en sobre la máquina cliente routerB: myvirtusr@source1:~$ netstat --tcp -an myvirtusr@source1:~$ netstat --tcp -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 10.34.1.2:2000 10.34.2.3:4337 ESTABLISHED indique los parámetros del socket TCP que identifican la conexión de acceso remoto establecida y el estado de la conexión TCP.
Observamos en la tabla anterior los distintos parámetros del socket TCP y el estado en el que se encuentra la conexión.
Cierre la conexión remota desde la máquina cliente: myvirtusr@source1:~$ logout myvirtusr@source1:~$ logout Connection closed by foreign host.
B. Los servicios tradiciones TCP/IP (telnet, ftp, ...) se ponen en marcha simultáneamente y se ejecutan en background a través de la invocación de un superservidor con un script, en este caso openbsd-inetd, el cual admite como parámetros start y stop. La configuración de los servicios TCP/IP tradicionales queda definida en un fichero que se encuentra en /etc/inetd.conf. Para modificar dicho fichero se debe utilizar el comando update-inetd.
source1:~# /etc/init.d/openbsd-inetd start source1:~# /etc/init.d/openbsd-inetd start Starting internet superserver: inetd.
Javier de la Rica Palma Comunicaciones Multimedia Para analizar detalladamente el intercambio de paquetes TCP/IP entre la máquina cliente y la máquina servidor ponemos en marcha la aplicación Wireshark.
Iniciamos la captura en la interfaz tap0.
Desde el host realizamos una nueva conexión utilizando el puerto por defecto: host$ telnet 10.34.1.2 telematic@telem:~$ telnet 10.34.1.2 Trying 10.34.1.2...
Connected to 10.34.1.2.
Escape character is '^]'.
Debian GNU/Linux 5.0 source1 login: myvirtusr Password: Last login: Mon Feb 22 18:35:36 CET 2016 from routerB on pts/0 Linux dellpo 2.6.18.1-bb2-xt-4m-2 #4 Wed Apr 6 01:13:04 CEST 2011 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
C. Identificaremos los servicios que están activos en el servidor que emplean el protocolo TCP y los puertos que ocupan.
myvirtusr@source1:~$ netstat --tcp –a myvirtusr@source1:~$ netstat --tcp -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:daytime *:* LISTEN tcp 0 0 *:auth *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:telnet *:* LISTEN tcp 0 0 source1:telnet 10.34.0.1:47520 tcp6 0 0 [::]:www [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN ESTABLISHED Javier de la Rica Palma Comunicaciones Multimedia myvirtusr@source1:~$ netstat --tcp –an myvirtusr@source1:~$ netstat --tcp -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:13 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN tcp 0 0 10.34.1.2:23 10.34.0.1:47520 tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN ESTABLISHED D. Repetimos la operación para los servicios que emplean UDP myvirtusr@source1:~$ netstat --udp –a myvirtusr@source1:~$ netstat --udp -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State E. Para relacionar los puertos utilizados por los servicios consultamos la configuración definida en las máquinas virtuales en el archivo: myvirtusr@source1:~$ more /etc/services F. Cerramos la conexión remota establecida myvirtusr@source1:~$ logout myvirtusr@source1:~$ logout Connection closed by foreign host.
G. Detén y guarda la captura realizada con Wireshark en formato "Wireshark tcpdump - libpcap", en el directorio de trabajo con el nombre de fichero “telnet.cap” File->Save as: File type -> Wireshark tcpdump - libpcap Directorio -> telematic/directorio Nombre-> telnet.cap Javier de la Rica Palma Comunicaciones Multimedia H. Responde a las siguientes cuestiones: A. Identifica el número de flujos de datos intercambiados entre el host y la máquina source1. Utiliza la opción del menú Wireshark: Statistics -> Conversation List -> TCP B. Situándose sobre un paquete TCP SYN de 74 bytes, explica cuántos bytes de cabecera se utilizan en cada encapsulación. Para cada una de las cabeceras identifica el valor de las direcciones o puertos correspondientes al cliente, al servidor o a un router. ¿Contiene datos de las aplicaciones este paquete TCP SYN?.
Nota: Utiliza el valor que aparece en la parte inferior izquierda del Wireshark cuando te posicionas encima de un atributo de cabecera dentro del disector Podemos observar que para cada encapsulación se utilizan 20 bytes para la cabecera IP y 14 bytes para la cabecera Ethernet de un total de 74 bytes que mide el paquete entero. A su vez, observamos las direcciones IP del origen y destino del paquete, en éste caso: Dirección Origen: 10.34.0.1 Dirección Destino: 10.34.1.2 Podemos observar también que éste paquete TCP SYN no contiene datos de las aplicaciones.
C. Indica cuál es el valor de Maximum Segment Size notificado por cada extremo de la conexión. Para ello debes situarte en un paquete SYN, dentro del campo de opciones, sobre Maximum Segment Size. Utilizando el botón derecho del ratón, elige Apply as a Filter Selected. Automáticamente aparecerá escrito en el Filtro de Display: Javier de la Rica Palma Comunicaciones Multimedia tcp.options.mss_val Podemos observar claramente que el valor del Maximum Segment Size es de 1460 bytes.
D. ¿Cuántos paquetes TCP se intercambian en el establecimiento del socket? En el establecimiento del socket se intercambia un total de tres paquetes TCP de tal manera que se crea un 3-way-handshake como se puede observar en la imagen siguiente.
E. Analiza el intercambio de datos entre las dos aplicaciones (cliente y servidor) utilizando la opción Analyze-> Follow TCP Stream Identifica qué elemento envía la información resaltada en color rojo y en azul.
En color rojo nos encontramos la información que envía en cliente, mientras que en color azul se puede observar toda la información que envía el Javier de la Rica Palma Comunicaciones Multimedia servidor. El ejemplo más claro se puede ver, por ejemplo, a la hora de insertar el usuario: source1 login: mmyyvviirrttuussrr Por otro lado, otro ejemplo claro es el momento en el que introducimos la contraseña. Claramente, la contraseña xxxx insertada por el cliente no es enviada de vuelta (echo) por el servidor.
Password: xxxx F. Explica porqué se envían y reciben los caracteres correspondientes al login de la autenticación de usuario en la conexión Telnet.
source1 login: mmyyvviirrttuussrr Por un lado, el cliente envía cada carácter del nombre de usuario, y paralelamente el servidor hace un echo, es decir, devuelve carácter a carácter simultáneamente la entrada a teclado de forma que se pueda ver por pantalla.
G. ¿Cuál es el valor observado en la captura del Time to Live (TTL) de los datagramas TCP/IP intercambiados por el cliente y servidor?. ¿Por qué los paquetes enviados por el cliente aparecen en la captura con un TTL superior a los del servidor?. ¿Qué Filtro de Display aplicarías para capturar todos los paquetes IP con TTL inferior o igual a 62?.
Por un lado, el valor del TTL de los datagramas enviados por el cliente es de 64, mientras que el valor del TTL de los datagramas enviados por el servidor es de 62. El hecho de que los paquetes enviados por el cliente tengan un valor de TTL superior que los paquetes enviados por el servidor es por el hecho de que la captura de Wireshark la estamos haciendo desde el tap0. Por tanto, los paquetes que se envían desde el cliente se ven con su TTL inicial, que es de 64, mientras que los paquetes que envía el servidor se observan con el TTL modificado, es decir, con el decremento impuesto por los routers A y B y por ello observamos un TTL del paquete enviado por el servidor de un valor de 62.Para capturar todos los paquetes IP con el TTL inferior o igual a 62 se debería aplicar el filtro ip.ttl<=62.
Nota: Para poder observar los posibles Filtros de Display a aplicar sobre un nivel de encapsulamiento, puedes posicionarte en el Wireshark sobre la cabecera a consultar y con el botón derecho del ratón seleccionar Filter Field Reference.
Javier de la Rica Palma Comunicaciones Multimedia 5.3.2 Servicio SSH A. Pon en marcha la aplicación Wireshark para el posterior análisis de la conexión TCP entre el host y la máquina remota.
B. Utilizando el servicio de acceso remoto seguro ssh proporcionado por las máquinas virtuales, realice una nueva conexión host$ ssh root@IP_ADDRESS_OF_REMOTE_HOST telematic@telem:~$ ssh root@10.34.1.2 root@10.34.1.2's password: Linux dellpo 2.6.18.1-bb2-xt-4m-2 #4 Wed Apr 6 01:13:04 CEST 2011 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Last login: Sun Feb 28 12:49:59 2016 Visualice los servicios activos en la máquina remota utilizando la conexión realizada por ssh.
host$ netstat --tcp –an source1:~# netstat --tcp -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:13 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN tcp 0 0 10.34.1.2:22 10.34.0.1:33764 tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN ESTABLISHED Javier de la Rica Palma Comunicaciones Multimedia Cierre la conexión establecida utilizando el comando exit en la máquina remota.
host$ exit source1:~# exit logout Connection to 10.34.1.2 closed.
C. Detén y guarda la captura realizada con Wireshark en formato "Wireshark tcpdump - libpcap", en el directorio de trabajo con el nombre de fichero “ssh.cap” File->Save as: File type -> Wireshark tcpdump - libpcap Directorio -> telematic/directorio Nombre-> ssh.cap D. Responde a las siguientes cuestiones: A. Analiza el intercambio de datos entre las dos aplicaciones (cliente y servidor) utilizando la opción Analyze-> Follow TCP Stream ¿Es posible identificar en la captura el login y password enviados o algún tipo de comando ejecutado durante la sesión ssh? En este caso se puede observar que se capturan los comandos durante la sesión ssh pero ésta vez aparecen encriptados.
B. ¿Cuál es el tamaño del paquete TCP/IP más grande que se intercambia durante la sesión ssh?. ¿Cuántos bytes tiene el segmento de datos?. ¿Tienen algún tipo de encapsulación esos datos?. Razona las respuestas.
El tamaño del paquete más grande intercambiado durante la sesión es de 74 bytes, correspondiente al paquete SYN que se envía al principio de todo para establecer la conexión entre el cliente y el servidor, incluyendo el SYN ACK que se recibe.
El segmento de datos es de 128 bytes como se puede observar con una encapsulación ssh.
Javier de la Rica Palma Comunicaciones Multimedia 5.4 Servicio FTP En este ejercicio revisarán los aplicaciones y servicios tradicionales para la transferencia de ficheros entre máquinas utilizando los protocolos TCP/IP.
La arquitectura de este servicio es del tipo cliente-servidor por lo que debe estar en marcha el demonio en la máquina remota. Comprueba que el servidor ftp esté en marcha y en caso contrario revisa el fichero de configuración /etc/inetd.conf y vuelve a iniciar el demonio con: source1:~# /etc/init.d/openbsd-inetd restart A. Realiza una conexión ftp desde el host a la máquina source1 host$ ftp -t -d 10.34.1.2 Utiliza el usuario creado para autenticarte en la máquina remota Connected to 10.34.1.2.
220 source1 FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
Name (10.34.1.2:telematic): myvirtusr Password: Analiza los comandos que admite la aplicación cliente: host$ ftp> help ftp> help Commands may be abbreviated.
Commands are: ! debug mdir qc send $ dir mget sendport site account disconnect mkdir put size append exit mls pwd status ascii form mode quit struct bell get modtime quote system binary glob mput recv sunique bye hash newer reget tenex case help nmap rstatus tick cd idle nlist rhelp trace cdup image ntrans rename type chmod lcd open reset user close ls prompt restart umask cr macdef passive rmdir verbose delete mdelete proxy runique ? Puedes ejecutar cualquier comando de la shell en la máquina local utilizando el símbolo de admiración (!) previamente.
Javier de la Rica Palma Comunicaciones Multimedia Las operaciones más comunes son el envío de uno put o múltiples ficheros mput y la descarga de uno get o varios ficheros mget. Para desplazarse por los directorios y visualizar sus contenidos se emplean sobre la màquina remota cd y ls, respectivamente, y en la máquina local lcd y !ls.
Elige como directorio local para el envío de ficheros host$ ftp> lcd /home/telematic/streams Envía varios ficheros a la cuenta del servidor: host$ ftp> put big_buck_bunny.mp4 host$ ftp> put warriors-700-sp-VBR.ogv host$ ftp> put sintel_trailer.m2v host$ ftp> put big_320_x180_CBR_400K+32K.ts B. Sitúate en el directorio local de descargas y realiza la descarga de uno de los ficheros previamente enviado.
host$ ftp> lcd /home/telematic/Downloads/ host$ ftp> get sintel_trailer.m2v Analiza las velocidades de transmisión estimadas por la aplicación cliente en la subida y descarga de los ficheros.
5510872 bytes sent in 4.58 secs (1174.6 kB/s) (8Mbps) 21424605 bytes sent in 18.55 secs (1128.1 kB/s) 21424605 bytes received in 18.39 secs (1137.4 kB/s) C. Cierra la aplicación ftp del cliente.
host$ ftp>quit ⋆ Para analizar detalladamente el intercambio de paquetes TCP/IP entre la máquina cliente y la máquina servidor ponemos en marcha la aplicación Wireshark.
D. Iniciamos la captura en la interfaz tap0.
E. Realiza una nueva conexión con el servidor utilizando el protocolo ftp pero directamente sobre el navegador host$ firefox ftp://10.34.1.2 F. Realiza la autenticación en el servidor.
Javier de la Rica Palma Comunicaciones Multimedia Figure 1: Autenticación en el servidor FTP desde el navegador Detén y guarda la captura realizada con Wireshark en formato "Wireshark tcpdump - libpcap", en el directorio de trabajo con el nombre de fichero “ftp.cap” File->Save as: File type -> Wireshark tcpdump - libpcap Directorio -> telematic/directorio Nombre-> ftp.cap G. Descarga y visualiza localmente los ficheros multimedia que se tranfirieron anteriormente. Explica en cada caso el proceso llevado a cabo para la reproducción del contenido audiovisual.
Nota: Para la visualización de los contenidos se recomienda utilizar la aplicación VLC que se encuentra ubicada en /usr/bin/vlc . Para poder modificar la configuración por defecto del navegador firefox se debe acceder al menu Edit>Preferences->Applications y modificar la Action predefinida. En el caso de no existir ninguna acción predefinida se descargará el fichero y se reproducirá localmente según la configuración del gestor gráfico gnome.
En todos los casos la descarga es directa, salvo en el caso de la descarga de warriors-700-sp-VBR.ogv, que te pide una autentificación y se reproduce directamente en el navegador como se puede observar a continuación.
Javier de la Rica Palma Comunicaciones Multimedia H. Utilizando la captura realizada responda a las siguientes cuestiones: A. ¿Cuántos sockets TCP se establecen entre cliente y servidor TCP? A pesar de que al principio se puede observar un intento de conexión de socket fallido, finalmente se establece un total de dos sockets TCP.
B. ¿Quién inicia el establecimiento de la conexión en cada caso? En todos los casos el inicio de la conexión es iniciado por el cliente.
C. Aplicando el Filtro de Display: tcp.flags.syn == 1 || tcp.flags.fin == 1 Analiza qué sockets se utilizan simultáneamente.
Se puede observar aplicando dicho filtro cómo ambos sockets se utilizan simultáneamente. El primer socket solicita información y el segundo se la proporciona. Es por esto que ambos deben estar establecidos simultáneamente.
Javier de la Rica Palma Comunicaciones Multimedia D. ¿Cuál es la función de cada uno de los sockets?. Observa los datos intercambiados entre las aplicaciones para identificar la funcionalidad mediante la utilidad de Wireshark: Analyze -> Follow TCP Stream Como se ha mencionado anteriormente, por un lado se puede observar en la siguiente figura que el primer socket no consigue establecerse ya que el sistema no reconoce el usuario anonymous.
El siguiente socket se establece de forma correcta y su objetivo es pedirle información al servidor.
Javier de la Rica Palma Comunicaciones Multimedia Finalmente se puede observar cómo el tercer socket, también correctamente establecido, proporciona la información solicitada por el previo socket.
E. Explica resumidamente cada uno de los comandos enviados desde el navegador al servidor.
A continuación se explica con con un poco de detalle los comandos que aparecen en el seguimiento del flujo TCP enviados al servidor desde el navegador en el orden observado: USER – Send Username USER username Se envía dicho comando para empezar el proceso de identificación mediante un nombre de usuario. Dicho nombre de usuario debe ser un nombre válido o anonymous en caso de querer acceder de forma anónima.
PASS – Send Password PASS password Una vez se ha enviado el nombre de usuario se envía el presente comando para completar el proceso de identificación.
SYST – Return System Type Éste comando devuelve una palabra identificando el sistema. En este caso se puede observar que se devuelve UNIX Type: L8 (Linux).
Javier de la Rica Palma Comunicaciones Multimedia PWD – Print Working Directory Dicho comando devuelve el nombre del directorio actual en el host remoto. En este caso se puede observar que éste directorio se presenta de la forma "/home/myvirtusr" is current directory.
TYPE – Set Transfer Type Adjudica el tipo del archivo que se va a transferir. A continuación del comando se debe especificar el tipo de archivo. Éste puede ser: ASCII text, EBCDIC text, imagen (datos binarios) o un formato local. En este caso nos encontramos con el comando TYPE I, que corresponde a una imagen de datos binarios.
PASV – Enter Passive Mode Indica al servidor la intención de entrar a modo pasivo. En este modo el servidor quedará a la espera de que el cliente establezca una conexión con él. El servidor responde con la dirección del puerto al que está escuchando con un menaje como el siguiente: Entering Passive Mode (10, 34, 1, 2, 17, 30) Podemos extrar la información siguiente: 10.34.1.2 es la dirección IP y 17·256+30 = 4328 es el número de puerto.
CWD /home/myvirtusr/ - CWD al padre del directorio actual Hace que el directorio dado, en este caso el directorio /home/myvirtusr/ sea el directorio actual en el host remoto.
LIST – List Remote Files Si se refiere a un archivo, envía la información correspondiente a dicho archivo. Si por el contrario se refiere a un directorio envía la información correspondiente a cada uno de los archivos presentes en dicho directorio. Éste comando debe precedir por un comando PORT o PASV.
Nota: Para la interpretación de los comandos consulta: http://www.nsftools.com/tips/RawFTP.htm 5.5 Servicio HTTP En este ejercicio revisará el protocolo http y las aplicaciones relacionadas que actúan con servidor y cliente. El servidor utilizado será el software Apache instalada en la máquina virtual source1. El navegador que emplearemos será firefox.
El servidor Apache viene pre-configurado de forma que sirve por defecto el archivo index.html que está ubicado dentro de la máquina servidor en /var/www/index.html.
Javier de la Rica Palma Comunicaciones Multimedia Para comprobar el correcto funcionamiento, así como, el contenido de la máquina index.html realizaremos desde la máquina cliente: host$ firefox http://10.34.1.2 Figure 2: Página WWW definida por defecto en el servidor virtual A. La preparación de los contenidos del servidor se debe iniciar haciendo que sean accesibles los ficheros a distribuir. Para ello nos situamos como usuario root en el directorio que utilizará por defecto el servidor Apache y enlazaremos (también se pueden mover o copiar) los contenidos multimedia que vamos a ofrecer: source1: cd /var/www/ source1:/var/www# ls –l source1:/var/www# ls -l total 4976 lrwxrwxrwx 1 root root 34 Feb 29 18:15 big_buck_bunny.mp4 -> /home/myvirtusr/big_buck_bunny.mp4 -rwxr-xr-x 1 root root 5071076 Feb 29 18:27 big_buck_bunny.webm -rwxr-xr-x 1 root root 1313 Feb 29 18:27 index-alternativo.html -rw-r--r-- 1 root root 1313 Feb 29 18:27 index.html lrwxrwxrwx 1 root root 39 Feb 29 18:14 warriors-700-sp-VBR.ogv -> /home/myvirtusr/warriors-700-sp-VBR.ogv source1:/var/www# ln -s /home/myvirtusr/warriors-700-sp-VBR.ogv source1:/var/www# ln -s /home/myvirtusr/big_buck_bunny.mp4 source1:/var/www# ln -s /home/myvirtusr/sintel_trailer.m2v source1:/var/www# ln -s /home/myvirtusr/big_320_x180_CBR_400K+32K.ts Comprueba las acciones realizadas a través de la lista de contenidos del directorio actual: source1:/var/www# ls –l source1:/var/www# ls -l total 4976 lrwxrwxrwx 1 root root 44 Feb 29 18:34 big_320_x180_CBR_400K+32K.ts -> /home/myvirtusr/big_320_x180_CBR_400K+32K.ts lrwxrwxrwx 1 root root 34 Feb 29 18:15 big_buck_bunny.mp4 -> /home/myvirtusr/big_buck_bunny.mp4 -rwxr-xr-x 1 root root 5071076 Feb 29 18:27 big_buck_bunny.webm -rwxr-xr-x 1 root root 1313 Feb 29 18:27 index-alternativo.html Javier de la Rica Palma Comunicaciones Multimedia -rw-r--r-- 1 root root 1313 Feb 29 18:27 index.html lrwxrwxrwx 1 root root 34 Feb 29 18:33 sintel_trailer.m2v -> /home/myvirtusr/sintel_trailer.m2v lrwxrwxrwx 1 root root 39 Feb 29 18:14 warriors-700-sp-VBR.ogv -> /home/myvirtusr/warriors-700-sp-VBR.ogv observamos que junto con el fichero de acceso por defecto están enlazados los contenidos.
Es imprescindible para poder servir los archivos que se disponga de permisos de lectura en todos los directorios que los contienen y en los propios archivos. Para ello, en este caso, podemos hacer: source1:/var/www# pushd /home/myvirtusr source1:/var/www# chmod 644 *.ogv *.mp4 *.ts *.m2v source1:/var/www# popd B. Para acceder a los contenidos añadidos se debe especificar el archivo que se desea, por ejemplo: host$ firefox http://10.34.1.2/big_buck_bunny.mp4 Si se conoce a priori que el contenido a descargar es multimedia, entonces, se puede realizar la descarga en streaming. Esto significa que mientras se recibe el contenido en el cliente se va reproduciendo. Para ello, utilizaremos directamente un reproductor: host$ vlc http://10.34.1.2/big_buck_bunny.mp4 Explica detalladamente las diferencias que observas entre la descarga con el navegador y con el reproductor.
Con el navegador la descarga se hace rápida y eficaz pudiendo escoger el directorio de destino en el que queremos guardar el archivo, sin embargo mediante la descarga con el reproductor no he tenido opción de escoger el directorio de destino. Por otro lado, con la descarga mediante el reproductor es posible observar el vídeo a medida que va descargando.
C. Indica si la descarga y reproducción realizada utilizando: host$ curl --limit-rate 75K http://10.34.1.2/big_buck_bunny.mp4 | \ mplayer -noidx -nocache - es del tipo Store-and-Play o del tipo Streaming. Modifica la velocidad de descarga (en KiloBytes) para que sea obvio su funcionamiento.
El tipo de descarga y reproducción realizada con el comando proporcionado es del tipo Streaming, ya que reproduce directamente lo que descarga. Si por ejemplo ponemos una velocidad de 10K podemos observar claramente que la reproducción del vídeo se clava, ya que no tiene suficiente como para seguir reproduciendo. Es por eso que siempre se debe mantener una velocidad de reproducción menor o igual a la de descarga en el caso de Streaming, con el objetivo de obtener una reproducción seguida sin paradas.
Javier de la Rica Palma Comunicaciones Multimedia D. Lo habitual será publicar los contenidos disponibles a través de una página Web. En este caso modificaremos la página por defecto index.html. Para su edición podemos utilizar un editor desde el terminal en el servidor source1, por ejemplo pico, o transferirlo al host.
Para el caso de utilizar el editor pico se debe recordar que la aplicación utiliza el terminal de la máquina virtual para la edición. La máquina virtual debe conocer la geometría de su terminal que se puede debe notificar, siempre que se redimensione su ventana, a través de la combinación de techas Ctrl+A y después F. El editor se puede invocar directamente utilizando: source1$ pico index.html Si se utiliza la segunda opción podremos utilizar un editor gráfico en el host. Para transferir el fichero desde el servidor al host se puede utilizar el servicio ftp, estudiado anteriormente (modificando los permisos de escritura de los archivos), o la orden directa de copia remota segura de la siguiente forma: host$ cd /home/telematic/Downloads/ host$ scp root@10.34.1.2:/var/www/index.html .
telematic@telem:~/Downloads$ scp root@10.34.1.2:/var/www/index.html .
root@10.34.1.2's password: index.html 100% 62 0.1KB/s 00:00 host$ gedit index.html & host$ scp index.html root@10.34.1.2:/var/www/index.html Cada vez que se modifique el contenido del fichero index.html con el editor del host se debe guardar y volver a copiar en el servidor.
telematic@telem:~/Downloads$ scp index.html root@10.34.1.2:/var/www/index.html root@10.34.1.2's password: index.html 100% 62 0.1KB/s 00:00 Nota: Para su correcta visualización se debe obligar al navegador a re-cargar la página html.
A modo de ejemplo, se propone una página con el siguiente contenido: Nota: Para una introducción rápida al lenguaje html se puede consultar: http://www.w3schools.com/html Javier de la Rica Palma Comunicaciones Multimedia <!DOCTYPE html> <html> <body> <h1>Virtual Machine WWW Server</h1> <h2>Video For Everybody Test Page</h2> <p> AV1: <a href="big_buck_bunny.mp4">"Big Buck Bunny (mp4)"</a> </p> <p> AV2: <a href="sintel_trailer.m2v">"Simtel Trailer Video Only (m2v)"</a> </p> <p> AV3: <a href="warriors-700-sp-VBR.ogv">"Warriors of the Net (ogv)"</a> </p> <p> AV4: <a href="big_320_x180_CBR_400K+32K.ts">"Big Bunny Low Res (ts)"</a> </p> </body> </html> Realiza el acceso a los distintos contenidos publicados en el servidor WWW.
Javier de la Rica Palma Comunicaciones Multimedia E. Para ampliar los tipos de contenidos Audiovisuales predefinidos en el servidor Apache se debe modificar la configuración por defecto.
Consultar http://en.wikipedia.org/wiki/Internet_media_type.
Se debe recordar que los tipos MIME (Multipurpose Internet Mail Extensions), predefinidos se encuentran disponibles en http://www.iana.org/assignments/media-types/media-types.xhtml En este caso, el tipo MIME del archivo m2v no está predefinido. Por lo tanto, se debe añadir en el fichero de configuración del servidor ubicado en /etc/apache2/mods-enabled/mime.conf. Para ello se debe incorporar una nueva línea, a continuación de los otros tipos ya definidos, de la forma: AddType video/mpeg .m2v utilizando el editor: source1:/var/www# pico /etc/apache2/mods-enabled/mime.conf Para que tenga efecto el cambio será necesario re-arrancar el servidor apache: source1:/var/www# /etc/init.d/apache2 restart Recuerda que el navegador solicitará la aplicación para reproducir el contenido si no está predefinida. En este caso se recomienda utilizar la aplicación VLC que reside en /usr/bin/vlc.
F. Mejora el servicio de descarga y visualización con las funcionalidades aportadas por la versión HMTL5. Consulta las páginas: https://developer.mozilla.org/es/docs/Web/HTML/Usando_audio_y_video_con_HTML5 Identifica los formatos de codificación que se pueden utilizar y desarrolla una versión mejorada de la página Web.
Verifica el correcto funcionamiento de la página html5 a través de una versión reciente del navegador Firefox: host:~$ firefox-40 http://10.34.1.2/ Como solución alternativa se puede probar la proporcionada en el escenario a través de la ejecución de la etiqueta: host$ simctl framework exec www-config y su visualización con el navegador host:~$ firefox-40 http://10.34.1.2/index-alternativo.html Como mejora y modificación del servicio de descarga y visualización mediante HTML5 se ha hecho una versión parecida al ejemplo como se puede observar en la imagen siguiente, tanto el archivo html como la visión web. Existen ciertos formatos no soportados en los navegadores, así que se añade el enlace de descarga en el caso de no poder ser visualizado en streaming en el propio navegador.
Javier de la Rica Palma Comunicaciones Multimedia <!DOCTYPE html> <html> <body> <h1>Virtual Machine WWW Server</h1> <br> <br> <p> <h3> </p> <p> AV1: BIG BUCK BUNNY (mp4) </h3> <video src="big_buck_bunny.mp4" type="video/mp4" controls> Tu navegador no implementa el elemento <code>video</code>.
</video> <h3> If the video does not work, please click on the link below:</h3> <a href="big_buck_bunny.mp4">"Big Buck Bunny (mp4)"</a> </p> <br> <br> <p> <h3> </p> <p> AV2: SINTEL TRAILER (m2v) </h3> <video src="sintel_trailer.m2v" type="video/m2v" controls> Tu navegador no implementa el elemento <code>video</code>.
</video> <h3> If the video does not work, please click on the link below:</h3> <a href="sintel_trailer.m2v">"Simtel Trailer Video Only (m2v)"</a> </p> <br> <br> <p> <h3> </p> <p> AV3: WARRIORS OF THE NET (ogv)</h3> <video src="warriors-700-sp-VBR.ogv" type="video/ogv" controls> Tu navegador no implementa el elemento <code>video</code>.
</video> <h3> If the video does not work, please click on the link below:</h3> <a href="warriors-700-sp-VBR.ogv">"Warriors of the Net (ogv)"</a> </p> <br> <br> Javier de la Rica Palma Comunicaciones Multimedia <p> <h3> AV4: BIG BUCK BUNNY LOW RESOLUTION (ts) </h3> <video src="big_320_x180_CBR_400K+32K.ts" type="video/ts" controls> Tu navegador no implementa el elemento <code>video</code>.
</video> </p> <p> <h3> If the video does not work, please click on the link below:</h3> <a href="big_320_x180_CBR_400K+32K.ts">"Big Bunny Low Res (ts)"</a> </p> <hr> <br> <br> <address> <small> <a href="http://bohr.upc.es">Comunicaciones Multimedia</a> <h3>Javier de la Rica</h3> </small> </address> </body> </html> Javier de la Rica Palma Comunicaciones Multimedia Javier de la Rica Palma Comunicaciones Multimedia ...