FreeBSD上托管的NFS V4,包括客户端和服务器,安装正常,但文件系统没有读取或写入,报告输入/输出错误

时间:2016-05-09 11:37:45

标签: kerberos freebsd nfs

我已经成功安装并使用了具有Solaris服务器和FreeBSD客户端的NFS版本4。 问题是在版本4上安装了FreeBSD服务器和FreeBSD客户端。版本3运行良好。

我从FreeBSD第4.5版开始使用FreeBSD NFS服务器(然后是IBM AiX客户端)。

问题: 安装正常,但kerberos缓存中没有主体出现,并且当尝试读取或写入已安装的文件系统时,我收到错误:输入/输出错误

nfs / server-fqdn @ REALM和nfs / client-fqdn @ REALM主体在kerberos服务器上创建,并在两侧正确存储在keytab文件中。

我使用上面的方法从KDC发出tgt票据,用于根目录的kerberos缓存。

我正确启动服务: 文件/etc/rc.conf

rpcbind_enable="YES"
gssd_enable="YES"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
mountd_enable="YES"
nfsuserd_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"

然后我开始服务 在客户端:rpcbind,gssd,nfsuserd, 在服务器上面都有导出文件:

V4: /marble/nfs   -sec=krb5:krb5i:krb5p -network 10.20.30.0 -mask 255.255.255.0

我登上:

# mount_nfs -o nfsv4 servername:/ /my/mounted/nfs
# 
# mkdir /my/mounted/nfs/e
# mkdir: /my/mounted/nfs/e: Input/output error
#

即使是ls命令也有相同的结果。 klist不会在root的缓存或任何其他缓存中显示任何新的主体。 我喜欢版本3的惊人性能,但需要NFS4的本地锁定文件功能。 第二个原因是安全。我需要kerberised RPC调用(-sec = krbp)。

如果有人使用FreeBSD服务器为NFS版本4做到了这一点,请对这个问题给出反馈,如果你这样做,我会很高兴。

1 个答案:

答案 0 :(得分:0)

提供代码示例的评论并不好。以下是适用于我的FreeBSD客户端和FreeBSD服务器的设置。我没有使用Kerberos但是如果你使用这个最小配置,那么你可以在之后添加Kerberos(我相信)。

服务器rc.conf

nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
mountd_flags="-r"

服务器/etc/exports

/parent/path1 -mapall=1001:1001 192.168.2.200
/parent/path2 -mapall=1001:1001 192.168.2.200
... (more shares)
V4: /parent/ -sec=sys 192.168.2.200

客户rc.conf

nfs_client_enable="YES"
nfs_client_flags="-n 4"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"

客户fstab

192.168.2.100:/path1/  /mnt/path1/  nfs rw,bg,late,failok,nfsv4  0 0
192.168.2.100:/path2/  /mnt/path2/  nfs rw,bg,late,failok,nfsv4  0 0
... (more shares)

如您所见,客户端尝试仅安装服务器上/parent/行中指定的V4路径之后的内容。 192.168.2.100是服务器IP,192.168.2.200是客户端IP。此设置仅允许一个客户端连接到服务器。

我希望我没有错过任何事情。顺便说一句,请在SuperUser或ServerFault而不是StackOverflow上提出这样的问题。我很惊讶这个问题因为那个问题还没有结束;)