运维开发网

NFS-网络文件系统

运维开发网 https://www.qedev.com 2020-10-30 12:42 出处:51CTO 作者:石世林
简述NFS    网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样,通过权限配置可以实现读写,就像本属于自己本地磁盘一样。NFS工作原理:            NFS(Network File System,网络文件系统)是
  • 简述NFS

    网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),

能使使用者访问网络上别处的文件就像在使用自己的计算机一样,通过权限配置可以实现读写,就像本属于自己本地磁盘一样。

  • NFS工作原理:

      NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之一。主要应用在UNIX环境下。最早是由Sun Microsystems开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,广泛应用在FreeBSD、SCO、Solaris等异构操作系统平台,允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享

     NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。服务器程序向其他计算机提供对文件系统的访问,其过程称为输出。NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。文件通常以块为单位进行传输。其大小是8KB(虽然它可能会将操作分成更小尺寸的分片)。NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据

  • C/S架构特性:

  • NFS服务端

command:rpcinfo -p localhost 查看rpc信息列表(包括注册服务)

1丶rpc服务监听端口为111(portmap):

2丶nfs服务启动后montd会在rpc随机注册一个端口

3丶nfs服务监听的端口为2049

  • clien-server远程调用执行过程

1丶client请求远端的rpc服务要求访问文件

2丶接受到客户端的请求后,rpc会返回mountd的端口给客户端

3丶客户端接收到请求后会根据rpc提供的端口去请求mountd

4丶mountd接收到请求会验证请求的客户端来源ip是否在nfs权限允许的范围内

5丶如果在则会提供一个令牌给客户端,客户端根据令牌请求nfsd服务最终完成远程调用执行

  • 完成如下实验测试

1丶部署NFS并通过客户端挂载

2丶固定NFS端口-将通过iptables来验证

  • 实验环境

操作os服务器地址主机名角色
CentOS Linux release 7.4.1708192.168.3.75node75client
CentOS Linux release 7.4.1708192.168.3.76node76server

  • 部署NFS并通过客户端挂载

  • 1. 两台机都执行此操作

1丶关闭防火墙和seLinux

systemctl disable firewalld

systemctl stop firewalld

iptables -t nat -F

iptables -F

sed -i '/^SE.*ing$/[email protected]*[email protected]@g' /etc/seLinux/config

2丶执行完条件允许的话可以reboot一下机器让其生效

  • 2. 服务端76执行

丶检查updates中是否存在软件包

[[email protected] ~]# yum info nfs-utils

NFS-网络文件系统

2丶直接通过yum安装即可

[[email protected] ~]# yum install nfs-utils -y

3丶直接配置共享路径如果路径不存在创建即可

[[email protected] ~]# cat /etc/exports

/opt/nfsshare   192.168.3.75/32(sync,rw,all_squas)

4丶启动nfs

[[email protected] ~]# systemctl start nfs.service

5丶查看rpc注册端口

[[email protected] ~]# rpcinfo -p localhost

NFS-网络文件系统

6.授权客户端可读写,将所有用户压缩成匿名用户访问nfsnobody
[[email protected] ~]# exportfs -r
[[email protected] ~]# chown -R nfsnobody. /opt/nfsshare/

 

  • 客户端75配置

1丶安装nfs参考服务器安装步骤

2丶查看76的共享

[[email protected] ~]# showmount -e 192.168.3.76

Export list for 192.168.3.76:

/opt/nfsshare 192.168.3.75/32

[[email protected] ~]# 

3丶创建挂载点并挂载76的共享存储

[[email protected] ~]# install -d -m 755 /data

[[email protected] ~]# mount -t nfs 192.168.3.76:/opt/nfsshare /data/

NFS-网络文件系统

4丶验证读写提示没权限需要服务端授权

[[email protected] ~]# cd /data/

[[email protected] data]# ls

[[email protected] data]# >123

-bash: 123: Permission denied

[[email protected] data]#

NFS-网络文件系统

5丶参考服务端第6步操作之后再次验证客户端可正常读写

NFS-网络文件系统

  • 固定NFS端口-将通过iptables来验证

服务端76操作

1丶固定端口NFS端口,默认则是从内核分配的随机端口范围中监听

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_local_port_range 

32768   60999

[[email protected] ~]# 

2丶修改/etc/sysconfig/nfs添加如下配置保存退出

RQUOTAD_PORT=30001

LOCKD_TCPPORT=30002

LOCKD_UDPPORT=30002

MOUNTD_PORT=30003

STATD_PORT=30004

3丶nlockmgr有时候不生效可以在/etc/modprobe.d/lockd.conf加上如下两行

options lockd nlm_tcpport=30002

options lockd nlm_udpport=30002

4丶以上操作完成重启nfs,以后重启端口都不会发生改变

NFS-网络文件系统

5丶客户端验证挂载【75服务器操作】

[[email protected] ~]# mount -t nfs node76:/opt/nfsshare/ /data/

NFS-网络文件系统

6丶开启防火墙限制出口和入口

[[email protected] ~]# iptables -t filter -A OUTPUT -d 192.168.3.71/32 -j ACCEPT

[[email protected] ~]# iptables -t filter -A INPUT -d 192.168.3.76 -p tcp --dport 22 -j ACCEPT

上面两条是我本地电脑远程连接开放规则忽略不计即可

[[email protected] ~]# iptables -t filter -A INPUT -s 0.0.0.0/0 -j DROP

[[email protected] ~]# iptables -t filter -A OUTPUT -d 0.0.0.0/0 -j DROP 

7丶验证端口【75客户端验证】明显可以看出端口已经不通了

NFS-网络文件系统

8丶验证挂载此时可以看出已经hang住了挂载不了了【75客户端操作】

NFS-网络文件系统

9丶可以通过tcpdump在抓个包标识位始终是S连接请求没响应,无法建立【75客户端操作】

[[email protected] ~]# tcpdump -i ens33 -vvv -n dst host 192.168.3.76

NFS-网络文件系统

10丶服务端开放相应NFS固定端口

[[email protected] ~]# iptables -t filter -I INPUT 1 -s 192.168.3.75 -m multiport -p tcp --dport 111,2049,30001,30002,30003,30004,30005 -j ACCEPT

[[email protected] ~]# iptables -t filter -I INPUT 1 -s 192.168.3.75 -m multiport -p udp --dport 111,2049,30001,30002,30003,30004,30005 -j ACCEPT

[[email protected] ~]# iptables -t filter -I OUTPUT 1 -d 192.168.3.75 -j ACCEPT

11丶再次挂载

[[email protected] ~]# mount -t nfs node76:/opt/nfsshare/ /data/即成功挂载

NFS-网络文件系统

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号