一、部署

1.1 安装服务端

centos安装
yum install nfs-server prcbind

ubuntu安装
apt install nfs-kernel-server rpcbind

启动

systemctl enable --now nfs-server rpcbind
systemctl enable --now nfs-kernel-server rpcbind

1.2 安装客户端

服务器与客户端都安装客户端工具

yum install nfs-utils
#centos安装

apt install nfs-common
#ubuntu安装

1.2 配置文件

vim /etc/exports

/data/nfs-data *
#所有人可访问,权限留空默认。
#默认权限只读(ro)

/data/nfs-data *(ro)
#所有人可访问,读权限。

/data/nfs-data *(rw)
#所有人可访问,读写权限。

/data/nfs-data 192.168.*.*(rw,sync,no_root_squash)
#只允许IP为192.168.*.*的主机访问
#rw 可读写
#sync 同步写入到硬盘中,文件不易丢失。默认先写入内存,再写入磁盘,速度快。
#no_root_squash 不对root用户进行权限压缩。默认所有账户都压缩为nobody账号。

1.3 重载配置文件

systemctl restart nfs-server
#重启服务使配置生效。

exportfs -r
#重新加载nfs配置,不影响现有服务。

exportfs -v
#列出所有共享信息。

1.4 客户端操作

1.4.1 查看共享服务
showmount -e 10.0.0.0
#列出服务器端共享 

#输出如下
Export list for 10.0.0.0:
/data/nfs-data *
#还会显示
1.4.2 挂载nfs
mount 10.0.0.0:/data/nfs-data /data
#mount nfs源 本地挂载点 

二、配置服务

2.1 权限问题

#映射客户端用户到服务器中普通用户
#默认映射账号为nobody(id:65534) 因此存在权限不足问题
#文件存在默认权限,root_squash,root用户压榨。
#普通用户不压榨为nobody,而映射为相同id的用户。
exportfs -v
#查看共享nfs目录信息,权限。

chmod 777 /data/nfs-date
#给other用户设置目录权限

chown -R nobody:nobody /data/nfs-data
#将文件属组归于nobody用户

2.2 权限设置

/data/nfs-data *(rw,all_squash,annouid=6000,annogid=6000)
#设置全部用户压榨,指定压榨为6000用户及组。

/data/nfs-data *(rw) 10.0.0.7(ro)
#如此设置所有人可读写,10.0.0.7只读。

2.3 自动挂载

vim  /etc/fstab

10.0.0.8:/data/nfs-data /data nfs defaults,_netdev,nofail 0 0
#_netdev 无网络时不挂载
#nofail 挂载失败不会导致系统无法启动

2.4 暂停共享

exportfs -r
#刷新配置

exportfs -au
#暂停共享

exportfs -a
#恢复共享

2.5 使用独立的配置文件

/etc/exports.d/*.exports
#后缀名必须为*.exports

三、nfs安全配置

禁止查询挂载信息

3.1 通过hosts.deny和hosts.allow配置

先配置拒绝mountd服务的流量。

vim /etc/hosts.deny
#添加配置
mountd: ALL

再配置允许的主机IP。

vim /etc/hosts.allow
#添加配置
mountd: 10.10.10.10 20.20.20.20 30.30.30.30

3.2 使用iptables进行限制

有的系统例如麒麟 v10 hosts.deny 已经无效,可通过iptables进行配置。

#添加禁止策略
sudo iptables -A INPUT -p tcp --dport 111 -j REJECT
sudo iptables -A INPUT -p udp --dport 111 -j REJECT
#添加允许策略
sudo iptables -I INPUT -p tcp -s 192.168.100.66 --dport 111 -j ACCEPT
sudo iptables -I INPUT -p udp -s 192.168.100.66 --dport 111 -j ACCEPT
#永久保存配置
service iptables save

四、维护指南

4.1 NFS挂载卡住

nfs-server如果网络故障或重启,nfs客户端会在执行df-h,或ls时卡住。

umount -lf /mnt
#强制卸载nfs

执行清强制卸载后可恢复响应。

五、其他信息

5.1 端口号

nfs使用tcp和udp2049、111端口
(如果是跨网段的NFS共享,除了开通这2个端口之外,还需要将mountd、rpcbind的端口进行指定(固定),然后再开通相应的网络策略。)
Snipaste_2025-07-29_15-51-15.png
使用firewalld进行配置

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

标签: Storge

添加新评论