Marc Haber <
mh+usene...@zugschl.us> wrote:
>ich habe hier einen Scanner von ca 2008, der autark auf eine SD-Karte
>scannen kann und den Inhalt dieser SD-Karte als SMB-Server im Netzwerk
>veröffentlichen kann.
>Seit einigen Wochen funktioniert dieser CIFS-Mount nicht mehr, auch
>smbclient mit verschiedenen Settings von client (min|max) protocol in
>der smb.conf fällt auf unterschiedliche Fehlermeldungen, aber nie zu
>einer funktionierende Verbindung.
And the Winner is: Eine Regression im Kernel.
Im Kernel 5.8 geht es noch, im Kernel 6.1 ists kaputt.
Im Trace zeigt sich: TCP-Verbindungsaufbau auf Port 139, NETBIOS
Session Request, Negotiate Protocol Request vom Client (mit NT LM 0.12
und POSIX 2 als angebotenen Dialekten). Der Scanner antwortet mit
einem Positive Session Response und schickt dann direkt ein FIN
hinterher.
Das hat mich stutzig gemacht, warum sollte der zuerst sagen "alles
fein" und dann auflegen.
Ich habe daraufhin auf meinem Debian sid den Kernel 5.8 aus Debian
bullseye installiert, und mit diesem konnte ich das Laufwerk vom
Scanner problemlos einhängen und auch Daten übertragen.
Ich habe dann beide Traces nebeineinander gelegt und vom Zeitpunkt des
Abbruches zurück nachgeschaut, wo die Unterschiede sind. Dabei habe
ich festgestellt, dass das LENGTH Field im vom Client gesendeten
NETBIOS Session Request im "Gut" fall um 2 niedriger ist als im
"Schlecht" Fall, obwohl das IP-Paket in beiden Fällen gleich lang ist.
Ergo: Eins der Längenfelder muss falsch sein, und zwar
naheliegenderweise das aus dem "Schlecht"-Fall, und die falsche Länge
bringt den SMB-Server vom Scanner so heftig aus dem Tritt das dieser
das Handtuch wirft und auflegt.
Das habe ich im IRC angesprochen und Lalufu hat sich netterweise in
die Kernelsourcen gestürzt. Schließlich kam er dann mit
|
https://github.com/torvalds/linux/commit/d7173623bf0b1503bc4e6f13cd0fccab5e98c6ce#diff-9da6c9cec14d939ab18e7037291932a32d5b394f6b74e1eb18b9c77%0A909701bb6
und dem Hinweis "probier mal in Zeile 2877 statt -2 ein -4" um die
Ecke.
Aktuellen Kernel genommen, Änderung durchgeführt, Kernel compiled,
ausprobiert, geht.
So muss Open Source funktionieren.
Vielen Dank an alle.
Grüße
Marc
XP+F'up in die Samba-Gruppe, da hätte das von Anfang an hin gehört.
Sorry dafür.