Como e para que criar um servidor NFS, mesmo sendo usuário do Windows.

Nota: Este post está em rascunho. Eu sei que pode estar vago, mas alguns poderão notar que já é muito útil do jeito que está. Se precisar de um maior esclarecimento deixe um comentário porque eu irei preenchendo lacunas aos poucos.

NFS (Network File System – Por um tempo eu jurava que significava Network File Server) é um protocolo de compartilhamento de arquivos massivamente usado no mundo Linux e completamente distinto do usado no mundo Windows (CIFS/SMB).  Normalmente não tem qualquer utilidade para nós exceto quando precisamos lidar com aparelhos baseados em Linux (cameras ip, nvr, media player, tv, etc), que é o caso que vou abordar neste post. Para muitos dispositivos desse tipo o único meio de trocar arquivos com o mundo exterior, principalmente arquivos que contém o firmware do aparelho, é você ter acesso a um servidor NFS.  A maioria dos usuários Windows está a no máximo uma dúzia de cliques de criar um servidor CIFS, mas conseguir um servidor NFS pode ser bem complicado e frustrante quando você não faz a menor idéia de por onde começar.

Outros posts virão onde explicarei como fazer backup e restauração de firmware de alguns aparelhos e o processo vai depender de você ter acesso a um servidor NFS.

Se você tiver acesso ao Windows Server 2008 ou 2012, um servidor NFS supostamente é parte das opções oferecidas, mas não vou tratar disso aqui.

 

haneWIN NFS Server

Shareware

Prós

  • Roda no Windows. Incluindo XP e Windows 8.1 x64 (testado);
  • Pequeno, leve, prático e funciona. Do download ao servidor funcionando são só uns poucos minutos.

Contras

  • Só pode usar por 30 dias

O procedimento é muito simples

  • Baixe e instale o programa;
  • Crie um diretório c:\public
  • Execute NFS Server pelo ícone deixado no desktop (para configurar você precisa executar como Administrador);
  • Vá em Exports -> Edit Exports File e retire o parâmetro -readonly da linha que começa com c:\public
  • Clique em Restart Server

Agora você pode montar no cliente com uma seqüência de comandos do tipo (digamos que o servidor esteja em 192.168.0.10);

#mkdir /tmp/nfs

#mount -t nfs 192.168.0.10:/c/public /tmp/nfs

Observe a notação acima. Se o drive fosse “d:”, o caminho a usar começaria com “/d/”

Se der “Connection Refused” experimente acrescentar ‘-o nolock’, assim:

#mount -t nfs -o nolock 192.168.0.10:/c/public /tmp/nfs


Tunkey Linux File Server

Prós:

  • Imediatamente após terminar o assistente de configuração o servidor já está funcionando;
  • Compartilhamentos são simultaneamente exportados como CIFS e NFS. Assim você pode colocar um arquivo no servidor através do Linux e resgatá-lo do mesmo local usando o Windows e vice-versa;

Contras:

  • É irritante que ele não deixa você terminar a instalação enquanto não escolher uma senha complicada (que dois meses depois eu já havia esquecido e tive que instalar tudo de novo);
  • Oferece uma enorme quantidade de configurações pela GUI que são todas completamente inúteis para nosso caso e só confundem;
  • Embora o servidor NFS rode automaticamente não encontrei opção na GUI para configurá-lo. Eu só descobri quais eram os diretórios exportados quando fiz um webshell e li /etc/exports. Depois foi preciso editar o arquivo /etc/exports manualmente para fazer uma mudança necessária;
  • É configurado para atualizar automaticamente e não encontrei opção na GUI para desativar isso. Então para tentar impedi-lo na marra eu forneci endereços de gateway e DNS falsos;

O Turnkey Linux File Server é uma distro do Linux que está disponível como máquina virtual.  Basta importar o arquivo .ova disponibilizado no site na sua cópia do Virtualbox e seguir o assistente de instalação. Em poucos passos está quase pronto para o uso.

A primeira tela do assistente vai pedir uma senha para o usuário root. Você precisa combinar letras maiúsculas e minúsculas e colocar ao menos um número.

turnkey_fileserver_1_root_password_ryan-com-br

Confirme a senha

turnkey_fileserver_2_root_password_confirm_ryan-com-brSe a senha não estiver ao agrado do programa vai ser rejeitada logo na primeira tentativa

turnkey_fileserver_3_root_password_insecure_ryan-com-br

Em seguida o programa vai oferecer os “hub services”, que são inúteis para nossa finalidade. Você pode pular a instalação com a tecla TAB, até selecionar SKIPturnkey_fileserver_4_hub_services_ryan-com-br

Salte as notificações da mesma forma

turnkey_fileserver_5_notifications_ryan-com-br

Minta internet tem apenas 800kbps. Esperar para fazer atualizações é intolerável. Eu salto isso também.

turnkey_fileserver_6_update_now_ryan-com-br

Se você não quiser mudar as configurações de rede, a configuração acabou. Se quiser mudar, selecione Advanced Menu

turnkey_fileserver_7_ryan-com-br

Selecione Networking

turnkey_fileserver_8_advanced_menu_ryan-com-br

Selecione Static e configure ao seu gosto. Para evitar que o programa se atualize sem minha permissão, eu forneço informações falsas de gateway e DNS. Isso não afeta a operação na sua rede.

turnkey_fileserver_10_network_static_ryan-com-br

A partir desse ponto você pode fazer muita coisa com o mouse. Basta acessar o servidor via browser, no endereço IP que você definiu.

 

O único real problema que encontrei foi que apesar de não existir username e password para acessar um servidor NFS pois as permissões são definidas por IP, por default o servidor NFS não permite gravação se você estiver acessando como usuário root, mas normalmente esse é justamente o usuário com que fazemos login nos dispositivos (dá permission denied). Mas uma pequena configuração extra no arquivo /etc/exports resolve.

Exemplo de arquivo /etc/exports

Após a instalação você precisa acrescentar a opção no_root_squash ao compartilhamento que quer liberar completamente.

Você não pode simplesmente copiar e colar o meu arquivo exports porque o arquivo é criado com endereços que dependem da sua rede.

O modo simples de editar o arquivo exports é fazer login pelo webshell para copia-lo para o compartilhamento, editá-lo usando o seu editor preferido no Windows mesmo e depois transferi-lo de volta:

O arquivo editado fica mais ou menos assim (observe o que foi acrescentado em negrito):

A partir do servidor telnet de uma câmera, consegui fazer o mount com:
# mkdir /tmp/nfs
# mount -t nfs -o nolock 10.0.0.39:/srv/storage /tmp/nfs

 

Não funcionaram

FreeNFS e FreeNFSe – Free. A versão FreeNFSe é destinada a instalação a partir do Windows XP e é especificamente destinada ao que desejamos: a conexão de clientes NFS “embutidos” ou “embarcados” e é extremamente simples de usar, mas não consegui fazer funcionar. O compartilhamento é criado mas tentar copiar para ele dá muitos erros e os arquivos são criados com zero bytes.

Windows Services For Unix – Gratuito e da própria Microsoft. Pode ser instalado até no Windows XP, mas foi descontinuado e não é mais oferecido para download.  Complica demais porque requer que você faça um mapeamento entre os usuários do Windows e do Unix antes de poder compartilhar pastas. Se você quiser procurar por ele aqui estão informações de autenticidade para a versão 3.5 (a última), da cópia que baixei anos atrás:

CRC-32: 87cfd0f3
MD4: 95aac2b26bfd9971b73efe9e6c62d462
MD5: d632c1bd7bed8af2ddb2a00c81aafcab
SHA-1: cd9cc633d967a2186c6f55ec8e362c1efb370661

Problemas diversos

  • “Connection refused” no comando mount – A maioria dos tutoriais diz que isso está relacionado ao seu firewall. Mas descobri que acrescentar ao mount a opção ‘-o nolock’ resolve o problema;
  • Comando mount demora demais e depois dá “RPC timed out” – O firewall está atrapalhando
  • “Permission denied” no comando mount – Se você é o usuário ‘root’ na máquina onde está dando o comando mount, o servidor NFS está configurado para negar acesso ao usuário root;
3 comentários
  • Ygor Almeida - 136 Comentários

    … Jurava que já havia feito comentário aqui nesse post. Mas devo ter caído em alguma regra ou se perdeu.

    Não sei se funciona corretamente ( talvez se você tiver tempo e saco para testar o windows 10 ) mas com o advento do Bash do Ubuntu 14.04 no Windows – acho que seria possível utilizar o NFS Server nativo do linux rodando sob o windows.

    Uma das limitações até onde eu sei é editar coisas parece que o Bash não tem permissão de escrita na camada do HD Windows. Mas leitura ele faz. Acredito que um pouco de apt-get e algumas configurações e você poderia compartilhar a pasta usando o NFS.

    Vale o teste, já que muitos serviços as coisas funcionam no Bash, como LAMP e até mesmo o X eu vi que é possivel usar com muito truque.

    Pra fins de teste e desafio embora sei que seu tempo seja limitado. Acho que vale a pena !!!

    :yahoo: :clapping:

    • Jefferson - 6.606 Comentários

      Ygor,

      Eu não uso o Windows 10 ainda. E por causa da característica “mutante” desse SO eu ainda estou reticente quanto à validade de se fazer qualquer tutorial baseado nele.

  • Jefferson - 6.606 Comentários

    Eu expandi os tutoriais e documentei alguns possíveis problemas.

Deixe um comentário para Ygor Almeida Cancelar resposta

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »