smb1 and network discovery

Mikhail Novosyolov m.novosyolov at rosalinux.ru
Sun Oct 27 10:03:00 UTC 2019


smb1 still has some very important use cases in Samba, for which there 
is no replacement.
I would like to remember about network discovery.

smb protocols > NT1 do not allow to list smb:// network, only smb1/nt1 
can be used to list it.
Only smb1 allows to browse smb:// network: find shares, computers and 
printers.
It has been broken since samba 4.8 or 4.9, when samba stopped trying to 
connect using smb1 by default and started to use smb2 as a first option 
to try to connect.
Nowadays the only possible way to work with smb1 and to find computers 
in the newtwork is setting 'client max protocol = NT1' is smb.conf, but 
this breaks smb2, smb3 etc.

Modern Windows uses Web Service Discovery protocol to do this.
There is wsdd - a simple Python daemon which allows a UNIX host to be 
discoverable via WSS: https://github.com/christgau/wsdd/
I am surprised why my package of wsdd in ROSA Linux 
(https://abf.io/import/wsdd) and the one in AUR are the only ones across 
all *nix systems: https://repology.org/project/wsdd/versions
Seems that really few people are interested in solving this problem. 
wsdd makes Linux hosts discoverable from Windows and will be 
preinstalled in future realeases of ROSA Linux.
But wsdd only makes Linux discoverable by Windows, Windows hosts, shares 
and printers still cannot be discovered by from Linux! I saw a link to 
https://bugzilla.samba.org/show_bug.cgi?id=11473 where there are patches 
to implement WSS in Samba, but there is no progress there.

Network discovery via smb1 is widely used in a typical GNU/Linux desktop:
- GVFS, browsing network in file managers (Nautilus, Thunar, 
pcmanfm(-qt) and others)
   GVFS recently made a workaround to browse smb:// with newer versions 
of Samba:
https://gitlab.gnome.org/GNOME/gvfs/commit/6c8bc39f570ea82cf14e83ce7d1dbdbe569d09d1
   It uses "smbc_setOptionProtocols (smb_context, "NT1", "NT1");" from 
libsmbclient 4.10.0+
   It sets client max protocol = NT1 to list root of smb://, but then 
smb1 may be not used for deeper listing of a specific file share.
- KDE KIO, browsing network in Dolphin file manager
   I wanted to make a similar workaround of broken smb:// listing, but 
did not finish it because it requires chnaging a lot in KIO SMB
   https://phabricator.kde.org/D18878
- system-config-printer (GTK+ GUI to setup printers) can find smb-shared 
printers, but fails to do so with newest samba versions due to 
impossibility to list smb:// without forcing smb1 protocol

Now it is possible to workaround listing smb:// as GVFS does by forcing 
NT1 protocol, but removal of smb1 from samba will break even this!
In most cases security is not so important, for example, if it is a 
small office, where even authorization is not used to connect to shares 
and printers.

So, what I would like to pay attention to: network discovery via smb is 
broken in samba but can still be used with workarounds, removing smb1 
will make it completely impossible.




More information about the samba-technical mailing list