Em uma nova instalação do CentOS 6.9 com todas as atualizações, eu posso montar o NFS com o protocolo UDP e executar rpcinfo -u 10.3.255.234 nfs 3
, a resposta é "programa 100003 versão 3 pronto e aguardando". Eu posso montar qualquer exportação NFS sobre o UDP sem qualquer problema.
No entanto, quando se trata de TCP, qualquer tentativa de montagem trava 3 min e depois expira. O mesmo para rpcinfo -t 10.3.255.234 nfs 3
. Eu tenho vários outros servidores com o CentOS 6.9 com todos os udpates, eles podem montar o NFS sobre TCP sem qualquer problema e executar rpcinfo -t e -u, eles obtêm respostas positivas. Eles não são novos.
Eu posso observar os seguintes comportamentos nos clientes com problemas:
1. nenhuma opção de protocolo de camada 4: vemos que até a tentativa de UDP expira
[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. com opção 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. com a opção 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)
Quando uma conexão atinge o tempo limite, com o comando mount -t nfs 10.3.255.234:/vol/vol_testunix /mnt -v -o vers=3
, aqui está a saída de /var/log/messages
: pastebin
Eu olhei um pouco para o tráfego. O cliente em funcionamento obtém uma resposta do portmapper, depois pede para montar "/ vol / vol_testunix". Se eu procurar por essa string no novo servidor instalado, não a encontrarei, mas a resposta do portmapper está presente.
Eu tentei instalar novamente o CentOS 6.9 em 2 servidores diferentes com hardware diferente, ambos com NFS sobre TCP.
Este não é um problema de permissão. Se eu falsificar o IP defeituoso com um servidor em funcionamento, posso montar o TCP sem nenhum problema.
O servidor NFS é um arquivador NetApp. Se eu nmapá-lo do servidor que não funciona, vejo as portas NFS e rpcbind abertas.
Eu suspeito da configuração padrão no lado do cliente. iptables e ip6tables são liberados e desabilitados. O IPv6 não é usado de todo. Os serviços rpcbind, portmapper, mountd, lockd, statd e nfs estão em execução. rpcinfo no localhost exibe "portmapper", "status" e "mountd" para ambos, tcp e udp.
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
sysinfo
[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)
Eu realmente não consigo entender o que está acontecendo. Alguma idéia?