OpenWrt 搭建 NFS 服务器共享文件使用教程

NFS 全称 Network File System(网络文件系统),是由 SUN 公司研制的 UNIX 系统下的网络文件系统,允许多个用户之间共享文件,并成为分布式文件系统的基础,此协议从 1984 年问世,是一款老牌经典网络文件共享协议。

详细说明见维基百科:https://en.wikipedia.org/wiki/Network_File_System

下面介绍在 OpenWrt 下安装并搭建 NFS 文件服务器。

准备工作

  1. 安装 NFS 服务器界面:luci-i18n-nfs-zh-cn
  2. 已连接可用的存储设备EXT4格式。(路由器格式化硬盘教程

配置共享目录

打开 “NAS”-“NFS服务器”界面,参照示例添加即可,也可直接修改配置文件 /etc/exports

注意:NFS 协议不是“网络共享”,需要专门支持 NFS 协议的客户端才能访问。

常用共享示例

#只读共享 /mnt/sda 目录,允许任何主机访问。
/mnt/sda *(ro,all_squash,insecure,sync,no_subtree_check)

#可写共享  /mnt/sdb/tmp 目录,只允许指定 IP 地址访问。
/mnt/sdb/tmp 192.168.9.100(rw,all_squash,insecure,sync,no_subtree_check)

#只读共享 /mnt/sda 目录,只允许指定的局域网段访问。
/mnt/sda 192.168.9.0/24(ro,all_squash,insecure,sync,no_subtree_check)
#也可写为
/mnt/sda 192.168.9.0/255.255.255.0(ro,all_squash,insecure,sync,no_subtree_check)

#可写共享 /mnt/sdb/ftp 目录,只允许指定的域名地址访问,且将远程访问权限映射为本地 FTP 用户权限。
/mnt/sdb/tmp *.iyzm.net(rw,all_squash,insecure,sync,no_subtree_check,anonuid=55,anongid=55)

#可写共享 /mnt/sdb/test 目录,允许 root 用户权限访问。
/mnt/sdb/test *(rw,no_root_squash,insecure,sync,no_subtree_check)

NFS 配置选项说明

选项用途
ro只读访问。
rw允许读写。
sync同步写入,内存数据实时写入磁盘。
async异步写入,内存数据延时写入磁盘。
wdelay延迟写操作,合并写入操作。(默认启用)
no_wdelay若有写操作则立即执行。
subtree_check若目录是一个子目录,则检查其父目录的权限。(默认启用)
no_subtree_check即使目录是一个子目录,也不检查其父目录的权限。
all_squash将所有访问用户都映射为匿名用户。
no_all_squash将访问用户先与本机用户匹配,匹配失败后再映射为匿名用户。(默认启用)
root_squash将 root 用户映射为匿名用户。(默认启用)
no_root_squash允许 root 用户权限。
anonuid指定匿名用户所使用的本地 UID,(默认 65534)
anongid指定匿名用户所使用的本地 GID,(默认 65534)
secure限制客户端只能从小于 1024 的 TCP 端口连接服务器。(默认启用)
insecure允许客户端从大于 1024 的 TCP 端口连接服务器。

NFS 服务器公网访问

如需对公网提供 NFS 文件服务,需要打开这些防火墙端口 TCP与UDP :111,2049,32777,32778,32779,32780

OpenWrt 或 Linux 挂载 NFS 共享目录

1、需要先安装 nfs-utils

2、使用挂载命令示例:mount -t nfs 192.168.9.1:/mnt/share /mnt/nfs

Windwos 挂载 NFS 共享目录

1、先启用 Windows 的 NFS 客户端功能。

2、使用命令挂载即可。

# 简单挂载
mount \\192.168.9.1\mnt\sda z:

# 追加常用参数进行挂载
mount -o nolock -o mtype=hard -o timeout=60 \\192.168.9.1\mnt\sda z:

# 卸载命令(直接通过界面断开网络驱动器也可以)
umount z:

# 查看挂载点信息
mount

3、如果想进行写入操作,需要添加注册表条目。(NFS 服务器端也要启用 no_root_squash 参数。)

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

添加 DWORD (32位)值,AnonymousGid 和 AnonymousUid

这两个注册表项目用于将默认的匿名用户标识修改为 0,即表示 root 用户。

4、修改 NFS 客户端的“属性”,勾选默认文件权限的写入。

然后重新挂载 NFS 目录就可以写入文件了。

Windows 自带的 NFS 客户端仅支持到 NFSv3 协议,如果想支持 NFSv4 协议,请尝试安装其他软件。

注意:Windows 系统下建议优先使用 SMB 共享服务,Windows 对 NFS 共享的支持并不是太好,效率远不如 SMB 共享。