访问已挂载的 NFS 共享中的文件挂起

访问已挂载的 NFS 共享中的文件挂起

我正在创建 NFS 共享。我已经配置了 NFS 服务器和 NFS 客户端。

直到昨天我的分享都工作得很好,现在我发现它不起作用了。

我重新设置了NFS配置的所有步骤,还是不行。

我的问题是,当我尝试使用cat /mnt/nfs1.txt(直到昨天为止都工作得很好)访问我的挂载文件夹时,屏幕上没有显示任何内容。而且看起来就像是被吊起来或者倒塌了。

root@ela-native:~# cat /mnt/nfs1.txt

之后屏幕上什么也没有出现,我也必须关闭终端才能退出。

我究竟做错了什么?

编辑1

以下是我的 nfs 配置步骤:

NFS 服务器:

sudo apt-get install nfs-kernel-server

sudo mkdir /var/nfs/general

sudo nano /etc/exports

  /var/nfs/general *(rw,sync,no_root_squash,no_subtree_check)

sudo exportfs -a

sudo service nfs-kernel-server start

NFS 客户端:

sudo apt-get install nfs-common

sudo mount 172.21.215.101:/var/nfs/general /mnt

而且如果我跑步mount -t nfs,我会得到这个:

root@ela-native:/home/salini# mount -t nfs
172.21.215.101:/var/nfs/general on /mnt type nfs (rw,vers=4,addr=172.21.215.101,clientaddr=192.168.164.78)

我也尝试过showmount -e 172.21.215.101我得到了

clnt_create: RPC: Port mapper failure - Timed out 

编辑2

less /var/log/boot.log在服务器机器上尝试过,根据我的理解,我认为 nfs 服务器存在一些错误。

[ESC[0;1;31mFAILEDESC[0m] Failed to start Automatically refresh installed snaps.


 [ESC[0;1;31mFAILEDESC[0m] Failed to mount /mnt/nfs/var/nfs.
    See 'systemctl status mnt-nfs-var-nfs.mount' for details.
   [ESC[0;1;33mDEPENDESC[0m] Dependency failed for Remote File Systems.
             Starting Permit User Sessions...
             Starting LSB: VirtualBox Linux kernel module...
             Starting LSB: Set the CPU Frequency Scaling governor to "ondemand"...
             Starting LSB: Speech Dispatcher...
             Starting LSB: automatic crash report generation...
             Starting LSB: Apache2 web server...
             Starting LSB: daemon to balance interrupts for SMP systems...
    [ESC[0;32m  OK  ESC[0m] Mounted /mnt/nfs/home.

这里有什么问题?

编辑3

我做了sudo ufw status numbered并且sudo netstat -nlp | grep :111。我懂了:

root@wsm-ela-inc6:/home/test# sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 514/tcp                    ALLOW IN    Anywhere                  
[ 2] 514/udp                    ALLOW IN    Anywhere                  
[ 3] 514/tcp (v6)               ALLOW IN    Anywhere (v6)             
[ 4] 514/udp (v6)               ALLOW IN    Anywhere (v6)             

root@wsm-ela-inc6:/home/test# sudo netstat -nlp | grep :111
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      3062/rpcbind    
tcp6       0      0 :::111                  :::*                    LISTEN      3062/rpcbind    
udp        0      0 0.0.0.0:111             0.0.0.0:*                           3062/rpcbind    
udp6       0      0 :::111                  :::*                                3062/rpcbind    

编辑4

我做了:

sudo ufw allow from 192.168.1.0/24 to any port 2049

sudo ufw allow from 192.168.1.0/24 to any port 111

我再次尝试,showmount但终端再次给我这个

clnt_create: RPC: Port mapper failure - Timed out

我也尝试过sudo service portmap restart并且得到了portmap: unrecognized service。我也尝试过sudo service statd restart,进展顺利。然后我又尝试了showmount但仍然是同样的问题。

编辑5

我也尝试过netstat并得到了这个:

    tcp        0      0 wsm-ela-inc6.csez:52630 maa03s29-in-f2.1e:https ESTABLISHED
tcp        0      0 wsm-ela-inc6.csez.z:nfs wsm-ela-inc6.csez.z:890 ESTABLISHED
tcp        0      0 wsm-ela-inc6.csez:34388 stackoverflow.com:https ESTABLISHED
tcp        0      0 wsm-ela-inc6.csez:35504 maa05s06-in-f8.1e:https TIME_WAIT  
tcp        0      0 wsm-ela-inc6.csez.z:890 wsm-ela-inc6.csez.z:nfs ESTABLISHED
tcp        0      0 wsm-ela-inc6.csez:39524 maa03s22-in-f2.1e:https TIME_WAIT  
tcp        0      0 wsm-ela-inc6.csez:shell 192.168.164.78:58982    ESTABLISHED
tcp        0      0 wsm-ela-inc6.csez:34414 stackoverflow.com:https ESTABLISHED
tcp        0      0 wsm-ela-inc6.csez:34438 stackoverflow.com:https ESTABLISHED

答案1

我发现通过禁用客户端和服务器上的防火墙, mount 和 showmount 命令可以正常工作。

我尝试禁用服务器和客户端上的防火墙,一切都恢复正常了。一般来说,如果客户端和服务器不在同一受信任网络上,那么在它们之间运行 NFS 并不是一个好主意 - 尤其是因为它不能很好地与哑防火墙配合使用。如果它们位于同一个受信任的网络上,那么每个系统上对来自另一个系统的输入流量的更全面的许可可能会保持正常运行。

答案2

尝试允许这些端口使用 tcp/udp:

111
875
2049
20048
34729
49465

而不是完全打开防火墙。

相关内容