解决windows10/11 不识别Linux Samba共享
首先,SMBv1有已知安全问题,因而微软决定禁用 SMBv1,因此导致了 NetBIOS 不能工作。
其次,采取其他方案。Web Service Discovery 就是我们想要的方案
自从升级了某个版本的 Windows 10之后,启动 smbd 的 Linux 主机一直不能自动的出现在Windows 资源管理器中。但是直接输入IP也是可以使用的,就一直没有太关心。
今天想解决这个问题,很幸运找到了正确的文章:
Samba 4, shares, wsdd and Windows 10 - how to list Linux Samba servers in the Win 10 Explorer
长话短说:Windows 一直以来依靠 NetBIOS
来发现其他机器。SMBv1有已知安全问题,因而微软决定禁用 SMBv1
,因此导致了 NetBIOS
不能工作(具体逻辑请看原文)
显然,我们不应该为了网络发现启用SMBv1,而应该采取其他方案。Web Service Discovery
就是我们想要的方案。为此我们应当:
在 Windows 启用相关服务(Windows默认为启动,但仍需要检查)
启用 Function Discovery Provider Host
启用 Function Discovery Resource Publication
在 Linux 安装 WSDD
来作为 Web Service Discovery
的服务器
WSDD 是 Web Service Discovery host daemon 的简称,
Github : christgau/wsdd
以Ubuntu 20.04 为例,安装步骤如下
信任Key
1 | curl -L https://pkg.ltec.ch/public/conf/ltec-ag.gpg.key | sudo apt-key add - |
添加源
1 | echo "deb https://pkg.ltec.ch/public/ focal main" | sudo tee /etc/apt/sources.list.d/wsdd.list |
更新并安装
1 | sudo apt update && sudo apt install wsdd |
启动 WSDD 服务并自动启动
sudo systemctl start wsdd && sudo systemctl enable wsdd
WSDD 启动成功后,Windows 应该就能在网络中发现你的 samba 主机了。
如果你开了ufw防火墙的话,也是看不到的,我们需要打开ufw
1 | sudo ufw app list |
然后打开多播235.255.255.250的3702端口
编辑/etc/ufw/before.rules
,其中192.168.1.0/24
改为你的网段
1 | # allow MULTICAST WS-Discovery for service discovery (be sure the MULTICAST line above |
修改/etc/wsdd.conf文件。
其中interface
改为你的网卡
1 | WSDD_PARAMS="-4 --shortlog --interface ens160 --discovery" |