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: 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:
- STATUS_NETWORK_SESSION_EXPIRED
- SATATUS_INVALID_PARAMETER
- ESTADO_NOMBRE_RED_BORRADO
Aquí está el final SMB2
mensaje (segundo desde abajo): 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)]
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.
0 votos
Siento no tener una respuesta rápida, pero la traza y los registros de Wireshark deberían apuntar a algo. Si puedes ponerlos en algún sitio, incluso les echaré un vistazo.
0 votos
@WilfredSmith He añadido un ejemplo de conversación Wireshark. Todos los servidores tienen la misma conversación en ese número de intercambios.
0 votos
@Louis ¿Puedes publicar este problema en el foro de desarrolladores de Apple? Al menos sabemos que el dedo apunta al cliente SMB de Apple.
0 votos
@WilfredSmith Cierto, no se me ocurrió postear ahí. Había abierto un informe de error hace unos días y aún no he recibido respuesta. En realidad, tu sugerencia de Wireshark fue muy perspicaz, y los mensajes SMB finalmente desviaron mi atención de Ubuntu y Apple, hacia los controladores de dominio. Entré en ellos, y vi que el DC primario tenía un uso de CPU inusualmente alto y constante. También tenía el tiempo de actividad más largo de los DCs, con diferencia. Transferí el rol de PDC a otro DC y lo reinicié. Desde que lo hice, alrededor de las 7 de la mañana del 31 de octubre, el problema parece haber desaparecido. Crucemos los dedos.
1 votos
Probablemente hablé demasiado pronto. Los usuarios están cayendo con el
../source3/smbd/service.c:1050(close_cnum)
Registros Samba. Mis conexiones están todavía para arriba por alguna razón (en una vainilla, todos los valores predeterminados, Mac también).0 votos
El DC problemático volvió a su comportamiento. Dos de los DC no están recibiendo correctamente las actualizaciones del servidor WSUS. He transferido todas las funciones de FSMO al DC que recibe las actualizaciones y he dado de baja el DC defectuoso. Empezaré a solucionar los problemas del servidor WSUS. Mis clientes vanilla Mac, Linux y Windows siguen manteniendo sus conexiones, pero otros Mac siguen cayendo como se ha descrito anteriormente.
0 votos
¿Cómo es tu smbd.conf? ¿Tiene soporte para Time Machine?