jueves, 1 de enero de 2015

Proyecto Redes: Parte III

Hoy voy a introducir un concepto nuevo, el DNS, y a ampliar un poco mas los posts anteriores, pero esta vez de forma mas interactiva.

Recordemos el caso anterior de la tienda online. La idea era la siguiente: para acceder a una tienda online mando paquetes de datos a su servidor y este me responde con otros paquetes. Sin embargo, ¿como se la IP de su servidor?

Mirad de nuevo la imagen del post. Podeis ver un servidor, que he puesto cerca de mi red local, llamado DNS. Los servidores DNS ("Domain name server" o servidor de nombre de dominio) funcionan al igual que un listin telefonico. Asocian nombres de dominio, como puede ser "tiendavirtual.com" con una direccion IP, como puede ser 12.34.56.78. Yo ya conozco la direccion IP del DNS ya que me la proporciona mi ISP (a traves del router), asi que cuando accedo a la tienda online hago lo siguiente.

1. Tecleo el nombre de la tienda en mi navegador (tiendavirtual.com)
2. Mi ordenador no sabe su IP, asi que se la pregunta al DNS (que puede ser un DNS o mi router, que se encargaria de pedirsela a otro DNS).
3. El DNS responde a mi ordenador que la IP de tiendavirtual.com es 12.34.56.78.
4. Mi ordenador envia los paquetes que van a tiendavirtual.com a la dirección 12.34.56.78.

Y pocos secretos mas tiene la navegacion web "basica".

Os preguntareis, ¿y por que ha metido esto aquí? Pues porque nos va a aparecer el concepto de DNS en el siguiente bloque.

Ahora viene la parte práctica. ¿Que tal si veis cada uno como funciona aplicado a vuestros equipos? Para ello, usaremos una serie de herramientas en nuestros ordenadores. Voy a dar las explicaciones para Windows, principalmente, y quizas alguna para Linux. OSX es muy parecido a Linux, por lo que los comandos seguramente os funcionaran.

Lo primero que debemos hacer es abrir una ventana de "simbolo de sistema" en Windows (en Accesorios) o de "terminal" en Linux.

Ahora vamos a ver cual es nuestra IP. Vereis que puede ser distinto en vuestros equipos. Mi configuracion es manual, y posiblemente la vuestra sea automatica (usando un protocolo llamado DHCP). Para ello, los que useis Windows teneis que teclear IPCONFIG. Os saldra algo parecido a esto (voy a tachar cierta informacion).


En vuestro equipo lo vereis mas simple. Nos vamos a centrar en las dos primeras conexiones, Adaptador Ethernet VirtualBox Host-only network y Adaptador Ethernet Conexiones de red inalambricas.

¿Veis que aparece la dirección IP? Cada conexion de red tiene su propia IP, una es la 192.168.56.1 y la otra la 192.168.1.100. Tambien existen una serie de direcciones IP mas largas, que he tachado, que utilizan un protocolo distinto al que estoy explicando. Vemos tambien que la conexion de red inalambrica (que es mi conexion principal) tiene una Puerta de enlace predeterminada (el router al que se mandan las peticiones para equipos fuera de mi red), que es 192.168.1.1. Podeis encontrar aun mas información si en vez de IPCONFIG tecleais IPCONFIG /ALL. En mi caso ocupa mas de una pantalla, pero si nos limitamos a una sola conexion podemos ver algo como esto:


Aqui no solo vemos el nombre de "Conexiones de red inalambricas" sino tambien el tipo de dispositivo, la "dirección fisica" (la MAC, que se asigna de forma unica para cada dispositivo de red por parte del fabricante), si la configuracion esta realizada de forma automatica (DHCP) y los servidores DNS. Es bastante mas informacion.

¿Y en Linux? Uso tres comandos distintos (lo hago en otro equipo, por eso los datos son distintos), ifconfig, cat /etc/resolv.conf y route -n y nos sale lo siguiente:


Tras teclear ifconfig encontramos como antes que tengo varias conexiones. La que me interesa es la tercera, la que aparece junto a wlan0, que es mi conexion inalambrica (eth0 es la conexion por cable, ahora desconectada). Me indica mi IP, 192.168.1.103, entre otros muchos datos sobre la calidad de la transmision.

El segundo comando, cat /etc/resolv.conf me informa de cual es mi DNS. En este caso me aparece que mi "nameserver" (NS) es 192.168.1.1, correspondiente a mi router.

La salida del tercer comando, route -n, es tambien mas complicada que lo que se ve en Windows. Dice que para las conexiones a cualquier IP en general (0.0.0.0) use como puerta de enlace la dirección 192.168.1.1.

He dejado muchas cosas sin explicar, puesto que esto es solo la introduccion a las redes, no un tratado exhaustivo.

La siguiente cosa que vamos a ver es el comando ping. Este comando manda una solicitud de respuesta a otro equipo para medir cuanto tarda en regresar.

Veamos los resultados de un ping a twitter desde Windows:


Envia cuatro paquetes de prueba y calcula lo que tarda, indicandonos el tiempo mas rapido, el mas lento y la media. Con Linux es identico, aunque si no marcamos el numero de paquetes que queremos enviar, con la opcion -c, lo hace de manera continua y hay que pararlo con CTRL+C. Aqui va el mismo ejemplo, con cuatro paquetes de prueba.

Podeis ver que twitter.com me responde desde distintas IPs. Lo he realizado desde distintos equipos en distintos momentos, asi que me responden varios servidores de Twitter segun su disponibilidad.

La siguiente herramienta que usare es Traceroute, que va indicandonos el recorrido que sigue un paquete de datos dentro de Internet. Aplicamos el comando tracert en Windows:


Y desde Linux, el comando traceroute:


En ambas trazas, observamos por que servidores pasa el paquete y que aparece el tiempo minimo, maximo y medio de los pings entre cada servidor. Tambien que hay servidores que no facilitan esa informacion, por seguridad.

Ahora, para no extenderme, os comento un par de comandos interesantes para Windows con respecto a los servidores DNS:

IPCONFIG /DISPLAYDNS: muestra las asociaciones nombre de dominio-IP mas recientes devueltas por los servidores DNS a vuestro equipo.
IPCONFIG /FLUSHDNS: borra esa tabla de asociaciones. Por si quereis comprobar como al borrarlos y volver a entrar en las paginas se vuelve a regenerar.

Linux, en las distintas distribuciones, puede almacenar o no una tabla similar. No puedo daros unos comandos equivalentes ya que no hay un estandar.

Lo se, la tercera parte ha sido larga y complicada. Tambien ha sido lioso explicarla. Si teneis dudas, que las tendreis, planteadlas en los comentarios en vez de guardaroslas. Las redes son un tema complicado y poco de lo que he explicado aqui es facil, y menos para gente sin conocimientos previos.


Aviso a los tiquismiquis: si, existen algunas cosas que no son 100% exactas, pero he sacrificado la exactitud para mejorar la comprension.

No hay comentarios:

Publicar un comentario