centos7下nfs服务器搭建及客户端挂载&防火墙使用固定端口开放

541 阅读4分钟

nfs简介

NFS就是Network File System的缩写,它的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。

比如我们在192.168.56.101上建立了一个目录/home/nfs/data/,在这个目录下的文件,在192.168.56.102机器上能通过nfs挂载磁盘的方式挂载到192.168.56.102的某个目录,比如/home/nfssharedata/,这样在192.168.56.102上操作/home/nfssharedata/目录就和在192.168.56.101上操作/home/nfs/data/的效果是一样的,达到了文件共享与维护的目的。

一.环境准备

192.168.56.101:服务器 192.168.56.102:客户端

二.搭建NFS服务器

在服务器192.168.56.101进行nfs的搭建,步骤如下:

#服务器节点安装nfs(192.168.56.101)
yum -y install nfs-utils

#创建nfs共享数据目录
mkdir -p /home/nfs/data/

#修改权限(可选)
chmod -R 777 /home/nfs/data/

#编辑export文件,并设置共享目录/home/nfs/data/,任意ip可以访问和读写,root登录时拥有root权限,如果需要设置固定的ip才能访问,看后面的补充说明部分。
vi /etc/exports
/home/nfs/data/ *(rw,no_root_squash,sync)

#配置生效
exportfs -r

#查看生效
exportfs

#启动rpcbind、nfs服务
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs

#查看 RPC 服务的注册状况
rpcinfo -p localhost

#showmount测试
showmount -e 192.168.56.101

补充说明:/home/nfs/data/ *(rw,no_root_squash,sync)这一行的*表示提供给任意ip的客户端能访问,如果更精细的权限控制,可以改成具体的ip,限制只有在ip中的客户端机器才能挂载,比如:

#编辑export文件,并设置共享目录/home/nfs/data/,指定ip为192.168.56.102才能访问和读写,root登录时拥有root权限
vi /etc/exports
/home/nfs/data/ 192.168.56.102(rw,no_root_squash,sync)

#如果需要多个ip都支持,复制多行配置即可,权限也可以配置成不同,比如102可读写rw,103只读ro。
vi /etc/exports
/home/nfs/data/ 192.168.56.102(rw,no_root_squash,sync)
/home/nfs/data/ 192.168.56.103(ro,no_root_squash,sync)

三.客户端nfs安装配置

先在客户端192.168.56.102进行nfs的安装

yum -y install nfs-utils

接着在客户端机器新建一个用于挂载的目录,比如(两种方式,视你的情况采用)

#此目录用于挂载服务器上共享出来的目录,与共享目录/home/nfs/data/相同也可以不同,我建了不同的
mkdir -p /home/nfssharedata/

然后进行共享目录挂载如下:(两种方式,视你的情况采用)

######第1种:临时挂载(系统重启后会消失)######
mount -t nfs 192.168.56.101:/home/nfs/data/  /home/nfssharedata/

######第2种:永久挂载(系统重启后将自动挂载)######
####注:如果只是改了/etc/fstab需要重启系统才会挂载。
####因此线上正式环境可以考虑临时和正式方式一起执行,达到第一次配置不用重启,系统重启能自动挂载的效果。
##修改/etc/fstab文件
vi /etc/fstab
192.168.56.101:/home/nfs/data/  /home/nfssharedata/  nfs  defaults,rw   0 0

如果不想挂载了,执行umount即可

umount /home/nfssharedata/

四.nfs服务端使用固定端口并启用防火墙开放

nfs通信是使用udp或tcp协议进行的,上面的nfs环境是建立在nfs服务器防火墙关闭的情况下的搭建,即需要已经放通相关的端口,一般线上环境要求较高,会开启防火墙并授权一些策略来控制访问,由于nfs默认除了用111(portmapper使用,客户端向服务器发出NFS文件存取功能的询问请求)和2049(nfs使用)端口是固定的,其他的几个端口是随机的,因此需要在nfs服务器(192.168.56.101)上配置成固定的端口,再通过防火墙进行开放,步骤如下:

  1. 修改配置文件 vi /etc/sysconfig/nfs
vi /etc/sysconfig/nfs,在最后加上以下配置
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
  1. 重启服务
systemctl restart rpcbind
systemctl restart nfs
  1. 重新查看端口情况 rpcinfo -p localhost,可看到端口已经使用固定的端口 在这里插入图片描述
  2. 接下来进行相关的防火墙开放,授权在客户端机器192.168.56.102上能访问
#nfs之防火墙
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="111" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="111" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="2049" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="2049" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="tcp" port="30001-30004" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.56.102" port protocol="udp" port="30001-30004" accept"
firewall-cmd --reload
firewall-cmd --list-all