centos7 搭建nfs服务器 实现基于文件的共享存储
环境:服务器server0和客户端desktop0属于example.com域。 #看懂此文首先需要清楚 ldap和Kerberos工作原理
首先二者都需要安装所需的软件:authconfig-gtk、sssd、krb5-workstation(需要Kerberos协议提供网络安全认证)
yum -y intall authconfig-gtk sssd krb5-workstation
然后二者都配置 ldap, 输入authconfig-gtk,配置如图:
确认rpc服务(提供数据传输服务,端口号111,nfs依赖于此) systemctl status rpcbind.service
nfs相关软件包:nfs-utils,配置文件路径:/etc/exports(第一列:共享的目录、第二列:允许访问的主机)(此文件设置了客户端访问服务端的权限)
举例,vim /etc/exports
/public 172.25.0.0/24(rw,sync) 192.168.0.0/24(ro,async)
服务端查看rpc注册情况 rpminfo -P localhost,开启nfs服务后再查看rpm注册情况
systemctl enable nfs-server
systemctl restart nfs-server
showmount -e server0.example.com #查看服务器共享了哪些目录
firewall-cmd --permanent --add-service=rpc.bind #防火墙开启rpc服务
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-port=20048/tcp
firewall-cmd --permanent --add-port=20048/udp
firewall-cmd --reload
showmount -e server0.example.com #再次查看
exportfs -rv #刷新nfs配置文件,使修改生效。需要时执行此命令。
cat /var/lib/nfs/etab #此文件可看到nfs文件目录的访问权限 #其中sec=sys字段(通过系统本地用户UID的权限验证,C/S两端UID需要一致。sec=krb5,或者krb5i,krb5p。使用kerberos验证用户身份更安全)
举例:创建共享目录/share,使用krb5p验证身份。
vim /etc/exports 添加一行
/share 172.25.0.0/24(rw,sec=krb5p)
服务端需要有krb5文件来验证客户端身份。此文件下载到这里 :wget http://classroom.example.com/pub/keytabs/server0.keytab -O /etc/krb5.keytab
/etc/krb5.keytab #此文件是客户端发给服务端,服务端用来解密的文件,以此验证客户端合法性
ktutil 命令可查看此文件内容
然后启动加密服务 ,注意启动的是服务端的加密服务 nfs-secure-server
systemctl enable nfs-secure-server
systemctl restart nfs-secure-server
exportfs -rv #使配置生效
客户端挂载:
mount server0.example.com:/public /mnt/pub
或者写入fstab文件
server0.example.com:/public /mnt/pub nfs defaults 0 0
server0.example.com:/share /mnt/share nfs defaults,sec=krb5p 0 0 #注意加密方式要和服务端保持一致 cat /etc/exports
wget http://classroom.example.com/pub/keytabs/server0.keytab -O /etc/krb5.keytab #客户端也需要有keytab文件
systemctl enable nfs-secure
systemctl restart nfs-secure #客户端也要启用加密服务,注意不带server
创建好本地挂载点,mount -a ,df -Th 测试
测试时切换到ldap用户,可用klist命令查看是否有票据。kdestroy可销毁票据。kinit 可获取票据
showmount -e server.example.com #查看服务端共享的内容