Noções básicas sobre NFS4 (servidor Linux)

26

Fui um pouco incomodado pelo NFS4 no Linux. Algumas informações "lá fora" parecem conflitar com outras informações, e outras informações parecem difíceis de encontrar. Então, aqui estão algumas coisas que chamaram minha atenção, espero que alguém por aí possa lançar alguma luz sobre isso.

Esta pergunta se concentra exclusivamente no NFS4 sem o Kerberos etc.

1. Exportações

Há informações ambíguas na página de exportsmanual sobre a estrutura do / etc / exportações.

Para citar exports(5):

Além disso, cada linha pode ter uma ou mais especificações para opções padrão após o nome do caminho, na forma de um traço ("-") seguido por uma lista de opções.

A lista de opções é usada apenas para todas as exportações subsequentes nessa linha.

O que significa "exportações subsequentes somente nessa linha"?

1.2 fsid=0não é mais necessário?

Eu estava procurando por fsid quando encontrei um comentário na lista linux-nfs informando que fsid = 0 não é mais necessário. Agora estou confuso, preciso disso com nfs4 ou não ?!

2. Diretório não exportado ainda montável

Digamos que tenho a seguinte árvore:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

E eu tenho as seguintes entradas nesta entrada do fstab:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

E minhas exportações são exatamente isso:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

E exportfs -arvmostra:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

Então, por que sou capaz de fazer isso e não recebo nenhum erro em um cliente:

mount -t nfs4 server:/exp/users /tmp/test

Mesmo que /exp/usersnão seja exportado? Não exportei este diretório e, embora não veja o conteúdo, a /dev/disk/by-label/usersmenos que eu especifique crossmnt, ainda sou capaz de gravar no diretório. Tudo o que escrevo lá vai para o diretório subjacente /exp/userse pode ser visto quando eu umount /exp/users; ls /exp/users..

3. O caso ímpar de showmount -d server

Conforme declarado rpc.mountd(8), este comando deve exibir diretórios atualmente montados pelos clientes ou entradas antigas /var/lib/nfs/rmtab, como pode ser lido:

O daemon rpc.mountd registra cada solicitação MNT bem-sucedida adicionando uma entrada ao arquivo / var / lib / nfs / rmtab. Ao receber uma solicitação UMNT de um cliente NFS, o rpc.mountd simplesmente remove a entrada correspondente de / var / lib / nfs / rmtab, desde que a lista de controle de acesso para essa exportação permita que o remetente acesse a exportação.

(...)

Observe, no entanto, que há pouco para garantir que o conteúdo de / var / lib / nfs / rmtab seja preciso. Um cliente pode continuar acessando uma exportação mesmo depois de chamar o UMNT. Se o cliente reiniciar sem enviar uma solicitação UMNT, as entradas obsoletas permanecerão para esse cliente em / var / lib / nfs / rmtab.

Depois de ler isso, certamente me pergunto:

  1. Não é terrivelmente inseguro apenas expor esse tipo de informação do cliente;
  2. Os administradores de servidor inconscientes não devem ter uma rmtab com muitos clientes antigos;
  3. É por isso que os clientes que montam diretórios nfs4 mount -vconseguem ver a saída como "nada foi montado", mesmo que algo tenha sido montado?

Eu tenho muitas outras perguntas sobre o nfs4, mas continuarei assim por enquanto .. :)

drumfire
fonte
Talvez a lista de exportação não goste dos seus sistemas de arquivos estranhos montados em bind. Tente primeiro com / mnt / users ...
jirib
Trata-se do nfs4, que requer um "pseudo sistema de arquivos", isto é, uma hierarquia de sistemas de arquivos de uma árvore. Você pode esclarecer o que quer dizer, por favor?
drumfire
Esta página wiki também afirma que fsid = 0 não é necessária mais: wiki.linux-nfs.org/wiki/index.php/... , mas 'as exportações homem' ainda implica que é necessária
SystemParadox
1
Eu gostaria de dizer que apoio esta pergunta. Como você, observei muitas das mesmas coisas, e tenho a mesma pergunta e mais. Parece uma bagunça de merda.
Cyclone
1
Muitas perguntas em uma postagem. @drumfire, você poderia dividi-lo em perguntas e posts mais simples?
Victor Yarema 3/11

Respostas:

7

Ótimas perguntas, destaca um ponto maior com a documentação IMO. Aqui está uma tentativa de uma resposta completa:

O que significa "exportações subsequentes somente nessa linha"?

Um exemplo é provavelmente mais fácil aqui:

/export/stuff -rw 10.0.0.54 10.0.0.55

é equivalente a:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

Não fsid=0é mais necessário?

Isso depende do seu caso de uso. Parece que você está exportando sistemas de arquivos regulares baseados em disco do restante da sua consulta; nesse caso, é melhor fsid=0descartá-lo (o que no nfsv4 altera o comportamento para referenciar o sistema de arquivos raiz da exportação).

Para alterar esse comportamento, remova a opção no_subtree_check


rmtabcoisas relacionadas

  • A manipulação de rmtabum risco de segurança?
    Eu acho que depende do seu caso de uso para responder que, na minha rede, ele não apresenta um vazamento de informações credível, mas posso ver casos em que isso poderia potencialmente.
  • Não rmtabestará cheio de entradas obsoletas?
    Potencialmente, sim, novamente, dependendo do seu cenário de implantação / caso de uso.
  • É por isso que alguns clientes que estão executando mount -verroneamente veem "nada foi montado"?
    Ainda não me deparei com isso
CraigJPerry
fonte