NFS:UDP 工作正常,TCP 超时,CentOS 6.9 全新安装

NFS:UDP 工作正常,TCP 超时,CentOS 6.9 全新安装

在全新安装并包含所有更新的 CentOS 6.9 上,我可以使用 UDP 协议挂载 NFS 并运行rpcinfo -u 10.3.255.234 nfs 3,答案是“程序 100003 版本 3 已准备就绪并正在等待”。我可以通过 UDP 挂载任何 NFS 导出,没有任何问题。

但是,对于 TCP,任何挂载尝试都会挂起 3 分钟,然后超时。 也是一样rpcinfo -t 10.3.255.234 nfs 3。我还有其他几台安装了 CentOS 6.9 并安装了所有更新的服务器,它们可以毫无问题地通过 TCP 挂载 NFS,并且运行 rpcinfo -t 和 -u,它们会得到肯定的答复。它们不是全新安装的。

我可以在故障客户端上观察到以下行为:

1. 没有第 4 层协议选项:我们看到即使 UDP 尝试也会超时

[root@srv-tls-test02 ~]# mount -t nfs 10.3.255.234:/vol/vol_testunix /mnt -o vers=3 -v
mount.nfs: timeout set for Thu Jan 18 10:48:40 2018
mount.nfs: trying text-based options 'vers=3,addr=10.3.255.234'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.3.255.234 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.3.255.234 prog 100005 vers 3 prot UDP port 4046
(timeout)

2. 使用 tcp 选项

 [root@srv-tls-test02 ~]# mount -t nfs 10.3.255.234:/vol/vol_testunix /mnt -o vers=3,tcp -v
 mount.nfs: timeout set for Thu Jan 18 10:49:25 2018
 mount.nfs: trying text-based options 'vers=3,tcp,addr=10.3.255.234'
 mount.nfs: prog 100003, trying vers=3, prot=6
 mount.nfs: trying 10.3.255.234 prog 100003 vers 3 prot TCP port 2049
 mount.nfs: prog 100005, trying vers=3, prot=6
 mount.nfs: trying 10.3.255.234 prog 100005 vers 3 prot TCP port 4046
 (timeout)

3. 使用 udp 选项

[root@srv-tls-test02 ~]# mount -t nfs 10.3.255.234:/vol/vol_testunix /mnt -o vers=3,udp -v
mount.nfs: timeout set for Thu Jan 18 10:49:49 2018
mount.nfs: trying text-based options 'vers=3,udp,addr=10.3.255.234'
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: trying 10.3.255.234 prog 100003 vers 3 prot UDP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.3.255.234 prog 100005 vers 3 prot UDP port 4046
10.3.255.234:/vol/vol_testunix on /mnt type nfs (rw,vers=3,udp)

当连接超时时,使用命令mount -t nfs 10.3.255.234:/vol/vol_testunix /mnt -v -o vers=3,输出如下/var/log/messages粘贴箱

我查看了一下流量。工作中的客户端从 portmapper 获得答案,然后请求挂载“/vol/vol_testunix”。如果我在新安装的服务器中搜索此字符串,则找不到它,但 portmapper 答案是存在的。

我尝试在 2 台具有不同硬件的服务器上全新安装 CentOS 6.9,但都因 NFS over TCP 而超时。

这不是权限问题。如果我用正常工作的服务器欺骗故障 IP,我可以通过 TCP 进行挂载,没有任何问题。

NFS 服务器是 NetApp 文件服务器。如果我从非工作服务器对其进行 nmap,我会看到 NFS 和 rpcbind 端口打开。

我怀疑是客户端的默认配置。iptables 和 ip6tables 被刷新并禁用。IPv6 根本没有使用。rpcbind、portmapper、mountd、lockd、statd、nfs 服务正在运行。localhost 上的 rpcinfo 显示 tcp 和 udp 的“portmapper”、“status”和“mountd”。

rpcinfo -p localhost

[root@srv-tls-test02 ~]# 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  34749  status
    100024    1   tcp  57346  status
    100005    1   udp  51983  mountd
    100005    1   tcp  34221  mountd
    100005    2   udp  51130  mountd
    100005    2   tcp  49610  mountd
    100005    3   udp  60273  mountd
    100005    3   tcp  55271  mountd

ps aux | egrep "nfs|rpc|lock"

[root@srv-tls-test02 ~]# ps aux | egrep "nfs|rpc|lock"
root        28  0.0  0.0      0     0 ?        S    10:04   0:00 [kblockd/0]
root        29  0.0  0.0      0     0 ?        S    10:04   0:00 [kblockd/1]
rpcuser   1380  0.0  0.0  23352  1368 ?        Ss   10:04   0:00 rpc.statd
root      1468  0.0  0.0      0     0 ?        S    10:04   0:00 [rpciod/0]
root      1469  0.0  0.0      0     0 ?        S    10:04   0:00 [rpciod/1]
root      1683  0.0  0.0      0     0 ?        S    10:07   0:00 [nfsiod]
root      1919  0.0  0.0  21672   992 ?        Ss   10:21   0:00 rpc.mountd
root      1925  0.0  0.0      0     0 ?        S    10:21   0:00 [lockd]
root      1926  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd4]
root      1927  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd4_callbacks]
root      1928  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1929  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1930  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1931  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1932  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1933  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1934  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1935  0.0  0.0      0     0 ?        S    10:21   0:00 [nfsd]
root      1966  0.0  0.0  25172   632 ?        Ss   10:21   0:00 rpc.idmapd
rpc       2021  0.0  0.0  18980   932 ?        Ss   10:22   0:00 rpcbind
rpcuser   2042  0.0  0.0  23352  1364 ?        Ss   10:39   0:00 rpc.statd --no-notify
root      2225  0.0  0.0  21672   996 ?        Ss   11:15   0:00 rpc.mountd
root      2239  0.0  0.0 103324   900 pts/1    S+   11:25   0:00 egrep nfs|rpc|lock

系统信息

[root@srv-tls-test02 ~]# uname -a
Linux srv-tls-test02 2.6.32-696.18.7.el6.x86_64 #1 SMP Thu Jan 4 17:31:22 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

[root@srv-tls-test02 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)

我真的不知道发生了什么事。有什么想法吗?

答案1

我要对自己负责。

我们的 CentOS 主机和 NetApp 服务器不是问题所在。我们有一个 HP 交换机 (HP1820-48G J9981A),具有针对无效 TCP 标志攻击的安全保护功能。我现在没有时间进一步分析我的捕获,所以我仍然不知道究竟是什么触发了这种保护。

所有查询都到达 NetApp 服务器,所有授权都已给出,然后来自客户端的最后一个同步查询被交换机丢弃。

我无法将 pcap 捕获内容粘贴到 pastebin 中,因为它包含有关我公司的敏感信息。如果我有时间在空闲时间分析它,我会在这个帖子上提供更多信息。

相关内容