Traduções: English - Português (Brasil)
Configuração do servidor NFS
O seguinte não especifica o NFS versão 2 versus 3 versus 4; as etapas abaixo funcionaram para mim usando o NFS versão 3 compilado com o kernel do servidor e do cliente (o servidor é uma máquina Debian Etch, o cliente era outra distribuição Linux).
Se você deseja configurar o NFSv4 com o Kerberos, consulte: ?pt_BR/NFS/Kerberos.
Verifique se você possui suporte ao servidor NFS no kernel do servidor (módulo do kernel chamado "knfsd.ko" no diretório /lib/modules/uname -r/)
$ grep NFSD /boot/config-`uname -r`
ou similar (onde quer que você tenha escondido seu arquivo de configuração, por exemplo, talvez em /usr/src/linux/.config.)
Em seguida, observe que existem pelo menos duas implementações principais de servidor NFS no momento (excluindo as implementadas em Python e similares): uma implementada no espaço do usuário (mais lento, mais fácil de depurar) e a outra implementada no espaço do kernel (mais rápido). A baixo mostra a configuração do espaço no kernel.
Primeiro, os pacotes para começar:
$ apt install nfs-kernel-server portmap
OBSERVAÇÃO: O pacote portmap é necessário apenas se você deseja executar um servidor NFSv2 ou NFSv3. Se todos os seus clientes suportam NFSv4, você pode desativar o NFSv2 e o NFSv3 (conforme descrito na seção "Apenas NFSv4" abaixo) e pular a seção "Portmap" abaixo.
Portmap
Observe que o portmap padroniza apenas escutar as tentativas de conexão NFS no 127.0.0.1 (localhost); portanto, se você deseja permitir conexões na sua rede local, é necessário editar /etc/default/portmap, para comentar a linha "OPTIONS". Além disso, precisamos garantir que o arquivo /etc/hosts.allow permita conexões à porta do portmap. Por exemplo:
$ perl -pi -e 's/^OPTIONS/#OPTIONS/' /etc/default/portmap $ echo "portmap: 192.168.1." >> /etc/hosts.allow $ /etc/init.d/portmap restart
Veja 'man hosts.allow' para exemplos de sintaxe. Mas, em geral, especificar apenas parte do endereço IP como em 192.168.1. (deixando incompleto à direita) trata o fragmento de endereço IP especificado como um curinga, permitindo todos os endereços IP no intervalo 192.168.1.0 a 192.168.1.255 (neste exemplo). Pode-se fazer mais "curingas" usando nomes DNS e outros padrões. Note que o 'portmap' é fornecido pelo pacote debian 'rpcbind' (pelo menos no Stretch).
Compartilhar pasta na rede
Edite o arquivo /etc/exports, com as listas das pastas do servidor para compartilhar com as máquinas clientes através do NFS. E crie a tabela NFS com "exportfs -a". O exemplo a seguir adiciona a linha com o caminho da pasta "/example", para ser acessada por qualquer máquina na rede local (aqui 192.168.1.*).
$ echo "/example 192.168.1.0/255.255.255.0(rw,no_root_squash,subtree_check)" >> /etc/exports $ exportfs -a $ /etc/init.d/nfs-kernel-server reload
Isso instrui o servidor a compartilhar essa pasta para leitura e alteração, com alterações sendo feitas com o ID do usuário root pelos clientes em vez de serem mapeados para o usuário 'nobody' (ninguém) e usar o 'subtree_check' para silenciar uma mensagem de aviso. Em seguida, reinicie o serviço.
Nota: Se você quiser que o /etc/exports compartilhe através do NFS para vários endereços, use entradas separadas por espaço. A sintaxe é assim:
$ echo "/multi-example 192.168.1.0/24(rw) 172.16.1.0/24(ro) 10.11.12.0/24(rw)" >> /etc/exports
Check which versions of NFS the server is running this way: root@deb9:/# cat /proc/fs/nfsd/versions -2 -3 +4 +4.1 +4.2 In this case, nfs2, nfs3 are disabled. NFS 4, 4.1, and 4.2 are enabled. Any client trying to connect with NFSv2 or NFSv3 should get an error.
Do lado do cliente (por exemplo, uso um disco de "resgate" PLD para inicializar uma máquina Windows para alguns diagnósticos e uso o suporte nativo ao cliente NFS para acessar uma pasta do meu outro computador), você precisa garantir que o portmap está em execução e o suporte ao cliente NFS está embutido no kernel ou o módulo apropriado ("nfs.ko") está carregado e, em seguida, monte o caminho do servidor da seguinte maneira:
$ mount 192.168.1.100:/example /mnt/example
Para ajudar na depuração:
tente executar 'rpcinfo -p' no servidor (e nos clientes 'rpcinfo -p <server>'), e você verá uma lista grande de informações, incluindo 'nfs' e 'portmapper' em algumas das linhas. Se você receber mensagens sobre não conseguir se conectar, talvez tenha regras de firewall bloqueando o acesso ao portmap. Veja seção de como fazer do NFS (em inglês) para obter mais detalhes de como decifrar a saída de 'rpcinfo'.
- Você também pode 'cat /proc/fs/nfs/exports' para ver a lista de pastas de arquivos exportados pelo servidor de arquivos NFS.
NFSv4 only
Especificidades do NFSv4
Para habilitar apenas o NFSv4 e mais novos (desabilitando a segunda e terceira versão), defina as seguintes variáveis em /etc/default/nfs-common e /etc/default/nfs-kernel-server. Observe que o RPCNFSDOPTS não está presente por padrão e precisa ser adicionado.
NEED_STATD="no" NEED_IDMAPD="yes"
RPCNFSDOPTS="-N 2 -N 3" RPCMOUNTDOPTS="--manage-gids -N 2 -N 3"
Além disso, o rpcbind não é necessário pelo NFSv4, mas será iniciado como um pré-requisito pelo nfs-server.service. Isso pode ser evitado mascarando o rpcbind.service e o rpcbind.socket:
sudo systemctl mask rpcbind.service sudo systemctl mask rpcbind.socket
O NFSv4 requer apenas uma única porta (TCP/UDP 2049) e não requer a instalação do serviço portmap.
Atender apenas IPs específicos
Por padrão, o NFS escutará as conexões em todas as portas. Para escutar apenas conexões NFS(v4) em um endereço IP específico, adicione a opção -H a RPCNFSDOPTS no /etc/default/nfs-kernel-server:
RPCNFSDOPTS="-N 2 -N 3 -H 10.0.1.1"
Como alternativa, um nome de host pode ser fornecido em vez de um endereço IP. A opção -H também pode ser fornecida várias vezes para ouvir em vários IPs diferentes.
Consulte https://manpages.debian.org/stretch/nfs-kernel-server/rpc.nfsd.8.en.html rpc.nfsd manpage para ver todas as opções disponíveis ao RPCNFSDOPTS.
Veja Também (em inglês):
www.debianadmin.com artigos sobre a instalação do NFS no Debian.
O como fazer de segurança do NFS do Projeto de Documentação do Linux
CategoryNetwork CategorySoftware CategorySystemAdministration