Sep 22

En esta ocasión voy a explicar el funcionamiento del comando traceroute (tracert para los usuarios windows) una utilidad presente en casi todos los sistemas operativos que permite seguir y trazar el camino que sigue un paquete por las redes desde un punto de origen a uno de destino. Este comando es igual de útil para redes de área local (LAN) como para redes de área global o internet (WAN) .

Traceroute y los valores TTL

Traceroute y los valores TTL

Como se ha introducido antes, traceroute es un comando que permite desde una máquina A realizar un seguimiento de los paquetes que nos comunican con otra máquina B identificando, asimismo los puntos intermedios por los que pasan los paquetes. Es bastante frecuente oír expresiones como “Pasa por internet”, “Se transmite por la nube” o el más antiguo “Está en el ciberespacio” que no son más que eufemismos que abstraen e intentan ocultar que las comunicaciones entre ordenadores siguen un entramado medido de rutas que encaminan las comunicaciones entre dos ordenadores a través de routers, concentradores, servidores …  Los paquetes que nos comunican con otras máquinas siguen unos caminos medibles, predecibles y auditables que pueden ser estáticos o variar en función de parámetros como: carga del sistema, intereses políticos o empresariales, filtrados por protocolo…

¿Cómo funciona el comando traceroute?

El comando traceroute  se basa en un punto técnico tan simple como eficaz. Usando el parámetro TTL(Time To Live) de los paquetes UDP o ICMP y manipulándolo de forma que es capaz de averiguar el camino que estos paquetes siguen por la red. Normalmente el valor del parámetro TTL es decrementado en una unidad en cada uno de los puntos por los que pasa nuestro paquete. En un primer momento se envía un paquete con el valor del campo TTL = 1, valor que se decrementa en el primer punto de comunicación, generalmente en el router de nuestra casa, y para el cual se establece el valor 0 en este caso el router descartará el paquete y al emisor del mismo le devolverá un mensaje de error ICMP como el siguiente “Time to live exceeded in transit” el comando traceroute continuará enviando paquetes cada vez con un valor mayor hasta que le responda la máquina de destino de la traza o se alcance el número máximo de saltos, que por defecto es 30.

Cada vez que un paquete es descartado porque su valor TTL llega a 0 el enrutador que lo detecta está obligado por el protocolo a enviar un mensaje advirtiendo de que no se ha alcanzado el destino esperado. De esta forma se recupera en primera instancia su IP  y el valor del tiempo en el cual el paquete llega a nuestro sistema. Si a ello se le añade el uso por parte del comando nslookup podremos obtener información a mayores de la máquina que nos retorna el paquete porque su TTL ha llegado a cero.

Fallos en resultados ¿Qué son esos asteriscos?

En algunas ocasiones veremos que en la pantalla aparecen asteriscos en ligar de la información que deseamos. Esto sucede cuando los encaminadores que se corresponden con el salto indicado no responden con un mensaje indicando que el paquete ha sido descartado. En estos casos podemos ver un mensaje como el siguiente “Tiempo de espera agotado para esta solicitud”. Esto puede deberse a tres motivos:

  1. Que por un exceso de celo en la seguridad los encaminadores no retornen un mensaje de error en los paquetes perdidos
  2. Que por un ahorro de tráfico los encaminadores no retornen un mensaje de error en los paquetes perdidos.
  3. Que no se pueda establecer una conexión entre el punto de origen y el punto de destino elegido.

Diferencias entre windows y GNU/Linux

En muchas webs aparecerá que la única diferencia entre ambos sistemas operativos es que mientras windows usa el comando tracert los sistemas GNU/Linux usan el comando traceroute. Pero una diferencia que es necesaria tener en cuenta es que las pruebas que hagamos con el comando tracert de Windows usa paquetes ICMP por defecto mientras que el comando Traceroute de GNU/Linux usa paquetes UDP. Esto puede dar lugar a que ante dos comandos similares como “tracert google.es” y “traceroute google.es” obtengamos resultados diferentes. Si se quiere obtener resultados similares (Que normalmente serán los mismos) en GNU/Linux se puede forzar el uso de paquetes ICMP mediante el parámetro.

traceroute -I google.es

Y si se desea profundizar un poco más en el análisis se puede emplear un comando más complejo como este:

[sudo] traceroute -I -m 255 google.com -q 5

Con el parámetro -m se establece que se intentará realizar hasta 255 saltos hasta que se encuentre el destino o se descarte la comunicación. el parámetro -q indica que se intentará hasta 5 veces la comunicación con cada nodo intermedio

Una alternativa a traceroute en linux es el comando mtr, que ofrece más infomrmación complementaria que traceroute. A los curiosos les invito a que prueben el siguiente comando:

mtr –no-dns –report google.es

Share

Tagged with:
Ene 08

Como dice uno de mis compañeros de profesión (@luzem) “La cacharrería tiene una vida útil y punto, no le pidas más” y el caso es que esto es cierto. Por este motivo varios de los sectores del disco duro que soportaba mi sistema operativo han fallado. Acto seguido la solución parece fácil pero ¿Que pasa con los datos almacenados?

Kernel panic , por fallo en el hardware

Kernel panic , por fallo en el hardware

En este caso he tenido más suerte de la esperada. He comprado un nuevo disco duro y la solución pasa por copiar los datos del antiguo que solo tenía dañados sectores que se correspondían con el arranque del sistema operativo, por lo cual la partición dedicada a mi directorio home estaba intacta, pero cifrada. Cuando se cifra un disco duro en Kubuntu, en realidad lo único que se almacena en el directorio home son 2 enlaces simbólicos. Uno a un fichero de ayuda y el otro es el que nos permite descifrar los datos almacenados. si intentamos descifrarlos por las bravas nos dará un error, porque la ruta no es la correcta, dado que aloja un home de un sistema operativo no instalado. (Gracias David Olivieri por orientarme en la búsqueda del error) Así que para proceder a la desencriptación seguimos estos pasos

Desde nuestra nueva instalación GNU/Linux, lo primero que hacemos es instalar el paquete ecryptfs-utils con el comando:

1
 apt-get install ecryptfs-utils

Luego nos dirigimos a la carpeta en la cual se almacena el fichero para desencriptar nuestros archivos en el disco duro antiguo que es:

1
/media/usuario/ETIQUETA_DISCO_ANTIGUO/usr/share/ecryptfs-utils

Nos hacemos superusuarios y desencriptamos el contenido de la carpeta home

1
2
3
4
5
sudo su

#Y ejecutamos el siguiente comando

ecryptfs-recover-private

Como resultado obtenemos la siguiente respuesta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@GNUTIC:/media/usuario/ETIQUETA_DISCO_ANTIGUO/usr/share/ecryptfs-utils# ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/media/usuario/ETIQUETA_DISCO_ANTIGUO/home/.ecryptfs/jonathan/.Private].

# Nos pregunta si intentamos recuperar el contenido de ese directorio
Try to recover this directory? [Y/n]: Y
INFO: Found your wrapped-passphrase

#Indicamos que conocemos la antigua contraseña de desencriptación
Do you know your LOGIN passphrase? [Y/n] Y
INFO: Enter your LOGIN passphrase...

#Insertamos la contraseña de desencriptado, ojo no mostrará nada por pantalla, ni siquiera asteriscos pero si que la lee
Passphrase:
Inserted auth tok with sig [f3862c81eeb8a18d] into the user session keyring
INFO: Success!  Private data mounted at [/tmp/ecryptfs.J9un3vGO].

 

Hay que tener en cuenta que en la dirección /tmp/ecryptfs.J9un3vGO se monta el antiguo directorio home para que podamos hace uso de nuestros datos

hay que tener en cuenta que esta operación lleva varios minutos

 

Share

Tagged with:
preload preload preload