nfs用于linux之间共享文件目录,客户端可以将nfs服务器上共享的目录挂载到客户端本地,当作一个磁盘分区。


nfs在centos7.0中默认版本为3,但是在centos7.0中已经添加了了nfs4,nfs4版本中新增加了更安全的身份验证支持以及kerberos加密,由于默认还是使用版本3,所以如果客户端希望使用kerberos加密,则需要在服务器端和客户端同时进行配置


服务器端:在/etc/sysconfig/nfs内声明一下nfs版本,RPCNFSDARGS="-V 4.2"


注意:nfs的主要配置文件是/etc/exports,辅助配置文件是/etc/sysconfig/nfs


客户端:在挂载时声明版本:nfs server:/nfs2   /mnt/nfs2       nfs     defaults,v4.2,sec=krb5p   0   0


 


不加密的nfs服务器配置:


1.安装nfs-utils


2.在/etc/exports文件内进行共享文件路径、权限、允许访问网段等参数配置,格式如下:


共享目录路径     允许访问的网段(权限参数)


/nfs1   172.25.0.0/24(ro,sync)   #表示/nfs1可以由172.25.0.0/24网段内主机访问,read only,sync


★关于权限参数的下关系说明(如:ro,rw,sync等)


ro:该主机对该共享目录有只读权限



rw:该主机对该共享目录有读写权限



root_squash:客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户



no_root_squash:客户机用root访问该共享文件夹时,不映射root用户



all_squash:客户机上的任何用户访问该共享目录时都映射成匿名用户



anonuid:将客户机上的用户映射成指定的本地用户ID的用户



anongid:将客户机上的用户映射成属于指定的本地用户组ID



sync:资料同步写入到内存与硬盘中



async:资料会先暂存于内存中,而非直接写入硬盘



insecure:允许从这台机器过来的非授权访问


3.给nfs所需要的服务在防火墙放行


firewall-cmd --permanent --add-server=nfs



firewall-cmd --permanent --add-server=mountd



firewall-cmd --permanent --add-server=rpc-bind


简单说一下rpc,rpc服务的主要功能就是指定每个nfs功能所对应的端口号,并通知给客户端,让客户端连接正确的端口号,因为nfs启动时端口号不固定,nfs服务启动时会随机选择一个可用的端口,然后向rpc服务报告,说明nfs服务现在所占用的端口,所以,rpc必须在nfs启动前启动,没有rpc,nfs服务无法正常使用。


 


不加密nfs客户端配置方式:


1.安装nfs-utils


2.防火墙放行相关服务


3.本地fstab中挂载共享目录,如下:


server0:/nfs1   /mnt/nfs1      nfs    defaults       0 0


注意:


之前学习时,在挂载samba服务时的方式为://samba server/smb1,


而在挂载nfs时为:nfs server:/nfs1,不要搞错。


4.mount -a


5.df查看挂载是否成功。


 


使用kerberos加密的nfs服务器配置方式:


1.安装nfs-utils


2./etc/sysconfig/nfs中声明使用nfs4以上版本:RPCNFSDARGS="-V 4.2"


3.下载用于认证的keytab,并将密钥存入/etc下,如下:


wget http:///pub/keytabs/server.keytab -O(字母大写O) /etc/krb5.keytab


4.在/etc/exports中进行共享目录的设置,需要声明使用的认证方式,如下:


/nfs2  172.25.0.0/24(rw,sync,sec=krb5p)


5.防火墙进行放行


6.重启服务,注意,此处需要重启 nfs-server.service和nfs-secure-server.service两个服务


 


使用kerberos加密的nfs客户端配置方式:


1.安装nfs-utils


2.下载和服务器匹配的密钥认证,如下:


wget http:///pub/keytabs/client.keytab -O(字母大写O) /etc/krb5.keytab


3.进行挂载,需要声明使用的kerberos类型以及nfs版本


server0:/nfs2   /mnt/nfs2      nfs    defaults,v4.2,sec=krb5p 0 0   #注意v4.2和sec=krb5p这两个选项


4.mount -a


5.df


 


稍微说一下krb5p这个东西,nfs加密的方式,一共有三种方式krb5,krb5i,krb5p: krb5 基于Kerberos票据的认证;krb5i 挂载时校验数据完整性;krb5p通过kerberos认证,并且对数据进行加密。正常的下载的kerberos密钥均包含这三种方式,自己选择即可。


kerberos的作用其实就是利用客户端和服务器两端对称的密钥,在客户端发送给服务器请求时,用客户端这面的证书密钥进行加密,然后到了服务器端,用对称的证书密钥解析后,得到服务器的验证,证明确实是客户端发过来的,并且在传递过程中没有被改动过,这就是kerberos的作用。