我正在尝试访问 NFS 共享。 NFS 共享位于我家里的服务器中,我尝试从本地网络外部访问它。
为了实现这一目标,我在本地网络上启动了 OpenVPN 服务器。这工作正常,我可以从本地网络外部连接到 VPN,甚至可以 ping 服务器并访问一些仅本地的其他服务。我的 OpenVPN IP 地址是 172.27.232.5。
问题是我无法挂载 NFS 共享。当我连接到 VPN 时,我可以使用 showmount 命令查看共享
showmount -e 192.168.73.2
Export list for 192.168.73.2:
/media/share/kdab 192.168.73.0/24
/media/share/jjcasmar 192.168.73.0/24
但如果我尝试连接到其中任何一个,都会失败。
sudo mount -t nfs4 192.168.73.2:/media/share/jjcasmar /home/jjcasmar/mnt
mount.nfs4: access denied by server while mounting 192.168.73.2:/media/share/jjcasmar
我不明白我的设置有什么问题,而且我的网络不太好。对可能发生的事情有什么想法吗?
ip addr show
VPN 连接的结果是
13: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 172.27.232.5/23 brd 172.27.233.255 scope global tun1
valid_lft forever preferred_lft forever
inet6` fe80::b6a9:fff6:dd69:6f7f/64 scope link stable-privacy
valid_lft forever preferred_lft forever
如果我理解正确的话,NFS 服务器会拒绝连接,因为虽然我可以在 192.168.73.2 上看到服务器,但我不在该子网上,对吗?
我尝试修改导出以添加172.27.232.0/23
,但仍然失败。我也尝试过直接导出到我的 OpenVPN IP,172.27.232.5
但没有成功。
答案1
OpenVPN 通常使用路由网络将客户端连接到服务器。例如,尽管您的 LAN 是 192.168.73.0/24,但您连接的客户端可能会被分配 VPN 地址 10.0.0.2。路由允许您的客户端访问 LAN 上的设备。
连接 VPN 时在客户端上运行ip addr
( ) 将显示用于 OpenVPN 的子网 - 或者您可以查看 OpenVPN 服务器配置文件(通常位于服务器下)。ip a
/etc/openvpn
您可以看到showmount
NFS 导出仅提供给 LAN 192.168.73.0/24 上的主机。
您的客户端不在 192.168.73.0/24 上,因此权限被拒绝。解决方案是修改/etc/exports
您的服务器以包含对 OpenVPN 子网的访问。
对于 NFS v3,我会做类似的事情,但我不知道 NFS v4 还需要多少:
/media/share/kdab 192.168.73.0/24 172.27.232.0/23
/media/share/jjcasmar 192.168.73.0/24 172.27.232.0/23
同样,对于 NFS v3,我会运行,exportfs -var
但我不知道是否仍然需要(我从未使用过 NFS v4 - 太复杂,没有明显的收益)。