Estou perguntando em nome do filho de um amigo que está na faculdade na Índia, então peço desculpas se o que eu perguntar não tiver informações suficientes. Ele está usando WSL2 no Windows 11 e tem o Ubuntu 22.04.3 LTS instalado.
Seu professor deu estas instruções para montar um compartilhamento NFS necessário para o curso:
sudo apt-get install nfs-common
cd /
sudo mkdir tools
sudo mount -t nfs 10.0.17.82:/tools /tools
Os três primeiros comandos funcionam bem, mas a montagem falha. Eu o fiz adicionar um sinalizador -v e a saída é:
minor@Tejas:~$ sudo mkdir /tools
[sudo] password for minor:
minor@Tejas:~$ ls /tools
minor@Tejas:~$ sudo mount -v -t nfs 10.0.17.82:/tools /tools
mount.nfs: timeout set for Sun Sep 8 15:10:40 2024
mount.nfs: trying text-based options 'vers=4.2,addr=10.0.17.82,clientaddr=172.29.144.144'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'vers=4,minorversion=1,addr=10.0.17.82,clientaddr=172.29.144.144'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=10.0.17.82'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.0.17.82 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.0.17.82 prog 100005 vers 3 prot UDP port 20048
mount.nfs: mount(2): Permission denied
mount.nfs: Operation not permitted
minor@Tejas:~$
Pedi para ele usar showmount
e o resultado foi:
minor@Tejas:~$ showmount -e 10.0.17.82
Export list for 10.0.17.82:
/ *
Não consigo ver uma /tools
exportação na lista, mas também não sei se deveria conseguir vê-la. É bem possível que o professor dele não tenha configurado o servidor corretamente.
De qualquer forma, alguém pode sugerir o que está errado ou outras etapas para verificar qual é o problema?
É difícil fazer um diagnóstico definitivo sem ver os logs NFS do lado do servidor 1 , no entanto, o comportamento pode ser explicado pelo fato de que a interface de rede WSL usa Network Address Translation (NAT), o que faz com que a porta de origem do lado do cliente pareça não ser privilegiada, enquanto o servidor exporta o sistema de arquivos remoto usando a
secure
opção - que permite apenas conexões de portas privilegiadas.Para demonstrar, configurei
nfs-kernel-server
em uma caixa Kubuntu 24.04 com o seguinte/etc/exports
arquivo:e criou um
/tools
diretório com um/tools/sometool
arquivo fictício e tentou montá-lo a partir de uma VM do VirtualBox executando o Ubuntu 22.04 com uma interface NAT:Host (Windows) IP: 192.168.1.9
Convidado (Ubuntu 22.04) IP: 10.0.2.15 (NAT)
Log do lado do servidor:
Observe a porta de origem de numeração alta (>1024) na mensagem de erro
illegal port 58242
.Reconfigurando a interface da VM no modo em ponte:
Host (Windows) IP: 192.168.1.9
Convidado (Ubuntu 22.04) IP: 192.168.1.22 (BRIDGED)
Log do lado do servidor:
Para obter mais evidências de que o problema é a porta não privilegiada, tentei adicionar a
noresvport
opção ao comando mount na VM em ponte :e obteve o mesmo comportamento da configuração NAT.
Algumas soluções alternativas possíveis são:
Pode ser possível configurar o WSL para usar uma interface em ponte, conforme descrito neste blog, por exemplo Como fazer uma ponte [sic] do subsistema Windows para Linux
No entanto, isso está fora do escopo deste site.
Você pode mudar para uma instalação "bare metal" do Ubuntu ou uma solução de virtualização que permita interface em ponte pronta para uso, como Oracle Virtualbox ou VMware.
Você pode pedir ao seu professor para modificar a exportação para permitir números de porta não privilegiados - se for um servidor Linux moderno, isso significaria adicionar a
insecure
opção (ou mudarsecure
parainsecure
):Para mais informações, consulte
man exports
na Seção 5 das páginas de manual do Ubuntua seção CONSIDERAÇÕES DE SEGURANÇA de
man nfs
Se o servidor do professor estiver executando um Linux baseado em systemd, o registro não será habilitado por padrão, mas pode ser habilitado seguindo as instruções aqui Onde estão os logs do NFS v4 no systemd?