ICMP Error mal formado (Bogus version)

ICMP Error mal formado (Bogus version)

de Joaquin Vidal Fiorella -
Número de respuestas: 7

Buenas! Espero se encuentren bien. 

Al crear los paquetes de error ICMP estamos viendo que dentro del header ICMP aparece un header IP con un error "bogus version (0)" y dentro de el se ve que hay un problema con la versión. Esto genera que el cliente no se de cuenta de que hubo ya una respuesta y continue incrementando e tll. 

Es esto porque estamos cometiendo algún error al formar el paquete de error? Al header ICMP le estamos setteando el type y code en los valores correspondientes en cada error, en data le ponemos 28 bytes del header IP del paquete original y luego calculamos el checksum. 

Aclaro que la captura es de un ping de un solo paquete a la primera interfaz del vhost 1.

Desde ya muchas gracias por la respuesta!

En respuesta a Joaquin Vidal Fiorella

Re: ICMP Error mal formado (Bogus version)

de Joaquin Vidal Fiorella -
En respuesta a Joaquin Vidal Fiorella

Re: ICMP Error mal formado (Bogus version)

de Joaquin Vidal Fiorella -
Perdón, estaba revisando mi pregunta y vi que me equivoqué al escribirla.

Puse que es de un ping a la primera interfaz de vhost1, eso es incorrecto. Es a la “primera” interfaz de vhost 2. El comando sería
client ping -c 1 10.0.0.2

Y la captura es tomada desde vhost1
En respuesta a Joaquin Vidal Fiorella

Re: ICMP Error mal formado (Bogus version)

de Martin Giachino -
Si prestan atención el mensaje de error "Bogus IP Version", hace referencia a que la versión del protocolo es incorrecta. Vean que los primeros 4 bits indican la versión de IP, que en el paquete que armaron hay 0000 y en realidad debería ser 0100 (o sea 4, porque es IPv4). los siguientes 4 bits indican el largo del cabezal, que en nuestro caso sería 20 bytes y por eso sería 0101b o 5 en hex y en el paquete de ustedes hay un 0011 o 3.

El resto no lo miré pero es claro que lo están armando mal.

Martín
En respuesta a Joaquin Vidal Fiorella

Re: ICMP Error mal formado (Bogus version)

de Matias Richart -
Buenas,

Complementando un poco la respuesta de Martín, agrego alguna pista de por donde buscar el error.

Parecería que el error lo tienen en su código donde armar el paquete ICMP de error, en este caso el host unreachable.
La primer pregunta que me hago es porque se genera un host unreacahble si están enviando el ping a una interfaz válida y existente.
Tampoco entiendo esta parte de su pregunta "no se de cuenta de que hubo ya una respuesta y continue incrementando e tll". Si están probando un ping, porque hablan de incrementar el ttl?

Yendo a la posible fuente de error, parecería que el problema es cuando copian los 28 bytes del paquete IP en los datos del ICMP.
Podrá ser que estén realizando mal esa copia de alguna forma? Un posible error podría ser que hayan liberado la memoria del paquete IP recibido antes de hacer la copia.

Espero sea de ayuda.

Saludos
En respuesta a Matias Richart

Re: ICMP Error mal formado (Bogus version)

de Joaquin Vidal Fiorella -

Buenas! Muchas gracias a ambos por las respuestas.

Logramos encontrar el error y si, era en el campo de data del header ICMP, estabamos considerando el header ethernet lo cual es un error. 

Estabamos devolviendo un error al hacer ping a esa interfaz ya que estabamos tratando de replicar lo mas posible el resultado obtenido con la solución que nos entregaron (sr_solution), al probar ahí vemos que devuelven Host Unreachable. Adjunto captura de esto. 

Entiendo ahora que en todas las interfaces debemos responder con una reply correcta, no? 

Con lo del ttl me refería al hacer un traceroute, en ese casa pasaba lo que comenté, el cliente ignora los mensajes de reply (pues tenían el error en el header ICMP) y continuaba avanzando con los saltos. 


Adjunto PHOTO-2024-11-12-09-28-34.jpg
En respuesta a Joaquin Vidal Fiorella

Re: ICMP Error mal formado (Bogus version)

de Matias Richart -
Hola Joaquín.

Si, deben devolver un echo reply. Eso es un error del binario que subimos originalmente. Disculpas por la confusión que pudo generar.

Saludos
En respuesta a Joaquin Vidal Fiorella

Re: ICMP Error mal formado (Bogus version)

de Federico Rodriguez -

Estimados, todo indica que el paquete está mal formado.

Les sugiero que capturen la salida del router que generó el ICMP Error y vean como fué generado. En caso de estar allí el error, el problema está en la generación el ICPM Error. En caso de que salga bien generado del router y se transforme a mal generado en la ruta, entonces el problema está en el forwarding.

Para ayudar pueden colocar prints en el código que les permita ver el valor que están colocando en el campo.

Federico