我正在尝试通过 openvpn 隧道建立 nfs 连接。这真的很烦人,我不知道下一步该尝试什么。现在已在多个平台上进行了连接测试。使用了 debian/centos/openwrt。更改了服务器<>客户端
通过执行以下操作,“直接” nfs 连接始终可以立即工作:(此处为演示 IP)
mount -t nfs 192.168.2.1:/extroot test
但:
mount -t nfs 10.0.0.1:/extroot test
总是失败:(永远超时)
mount.nfs: Connection timed out
我也在远程 vps 上这样做了,连接立即建立。openvpn 隧道似乎没问题。Ping 正常,iperf 大于 100mbits,所以......
附上我的配置,非常欢迎任何帮助!
NFS:
/etc/exports:(此处‘*’仅用于调试)
/extroot *(rw,all_squash,insecure,async,no_subtree_check)
/etc/hosts.allow
portmap: ALL
OpenVPN:
服务器.conf:
port 6565
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 5 30
verb 3
客户端.conf:
client
tls-client
dev tun
proto udp
remote hostname.of.server portnum
resolv-retry infinite
nobind
pkcs12 /etc/openvpn/nfs.p12
verb 3
remote-cert-tls server
尝试连接时从 nfs 服务器执行 tcpdump: http://pastebin.com/2PJ2w7vB
我知道这很难读,抱歉。
答案1
好的,我明白了。@Zoredache 为我指明了正确的方向。谢谢你,我的朋友 :) !! 确实如此,mount.nfs 试图指向 localhost 而不是 vpn ip。您可以使用以下 mountopts 解决此问题。
/sbin/mount.nfs -v 10.0.0.1:/$remotepath /$localpath -o addr=10.0.0.1,clientaddr=10.0.0.6
mount.nfs 的调试输出
mount.nfs: timeout set for Sat Nov 1 08:49:42 2014
mount.nfs: trying text-based options 'clientaddr=10.0.0.6,vers=4,addr=10.0.0.1'
如果您想在 initramfs 中解决这个问题,您需要将 /sbin/mount.nfs 添加到您的 initramfs。否则,在 nfsroot 启动期间安装 nfs 的通用命令将失败。