无法通过 TCP 挂载 NFS 共享

无法通过 TCP 挂载 NFS 共享

我对这个问题感到十分苦恼。环境是 2 x CentOS 6 64 位安装。截至 1 小时前,NFS 客户端和服务器都已完全更新。

我已经在服务器上设置了 NFS 导出:

/opt/nfs     10.1.1.0/24(rw,sync,no_root_squash,no_all_squash)

据我所知,服务器上所有相关的 NFS 服务都在运行:

(2) (0 Jobs) [root@lb01-cbr01-au ~]$ service rpcbind status
rpcbind (pid  20079) is running...
(2) (0 Jobs) [root@lb01-cbr01-au ~]$ service nfslock status
rpc.statd (pid  19986) is running...
(2) (0 Jobs) [root@lb01-cbr01-au ~]$ service nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 20034) is running...
nfsd (pid 20031 20030 20029 20028 20027 20026 20025 20024) is running...
(2) (0 Jobs) [root@lb01-cbr01-au ~]$ 

在客户端上,rpcbind 和 nfslock 都报告正在运行。

在服务器上,localhost 的 rpcinfo 输出看起来不错:

[root@lb01-cbr01-au ~]# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  39893  status
    100024    1   tcp  59014  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049  nfs_acl
    100227    3   tcp   2049  nfs_acl
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049  nfs_acl
    100227    3   udp   2049  nfs_acl
    100021    1   udp  44725  nlockmgr
    100021    3   udp  44725  nlockmgr
    100021    4   udp  44725  nlockmgr
    100021    1   tcp  40736  nlockmgr
    100021    3   tcp  40736  nlockmgr
    100021    4   tcp  40736  nlockmgr
    100005    1   udp  55385  mountd
    100005    1   tcp  55481  mountd
    100005    2   udp  46027  mountd
    100005    2   tcp  59968  mountd
    100005    3   udp  45069  mountd
    100005    3   tcp  33231  mountd
[root@lb01-cbr01-au ~]# 

类似地,客户端上的 rpcinfo -p localhost 表示状态良好:

   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  59519  status
    100024    1   tcp  39715  status

客户端和服务器之间的防火墙是打开的 - 每个主机的输入和输出链上的接口都存在允许规则。

从客户端,当我发出 时showmount -e <server_ip>,它会挂起 20 秒,直到最终生成导出列表。发出rpcinfo -p <server_ip>它也会挂起 20 秒,直到最终返回“rpcinfo:无法联系端口映射器:RPC:远程系统错误 - 连接超时”。

当我尝试实际从客户端挂载导出时,使用:

mount -t nfs 10.1.1.33:/opt/nfs /opt/test/nfs

它挂起了 3 分 30 秒,返回“mount.nfs:连接超时”。

但是,如果我尝试通过 UDP 安装:

mount -o udp -t nfs 10.1.1.33:/opt/nfs /opt/test/nfs

它立即成功并且可以访问安装。

我没有对 hosts.allow 或 hosts.deny 做任何事情(两者都是空的,从我对 man 5 hosts_access 的解读来看,这表示将允许访问)。

我在这里遗漏了什么?

编辑:SELinux 在两个主机上都是允许的。

答案1

事实证明,我们的 PowerConnect 交换机上启用了一项“安全”功能,该功能会攻击源端口小于 1024 的 NFS SYN 数据包 (dos-control tcpflag)。可以说,禁用该功能可以解决问题。

答案2

尽管 SELinux 是允许的,但请尝试: setsebool -P nfs_export_all_rw 1 重新启动 rpcbind、nfs 和 nfslock,然后exportfs -a

相关内容