Centos6

NFS:UDP 工作,TCP 超時,CentOS 6.9 全新安裝

  • January 31, 2018

在全新安裝包含所有更新的 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 的伺服器,所有的 udpate,他們可以毫無問題地通過 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/messagespastebin

我看了一下交通。工作客戶端從 portmapper 獲得答案,然後要求掛載“/vol/vol_testunix”。如果我在新安裝的伺服器中搜尋此字元串,我找不到它,但存在埠映射器答案。

我嘗試在具有不同硬體的 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)

我實在想不通是怎麼回事。任何的想法 ?

我要回答自己。

我們的 CentOS 主機和 NetApp 伺服器不是問題所在。我們有一個 HP 交換機 (HP1820-48G J9981A) 具有針對無效 TCP 標誌攻擊的安全保護。我現在沒有時間進一步分析我的擷取,所以我仍然不知道究竟是什麼觸發了這種保護。

所有查詢都到達 NetApp 伺服器,所有授權都已獲得,然後來自客戶端的最後一個同步查詢被交換機丟棄。

我無法粘貼 pcap 擷取,因為它包含有關我公司的敏感資訊。如果我有時間在空閒時間分析它,我將提供有關此執行緒的更多資訊。

引用自:https://serverfault.com/questions/892867