我正在创建 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 并不是一个好主意 - 尤其是因为它不能很好地与愚蠢的防火墙配合使用。如果它们在同一个受信任的网络上,那么在每个系统上对来自另一个系统的输入流量进行更全面的许可可能会让事情保持正常。