起因:局域网内有个Nas,但没法安装Docker,不能安装Zerotier;

目的:通过Zerotier创建个虚拟局域网,让Nas被虚拟局域网其它设备使用

做法:

  1. 把Nas挂载到局域网内的Ubuntu设备上
  2. Ubuntu上运行Zerotier并加入到虚拟局域网
  3. Ubuntu上将挂载的目录共享,从而让虚拟局域网内的其它设备访问到这个目录

挂载Nas到ubuntu

目的:把局域网的Nas设备挂载到Ubuntu电脑上

单次挂载

首先在Ubuntu 的 /mnt 目录下新建一个 NAS 挂载目录 nas

1
2
3
sudo mkdir /mnt/nas
# 下面这个命令是为了共享时,允许匿名直接访问,解决权限问题
sudo chmod 777 /mnt/nas

安装 cifs-utils

1
sudo apt-get install cifs-utils

查看用户的 uidgid

1
id root

运行下面的命令,完成单次挂载

1
sudo mount -t cifs -o uid=root,username=admin,password=xxxx,iocharset=utf8,file_mode=0777,dir_mode=0777 //192.168.6.154/public /mnt/nas/ 
  • uid 选择ubuntu系统上普通用户或root
  • username 是nas上的用户名
  • password 是nas上的密码
  • iocharset=utf8 防止有中文路径
  • //192.168.6.154/public 是nas下的public目录
  • /mnt/nas/ 挂载到ubuntu的这个目录下
  • file_mode=0777,dir_mode=0777 权限全开

开机自动挂载

编辑启动挂载文件 fstab

1
sudo vim /etc/fstab

在文件最后追加一行

1
2
3
4
5
6
# 仅给root用户全部权限
//192.168.6.154/public /mnt/nas/ cifs uid=root,username=admin,password=xxx,iocharset=utf8 0 0


# 下面这行是将权限全部开放
//192.168.6.154/public /mnt/nas cifs uid=root,username=admin,password=xxxx,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

在重启之前,你可以手动测试这个配置是否有效。

首先,卸载之前可能已经手动挂载的共享:

1
sudo umount /mnt/nas/

运行以下命令来挂载所有在/etc/fstab中定义的文件系统:

1
sudo mount -a

如果没有错误提示,说明配置成功。

重启系统,并检查CIFS共享是否自动挂载了。

通过上述步骤,每次系统启动时,CIFS共享就会自动挂载到指定的挂载点。如果遇到问题,检查日志文件(如/var/log/syslog)中的错误信息

Ubuntu上运行Zerotier

参考早前的一篇文章

https://blog.lthero.cn/2024/05/25/install-zeroTier/

Ubuntu共享文件

ubuntu共享其目录给局域网内的其它设备

这里注意下,如果使用了下面的方法,就不要在“桌面版”上进行操作了(对某个目录右键,选择局域网共享,设置名字之类的),容易冲突

通过 Samba 共享目录

安装samba

1
sudo apt install samba

编辑 Samba 配置文件:

1
sudo vim /etc/samba/smb.conf

在文件末尾添加以下内容:

1
2
3
4
5
6
7
8
[nas]
path = /mnt/nas
browseable = yes
read only = no
guest ok = yes
force user = nobody
create mask = 0777
directory mask = 0777

重启 Samba 服务

每次修改配置文件后,都需要重启 Samba 服务以使更改生效:

1
sudo systemctl restart smbd

测试 Samba 共享

你现在可以从其他计算机访问共享目录。比如在 Windows 上,通过文件资源管理器访问:

(可以从物理局域网内进行访问,也可以直接使用虚拟ip进行访问)

1
\\your_ubuntu_ip\nas

在 Linux 上,可以使用以下命令挂载共享目录:

1
sudo mount -t cifs //your_ubuntu_ip/nas /path/to/mount -o guest