NFS的搭建以及配置

目录

目录

NFS服务简介

NFS挂载原理:

RPC与NFS通讯原理:

NFS客户端和NFS服务器通讯过程:

NFS 服务安装

配置NFS服务端,客户端无需配置,只需要挂载

服务端启动

客户端配置

配置nfs永久挂载

NFS带来的安全问题

修改hosts.allow,只允许挂载的服务器使用mountd服务

修改hosts.deny,禁止除挂载外的其他所有主机使用mountd服务

修改完成后,使用其他ip进行访问,发现已经访问不了了


参考:https://blog.csdn.net/aixiaoyang168/article/details/83782336?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control

NFS服务器搭建与配置_曹世宏的博客-CSDN博客_nfs服务

NFS服务简介

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

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

NFS一般用来存储共享视频,图片等静态数据。

NFS挂载原理:

在这里插入图片描述

RPC与NFS通讯原理:

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

那么RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

注意:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

NFS客户端和NFS服务器通讯过程:

  1. 首先服务器端启动RPC服务,并开启111端口
  2. 服务器端启动NFS服务,并向RPC注册端口信息
  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

NFS 服务安装

服务端客户端
192.168.171.11192.168.171.10

通过上边简要的介绍,我们知道 NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils,客户端只需要安装 nfs-utils 即可。

首先,确认下服务端系统是否已安装 NFS。

$ rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-44.el7.x86_64
nfs-utils-1.3.0-0.54.el7.x86_64

注意:这里我已经安装完毕,若为空,则说明未安装,执行安装命令。

# 服务端
$ yum install -y nfs-utils rpcbind
# 客户端
$ yum install -y nfs-utils

配置NFS服务端,客户端无需配置,只需要挂载

在服务端创建一个共享目录 /home/share ,并设置权限为777。

$ mkdir -p /home/share
$ chmod 777 /data/share

修改 NFS 配置文件 /etc/exports

这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。

vi /etc/exports

# 设置ip段内的主机可以挂载
/home/share 192.168.171.10/24(rw,sync,no_root_squash)

# 设置只允许单台主机进行挂载
/home/share 192.168.171.10(rw,sync,no_root_squash)

说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将 /home/share 文件目录设置为允许 IP 为该 192.168.171.10/24 的客户端挂载,也可以设置ip段,例如192.168.171.0/24,可以设置 IP 区间更大或者设置为 * 即允许所有客户端挂载,例如:/home *(ro,sync,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。

服务端启动

先启动rpc,再启动nfs

# systemctl start rpcbind
# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  47708  status
    100024    1   tcp  27601  status

注意:此时我们还没有启动 NFS 服务,只监听了 111 端口,接着我们来启动 NFS 服务,再来看下注册的端口列表。

# systemctl start nfs
# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  47708  status
    100024    1   tcp  27601  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  28298  nlockmgr
    100021    3   udp  28298  nlockmgr
    100021    4   udp  28298  nlockmgr
    100021    1   tcp  11195  nlockmgr
    100021    3   tcp  11195  nlockmgr
    100021    4   tcp  11195  nlockmgr

我们发现,启动了 NFS 服务后,rpc 注册的端口列表明显增多。OK 现在服务端都启动起来了,在服务端看下是否正确加载了设置的 /etc/exports 配置。

# showmount -e localhost
Export list for localhost:
/home/share 192.168.171.10/24

中途修改nfs配置文件后,重新加载的指令为:exportfs -arv,或者systemctl reload nfs,不用重新启动。

客户端配置

客户端只需要挂载上服务端的共享目录即可:

首先,我们可以在客户端查看下 NFS 服务端 (服务端 IP 为:192.168.171.11) 设置可共享的目录信息。

# showmount -e 192.168.171.11
Export list for 192.168.171.11:
/home/share 192.168.171.10/24

然后,在客户端创建挂在目录 /share

$ mkdir -p /share

最后,挂载远端目录到本地 /share 目录。

$ mount 192.168.171.11:/home/share /share
$ df -h | grep 192.168.171.11
Filesystem                  Size  Used  Avail Use% Mounted on
192.168.171.11:/data/share   200G   10G   190G   5%  /share

可以看到,可以正确将远端 NFS 目录挂载到本地。注意:挂载点 /share 目录必须已经存在,而且目录中没有文件或子目录。

最后再进行测试一下就可,服务端跟客户端增删改查来一遍,因为服务端配置的权限是可读写,所以增删改查都可以进行测试。

最后,如果客户端要卸载 NFS 挂载的话,使用如下命令即可。

NFS挂载原理:

RPC与NFS通讯原理:

NFS客户端和NFS服务器通讯过程:

NFS 服务安装

配置NFS服务端,客户端无需配置,只需要挂载

服务端启动

客户端配置

NFS带来的安全问题

修改hosts.allow,只允许挂载的服务器使用mountd服务

修改hosts.deny,禁止除挂载外的其他所有主机使用mountd服务

修改完成后,使用其他ip进行访问,发现已经访问不了了


$ umount /share

配置nfs永久挂载

上面的指令只适用于临时挂载,如果重启客户端,那么挂载配置将会失效,失效后,就需要手动将重新进行配置,如果发现不及时,就需要先手动将新产生的数据导入到nfs服务端,再进行配置,这样来说比较麻烦,下面介绍一下永久挂载nfs的方法----重启有效。

与硬盘挂载相同,可以通过在/etc/fstab中添加NFS挂载信息来持久化挂载:

vi /etc/fstab     在文件的最后按照自己服务器的实际情况进行添加

# device    mountpoint         fs-type     options      dump   fsckorder
188.2.137.30:/data/syn    /opt/share_nfs   nfs     rw      0 0

编辑完成后,重新加载配置文件

mount -a

如果想要取消挂载点,直接使用如下指令,取消挂载点时如果只更改配置文件中的挂载点名称,重新加载后发现,之前的挂载点还在,而且使用unmount /opt/share_nfs进行卸除时,会提示忙碌,不能进行卸载,这时候先使用umount -a,再执行unmount /opt/share_nfs命令即可卸载

NFS带来的安全问题

showmount -e信息泄露如何解决?

最近单位信息系统做安全等保,因为服务器使用了nfs文件共享,而导致在等保扫描中发现了一个高危漏洞,通过showmount -e可以展示nfs挂载列表,然后建议整改方法是限制使用showmount -e展示列表的主机,也就是说在使用nfs的客户端可以通过showmount -e展示可挂载的主机列表,其他主机均不可以使用showmount -e展示可挂载列表。

问题分析:设置NFS挂载的客户端以后,无论是设置的单个ip或者设置的ip段,只要在一个局域网可以连通的所有机器上,通过showmount -e [nfs server ip] 命令都可获取到nfs挂载列表,这就造成了安全隐患,我们可以通过设置/etc/hosts.allow/etc/hosts.deny这两个文件,对mountd服务进行限制来解决。

/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。

1. 当文件 /etc/hosts.allow 存在时,则先以此文件内之设定为准;
2. 而在 /etc/hosts.allow 没有规定到的事项,将在 /etc/hosts.deny 当中继续设定!
也就是说, /etc/hosts.allow 的设定优先于 /etc/hosts.deny 

允许进入的写在 /etc/hosts.allow 当中;
       不许进入的则写在 /etc/hosts.deny 当中。

修改hosts.allow,只允许挂载的服务器使用mountd服务

该文件修改保存后即刻生效,无需重启任何服务

vi /etc/hosts.allow

# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
# 将放开的ip依次进行添加即可
mountd:192.168.171.10
mountd:192.168.171.12
mountd:192.168.171.13

修改hosts.deny,禁止除挂载外的其他所有主机使用mountd服务

该文件修改保存后即刻生效,无需重启任何服务

vi /etc/hosts.deny

# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
mountd:all

修改完成后,使用其他ip进行访问,发现已经访问不了了

# showmount -e 192.168.171.11
rpc mount export: RPC: Authentication error; why = Failed (unspecified error)

权限成功设置!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值