这几天在用旧电脑部署服务,顺便把这个过程记录一下。今天主要想从windows电脑访问旧电脑中的文档。这就涉及到局域网共享方法的问题。
先说结论:为什么选SMB
市面上文件共享协议不少,SMB、NFS、WebDAV、FTP……
对于普通用户,局域网就用SMB,远程就用WebDAV。
原因很简单:
其他协议的定位:
- WebDAV:适合Tailscale远程访问,局域网不如SMB快
第一步:在Linux上安装Samba
Samba是Linux上最流行的SMB服务器软件。
# 更新包列表sudo apt-get update# 安装Sambasudo apt-get install -y samba
安装完成后,Samba服务会自动启动。
第二步:配置共享目录
编辑配置文件:
sudo nano /etc/samba/smb.conf
在文件末尾添加:
[娱乐盘]path = /mnt/databrowseable = yes read only = no guest ok = yes create mask = 0777 directory mask = 0777
参数解释:
| |
|---|
path | |
browseable | |
read only | |
guest ok | |
create mask | |
安全提示:guest ok = yes 意味着任何人连上你的局域网都能访问这个共享。如果服务器暴露在互联网上,建议改为 guest ok = no 并设置密码(见后文)。
第三步:重启服务并验证
# 重启Samba服务sudo systemctl restart smbd# 查看共享列表smbclient -L //localhost -N
如果输出包含你刚才配置的共享名,说明配置成功。
Windows怎么访问
方法一:资源管理器(最推荐)
例如:
\\192.168.x.x\娱乐盘
方法二:映射网络驱动器
如果你经常访问,可以映射为本地磁盘:
之后你在「此电脑」里会看到一个网络磁盘,随时可用。
方法三:命令行
net use Z: \\192.168.x.x\娱乐盘
多目录共享
如果你有多个磁盘想共享,直接在配置文件中添加多个区块即可:
[娱乐盘]path = /mnt/data browseable= yes read only = no guest ok = yescreate mask = 0777 create mask = 0777 [工作盘]path = /mnt/work guest ok = yes read only = noguest ok = yescreate mask = 0777 create mask = 0777 [备份盘]path = /mnt/backup read only = yes guest ok = yes read only = no guest ok = yes create mask = 0777 create mask = 0777
每个共享名对应一个独立的访问入口。
Mac怎么访问
Mac原生支持SMB,连接方式更简单:
Linux怎么访问
GNOME桌面(Ubuntu等)
命令行
# 安装客户端sudo apt-get install -y cifs-utils# 挂载sudo mount -t cifs //192.168.x.x/娱乐盘 /mnt/remote \ -o guest,uid=1000
需要密码怎么办?
如果不想开放匿名访问,可以设置用户名密码:
修改配置
[私有盘]path = /mnt/backup guest ok = no valid users = 你的用户名 write list = 你的用户名 create mask = 0777 directory mask= 0777
添加Samba用户
# 添加用户(需要是系统用户)sudo smbpasswd -a 你的用户名# 输入两次密码# 启用用户sudo smbpasswd -e 你的用户名
Windows访问时输入密码
连接时会弹出登录框,输入刚才设置的账号密码即可。
安全问题:端口扫描怎么办?
很多人担心:445端口暴露在网段里,会不会被扫描?
答案是:会。
但有两种应对方案:
方案一:防火墙限制IP(推荐)
不改端口,只限制谁能访问:
# 删除默认的Samba规则sudo ufw delete allow samba# 只允许局域网访问sudo ufw allow from 192.168.x.0/24 to any port 445# 只允许Tailscale网段访问sudo ufw allow from 100.64.0.0/10 to any port 445
这样,非授权IP根本扫不到你的445端口。
方案二:修改端口(不推荐)
[global] smb ports = 1445011390
但有个问题:Windows资源管理器只会尝试445端口,改了之后无法直接访问,需要用PowerShell脚本或第三方工具。
结论:除非有特殊需求,否则用方案一更省心。
Tailscale远程访问
如果你的服务器在外网,或者你想在公司访问家里的文件,Tailscale是最佳选择。
Tailscale下用SMB还是WebDAV?
实测结果:WebDAV更稳定。
原因:
- SMB需要多个端口,Tailscale可能拦截部分端口
配置Alist的WebDAV
Alist默认启用WebDAV,无需额外配置:
http://100.x.x.x:5252/dav/
Windows挂载WebDAV
此电脑 → 映射网络驱动器文件夹:https://100.x.x.x:5252/dav/
Mac挂载WebDAV
Finder → 前往 → 连接服务器https://100.x.x.x:5252/dav/
速度对比
结论:
完整配置示例
[global]workgroup = WORKGROUP server string = My Server dns proxy = no log file = /var/log/samba/log.%m max log size = 1000# 公开共享[娱乐盘]path = /mnt/databrowseable = yes read only = no guest ok = yes create mask = 0777 directory mask = 0777[工作盘]path = /mnt/workbrowseable = yes read only = no guest ok = yes create mask = 0777 directory mask = 0777[私有盘]path = /mnt/privatebrowseable = yes read only = no guest ok = no valid users = youruser write list = youruser
create mask = 0777
directory mask= 0777
常见问题
Q1:连接被拒绝
# 检查Samba状态sudo systemctl status smbd# 检查防火墙sudo ufw statussudo ufw allow samba
Q2:找不到共享
# 查看共享列表smbclient -L //服务器IP -N
Q3:NTFS磁盘权限问题
# 挂载时指定权限sudo mount -t ntfs3 -o uid=1000,gid=1000,permissions /dev/sdX /mnt/data
Q4:忘记密码
# 修改Samba用户密码sudo smbpasswd 你的用户名
总结
一句话:局域网共享,SMB 通吃所有平台,最简单最快。Tailscale远程访问,用 WebDAV 更稳定。
更多内容请关注公众号。