我正在创建 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
而不是完全打开防火墙。