10 votos

Los Mac se desconectan de un recurso compartido SMB: "STATUS_NETWORK_SESSION_EXPIRED (0xc000035c)"

Tengo algunos servidores Ubuntu ejecutando Samba con Winbind. Todo va bien, pero los Macs se desconectan aleatoriamente durante la noche, o en algún intervalo irregular.

En los servidores, Samba registra esto como dos eventos:

1: ../source3/smbd/service.c:1050(close_cnum)
2: closed connection to service data

Comparando las marcas de tiempo en los Macs puedo ver que registran las caídas como:

kcm DEPRECATED USE in libdispatch client: Setting timer interval to 0 requests a 1ns timer, did you mean FOREVER (a one-shot timer)?; set a breakpoint on _dispatch_bug_deprecated to debug

Analizando las marcas de tiempo he determinado que este es el único evento registrado en el lado de los clientes Mac. Aquí hay un ejemplo de cliente que tiene un shell script escribiendo a un archivo de texto en un recurso compartido cada diez segundos: Logging Example Puedes ver que la conexión estaba viva en 08:59:46 en el archivo de texto de la izquierda, y en /var/log/system.log sólo hay un mensaje relevante.

Pregunté en la lista de correo de Samba sobre ello y me han dicho que los Mac simplemente cierran las conexiones.


Actualización:

El análisis Wireshark muestra alguna información adicional:

Wireshark conversation about SMB error: STATUS_NETWORK_SESSION_EXPIRED Errores de arriba (Línea 4):

  • STATUS_NETWORK_SESSION_EXPIRED
  • SATATUS_INVALID_PARAMETER
  • ESTADO_NOMBRE_RED_BORRADO

Aquí está el final SMB2 mensaje (segundo desde abajo): Negotiate Protocol Response : Negotiate Protocol Response

Como para confundir, hay un NT Status: STATUS_SUCCESS mensajes (véase la anotación).

Esto es lo que Microsoft dice sobre el error:

Si el campo Estado del SM STATUS_NETWORK_SESSION reautenticar la sesión identificada por el SessionId en la cabecera en la cabecera SMB2, tal y como se especifica en la sección 3.2.4.2.3. Si la intento de reautenticación tiene éxito, el cliente DEBE reintentar la solicitud que falló con STATUS_NETWORK_SESSION_EXPIRED. I intento de reautenticación falla, el cliente DEBE fallar la operación y finalizar la sesión como se especifica en la sección 3.2.4.23.

¿Existe un script que pueda ejecutar para renovar la sesión en un cron job?

Fin de la actualización


Otros tipos de clientes mantienen las conexiones abiertas para siempre, por lo que parece que sólo los Mac hacen esto. Las versiones del sistema operativo varían desde OS X 10.12 a MacOS Catalina, utilizando varios sabores de SMB2 a SMB3.

¿Alguna idea de cómo puedo empezar a entender por qué los macs están haciendo esto, o algún consejo para conseguir que mantengan vivas las conexiones?

Los clientes Mac están ejecutando trabajos que dependen de una conexión persistente.


Es muy importante saberlo, pero en un principio lo omití porque buscaba una solución:

Tengo alrededor de una docena de estos servidores (en su mayoría Ubuntu 18.04; Samba 4.7.6) funcionando bien durante los últimos años. Tres de ellos tenían actualizaciones automáticas instaladas, y estos tres tienen el problema de la desconexión de los Macs. Estoy dejando que los otros servidores se reinicien para las actualizaciones, y los Macs no se desconectan de los servidores no actualizados.

Como prueba he configurado un servidor a 16.04 para ver si una versión anterior de Ubuntu Server plantearía el mismo problema. Sorprendentemente tiene el mismo problema utilizando una versión diferente de Samba (4.3.11). Tendré que hacer la prueba de nuevo, sin dejar que 16.04 instale las últimas actualizaciones de seguridad, para confirmar mis sospechas de que esas son la causa del problema.

Aunque sospecho que algo en el núcleo de Ubuntu ha cambiado, pregunto aquí ya que sólo afecta a los Mac.


En varios Macs con sistemas operativos desde 10.12 hasta Catalina he intentado probarlos con su configuración por defecto, y con todas las combinaciones posibles de cambios en /etc/nsmb.conf :

[default]
signing_required=no
protocol_vers_map=[see manpage for nsmb.conf (linked below)]

página de manual de nsmb.conf

También he probado a desactivar todas las opciones de suspensión y ahorro de energía, e incluso a usar un bonito cafffinate envoltorio, KeepingYouAwake para hacer cumplir esto.

En el servidor he probado siguiendo el consejo de otro administrador de sistemas en el #macosx canal freenode kode54, que compartieron cómo consiguieron finalmente una conexión estable .

El consejo no ayudó-bueno, no lo he probado completamente, ya que requiere la instalación de una versión de Samba de un PPA para una versión de Samba mantenida por el Proyecto Linux para Escuelas -pero me informó de vfs_fruit y el hecho de que existe una esfuerzo de desarrollo para ampliar Samba mediante un paquete adicional para, en parte, tratar con Macs. . También me llevó a encontrar una página en la wiki de Samba en la que se discuten las dificultades con los Mac y las soluciones del lado del servidor: _Configurar Samba para que funcione mejor con Mac OS X_

Es difícil para mí tratar de instalar Samba PPA sugerido porque estos servidores son servidores de archivos en parte solamente, y por lo general siempre están siendo utilizados para trabajos de computación que pueden tardar días en ejecutarse (procesamiento de neuroimagen). Fueron construidos para trabajos de computación, y hacen almacenamiento casi como un efecto secundario del doble socket, alta densidad de memoria, las opciones de servidor también resultan ser los servidores con el gran número de bahías de unidad (16+).

Espero probar otras opciones antes de que se convierta en algo totalmente negativo.

Como ninguna de las opciones del servidor me ayuda -he probado las banderas en varias combinaciones sin resultado-, espero que la comunidad de Apple tenga alguna solución para mí.

Cualquier forma de mantener una conexión persistente, a pesar de dónde se origine el problema, sería increíblemente valiosa.

0 votos

¿Es algo nuevo lo que estás montando? Si no es así, ¿puede aclarar si se trata de un problema nuevo o ha ocurrido siempre? Si es un problema nuevo, ¿hay algo más que haya ocurrido coincidiendo con el momento en que empezó el problema? Además, ¿cómo se conectan todos los Macs a los servidores Ubuntu? ¿Comparten una conexión o...? ¿Y se desconectan en momentos diferentes o todos dentro de un corto espacio de tiempo? Por último, es bueno que estés comprobando los registros - en el lado de Mac, ¿puedes también comprobar si hay un patrón familiar en términos de lo que está pasando en el período previo a que se desconecten?

0 votos

@Monomeeth Excelentes preguntas para mi vago problema. Omití intencionadamente muchos detalles para evitar complejidades, pero ahora los he rellenado porque probablemente tengas razón al sugerir que más información es mejor.

0 votos

Te pediría una traza de Wireshark. Esto me permitiría confirmar qué lado está cayendo, así como caminar a través de las transacciones en el cable para ver lo que está sucediendo en el momento de la falla. Logs del servidor y del cliente que incluyan el momento del fallo también pueden ayudar. Puedes pasarte el día adivinando y puede que tengas suerte. Por lo general, los registros y las trazas de red te darán una pista irrefutable.

0voto

llange Puntos 388

Yo sugeriría probar con la segunda: https://support.apple.com/en-us/HT202528

Aunque el uso está pensado si se utiliza un Mac como servidor de archivos, debería proporcionar una mayor prioridad para la E/S de red en los clientes.

Lee la configuración de la NVRAM:

nvram boot-args

Arrojará el siguiente error si nvram está configurado por defecto:

nvram: Error obteniendo variable - 'boot-args': (iokit/common) data was not found

Active el modo de rendimiento del servidor (MacOS 10.11 El Capitan y posterior):

sudo nvram boot-args="serverperfmode=1 $(nvram boot-args 2>/dev/null | cut -f 2-)"

Para apagar o reiniciar la PRAM o:

sudo nvram boot-args="$(nvram boot-args 2>/dev/null | sed -e $'s/boot-args\t//;s/serverperfmode=1//')"

-3voto

Naveed Abbas Puntos 126

Puede que ya hayas resuelto el problema, la única solución que me ha venido a la mente al volver a leer rápidamente tu pregunta es crear un archivo ficticio y utilizando rsync en mac, programar la transferencia de ese archivo ficticio a algún lugar a través de la red. De esta manera la red se mantendrá viva.

0 votos

Gracias por el consejo. Pero he desactivado SMB1 en todos mis sistemas a la luz de la exploits similares a wannacry . Usted está en algo sin embargo, he configurado un servidor VM de prueba con SMB1/CIFS, y no se desconecta. Personalmente, creo que Apple nunca se molestó en mantenerse al día con SMB en favor de AFP. Pero recientemente han estado actualizando su implementación, aunque todavía no creo que lo estén haciendo correctamente.

0 votos

Desde Maverick (MacOS 10.9) Apple anunció el cese del desarrollo de AFP (obsoleto). Por lo tanto, el protocolo nativo a utilizar es SMB2 o posterior. Por lo tanto, la afirmación de que "Mac no soporta SMB de forma nativa es errónea".

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X