【我的Linux,我做主!】常用共享存储--NFS服务配置应用与实战-创新互联
目录:
(一)关于NFS防火墙的设置
(二)关于NFS权限的设置
(三)基于kerberos的NFS
(一)关于NFS防火墙的设置
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS的优势如下:
1.节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2.用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3.一些存储设备如软驱、CDROM和ZIP(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
假设我们在服务器上有一个目录/xx需要共享出去,我们是使用nfs服务共享出的,因为nfs服务使用的是2049端口,所以在防火墙需要将2049端口开放出去。同时nfs服务是基于rpc(远程进程调用)服务调用的,rpc服务是服务在111端口,当nfs服务重启时将会在rpc服务这里注册,所以如果rpc服务没有正常启动,那么nfs服务也没有办法正常访问,即我们需要在防火墙也开放111端口。在nfs系统中我们会遇到多个客户端挂载,为了避免多个用户同时挂载产生问题,我们需要使用一个锁来管理这种挂载问题,所以我们还需要启动mountd服务,并在防火墙开放对应端口。
(1.1)首先在vms001主机上将nfs服务、rpc-bind服务、mountd服务在防火墙开启并写入持久态中。
(1.2)我们使用systemctl list-unit-files可以查看到当前启动的所有服务,可以看到rpcbind.service服务已经启动了,并且是static状态。
(二)关于NFS权限的设置
(2.1)一般nfs服务的配置文件是在/etc/exports文件或者/etc/exports.d/*.exports文件中配置的,且文件的格式如下所示。
(2.2)我们在vms001主机上创建一个/data目录,并将/data目录共享出去。
(2.3)接着创建一个/data目录,并且将exports文件中的设置生效。
(2.4)接着在vms002客户端主机上测试vms001主机提供的nfs服务是否正常。在vms002主机上创建一个/nfsdata目录,并将/nfsdata目录挂载到vms001主机共享的data目录下。
(2.5)此时我们在vms002主机上尝试使用root身份创建一个文件aaa.txt,发现系统提示权限不够。这是由于在vms001主机上/var/lib/nfs/etab文件中定义了root_squash参数,即压缩root用户的权限,使root用户的权限同anonuid=65534一致。
(2.6)由于vms001主机上的/data目录的other权限是不可写的,所以给/data目录的o加上w的权限。
(2.7)如果我们想要以root的身份写入信息,并且不压缩root的权限,则可以在/etc/exports文件中进行设置。
(2.8)此时从vms002主机上向/nfsdata目录中写文件,发现可以正常的写入文件,并且是以root身份写入的。
(2.9)由于在/var/lib/nfs/etab文件中默认设置的参数是no_all_squash,如果需要对所有用户都启用压缩权限,则可以在/etc/exports文件中设置all_squash即可。
(2.10)设置192.168.26.102主机可读可写,且掩码为32;设置192.168.26.0网段中的主机都只有只读的权限。
(2.11)在vms002主机的/nfsdata目录下创建一个test102host.txt文件,发现可以正常的创建出对应的文件。
(2.12)经验总结,故障排错:接着我们在一台IP地址为192.168.26.200的主机上测试,进入到/nfsdata目录后,尝试创建test200host.txt文件,发现并不能创建成功。
注意:此处我们是通过修改vms002主机的IP地址为192.168.26.200实现其他主机的效果。
(2.13)在vms002主机上将IP地址重新修改为102后,此时就可以正常的创建文件了。
(三)基于kerberos的NFS
Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术执行认证服务的。Kerberos又指麻省理工学院为这个协议开发的一套计算机网络安全系统。系统设计上采用客户端/服务器结构与DES加密技术,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听,防止replay破坏、保护数据完整性等场合,是一种应用对称密钥体系进行密钥管理的系统。Kerberos的扩展产品也使公开密钥方法进行认证。
麻省理工研发了kerberos协议来保护ProjectAthena提供的网络服务器。这个协议以希腊神话中的人物kerberos命名,他在希腊神话中是Hades的一条凶猛的三头保卫神犬。
在我们的环境中有一个kerberos服务器,这个服务器我们称之为KDC即密钥分发中心。在我们的环境中有很多的主体,包括机器、service、user、group。现在我们有一台服务器server,还有一个客户端client,如果我们需要基于kerberos来进行保护时,此时KDC会为每一个主体分配一个ticket,很多的信息都是保存在/etc/krb5.keytab文件中的,客户端和服务器都有自己独立的keytab文件。当客户端访问服务器的时候,客户端会出示自己的ticket,此时服务器会使用自己的ticket票据对客户端的ticket合法性做验证,这就是我们整个kerberos的工作流程。在我们的kerberos环境里对时间同步的要求是非常高的,所有机器的时间必须要保持一致,所以我们通过配置NTP服务器可以实现需求。
(3.1)我们在vms001主机上使用install.sh脚本创建对应的三台KVM虚拟机,其中host.img(192.168.122.10)对应就是kerberos服务器,system1.img(192.168.122.100)对应的是nfs服务器,system2.img(192.168.122.200)对应的是普通的客户端。
(3.2)接着从vms001主机上登录到system1主机和system2主机上。
(3.3)此时host主机除了是一台kerberos服务器外,还是一台LDAP域服务器。
(3.4)首先我们在system1主机上创建普通的nfs服务器,并将防火墙相关的端口打开。
(3.5)将system2主机上的/aa目录挂载到system1主机上由nfs共享的/aa目录上,是可以正常的实现挂载的。
(3.6)接着我们使用基于kerberos服务搭建nfs服务器。我们需要在system1主机和system2主机上都要向host主机申请下载ticket。
(3.7)我们在system1主机上创建一个基于kerberos服务的目录/kerberosDir,并且编辑/etc/exports文件。
(3.8)由于SELinux是开启的状态,所以接着修改/kerberosDir的上下文信息。
(3.9)接着在/etc/sysconfig/nfs文件中设置强制使用nfs4版本。
(3.10)在system1主机上设置/kerberosDir目录的属主为ldapuser1用户,并将nfs-server服务和nfs-secure-server服务重启一下。
(3.11)接着在system2主机上的/etc/fstab 文件中进行编辑,system2主机上的/aa目录直接挂在到system1主机上共享的/aa目录即可。我们在system2主机上创建/kerberosDir目录,但是system2主机上的/kerberosDir目录在挂载到system1主机上/kerberosDir目录时,注意需要写长主机名挂载,并且加上v4.2和sec=krb5p参数。
# mkdir /kerberosDir
(3.12)此时发现基于kerberos服务的system2主机创建的/kerberosDir目录已经正常的挂载到了system1主机的/kerberosDir目录了。
—————— 本文至此结束,感谢阅读 ——————
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章名称:【我的Linux,我做主!】常用共享存储--NFS服务配置应用与实战-创新互联
当前网址:http://scyanting.com/article/pocgd.html