NFS: UDP funciona, tempo limite do TCP, instalação nova do CentOS 6.9

1

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?

    
por NdFeB 18.01.2018 / 15:49

1 resposta

1

Eu vou responder para mim mesmo.

Nosso host do CentOS e nosso servidor da NetApp não eram o problema. Temos um switch HP (HP1820-48G J9981A) com uma proteção de segurança contra ataques de flags TCP inválidos. Eu não tenho tempo para analisar mais as minhas capturas agora, então eu ainda não sei exatamente o que está provocando essa proteção.

Todas as consultas chegam ao servidor NetApp, todas as autorizações são dadas e, em seguida, a última consulta de sincronização do cliente foi eliminada pelo comutador.

Eu não posso colar uma captura pcap, pois contém informações confidenciais sobre a minha empresa. Se eu tiver tempo para analisá-lo no meu tempo livre, darei mais informações sobre esse assunto.

    
por 31.01.2018 / 09:40

Tags