Quienes no pueden abrir un archivo subido suelen oír que la VPN lo corrompió. Eso es una hipótesis, no una observación, y es comprobable. Antes de tocar el túnel, establezca si el objeto ahora almacenado en el destino difiere del objeto que debía enviarse. Todo lo demás se sigue de esa respuesta.

Empiece por los bytes previstos, no por la queja

Elija un archivo inofensivo que reproduzca el problema, o el archivo real si la política permite que salga del entorno de origen. Anote dos cosas antes de la transferencia: el tamaño exacto en bytes y un hash de contenido moderno. Los nombres de archivo, las marcas de tiempo y las vistas previas son metadatos, y ninguno de ellos identifica el contenido.

Calcule el hash con un algoritmo que ambos extremos puedan ejecutar y anote cuál usó. Una comparación entre SHA-256 y MD5 no es una comparación, y tampoco lo es una comparación entre dos archivos distintos que comparten nombre por casualidad.

PS> Get-FileHash -LiteralPath "C:\uploads\report.csv" -Algorithm SHA256
Hash                                                        Path
----                                                        ----
9F2C...                                                      C:\uploads\report.csv

La referencia de Get-FileHash de Microsoft documenta el comando y su parámetro de algoritmo, justo la parte que la gente omite cuando una comparación produce una discrepancia sin sentido.

Un hash por etapa, el mismo algoritmo

Ahora calcule el mismo algoritmo sobre el objeto almacenado donde finalmente vive, con un método autorizado y no con una copia que pasó por otra herramienta. Guardar el archivo recibido localmente y aplicar el hash a esa copia añade un paso que no ha probado.

Si el servicio expone un valor de integridad propio, trátelo como una observación separada. La suma de comprobación que informa el proveedor puede decirle qué cree el proveedor que almacenó, y no es la misma afirmación que la de lo que envió su cliente.

Caben tres resultados, y apuntan en direcciones distintas. Hashes iguales significan que los bytes llegaron sin cambios. Hashes distintos con una conversión conocida significan que el servicio produjo intencionadamente un objeto nuevo. Hashes distintos sin conversión significan que algo entre los dos puntos alteró el contenido, y el siguiente paso es encontrar la frontera más temprana donde ocurrió.

Separe el fallo de transferencia de la transformación

Una subida parcial y una subida corrupta se ven idénticas en un explorador de archivos y son fallos distintos. Compruebe si la transferencia se completó: un registro de la aplicación que muestra una solicitud abortada, un archivo almacenado cuyo tamaño es un prefijo del origen, o un objeto que en realidad es una página de error guardada con la extensión esperada, todos indican una transferencia incompleta y no bytes alterados.

La transformación es la otra explicación habitual. Un servicio que recomprime imágenes, reescribe los finales de línea de un CSV o convierte un documento producirá legítimamente un hash distinto del de origen, y eso no es corrupción. Compare la etapa que afirma ser la copia fiel, no el formato de presentación final.

El retraso y la pérdida pertenecen a una tercera categoría. Pueden hacer que un cliente agote el tiempo, reintente o se rinda, y nada de eso implica que los bytes aceptados por el servidor se hayan cambiado en silencio. Mire el resultado de la transferencia antes de atribuir nada al túnel.

Pruebe una segunda ruta sin cambiarlo todo

Si los hashes realmente difieren y no hay conversión de por medio, repita el mismo archivo, cliente, protocolo y destino por otra ruta admitida, como una red local en lugar de la VPN. Cambie una variable. Cambiar el cliente, el extremo y la herramienta a la vez le da un resultado que no puede atribuir.

Mantenga la comparación honesta en ambos sentidos. Un hash le dice que dos puntos discrepan o coinciden sobre el contenido; no le dice qué lado es fiable, así que mantenga el valor esperado y la verificación dentro del modelo de confianza en el que realmente confía.

Termine con una frase concreta en el ticket: la transferencia se detuvo pronto, la aplicación transformó el objeto, el almacenamiento lo cambió, o los bytes coinciden y leerlos es el fallo. Cada una de esas tiene un propietario distinto, y ninguna de ellas es la VPN por defecto.

Artículos relacionados