在防火墙之后运行macOS的NFS服务器¶
警告
虽然参考 在防火墙之后运行NFS服务器 设置固定端口,应该也能实现 SSH隧道 方式访问 macOS 输出的NFS共享目录。但是实践还是没有成功,只能暂且记录以备后续再挑战…
我在 (正在探索)Docker Desktop for mac部署kind容器通过 SSH Tunnel 使用共享NFS卷 部署 SSH隧道 / SSH Tunneling: 远程服务端口转发 实现类似 在防火墙之后运行NFS服务器 架构,让运行在 Docker Desktop 的Dcoker容器能够访问物理主机 macOS 的 NFS 共享目录。
端口 |
协议 |
说明 |
---|---|---|
111 |
udp |
|
|
tcp |
|
980 |
udp |
|
|
tcp |
|
976 |
udp |
|
|
tcp |
|
2049 |
udp |
|
|
tcp |
|
789 |
udp |
|
|
tcp |
|
615 |
udp |
|
|
tcp |
|
固定NFS服务端口¶
备注
NFS穿透防火墙的难点在于默认 rpcbind
是随机分配给客户端访问的服务端口( rquotad
/ lockd
/ mountd
/ statd
),这导致防火墙往往没有提供对应随机端口开放阻塞了NFS客户端请求连接。
在 RedHat Linux (如 Fedora ) 系统上 在防火墙之后运行macOS的NFS服务器 略有区别, macOS 使用配置文件
/etc/nfs.conf
来设置NFS,详细参数可以查看man nfs.conf
:
# 参考 man nfs.conf
nfs.server.rquota.port = 875
nfs.server.mount.port = 892
nfs.lockd.port = 32803
nfs.lockd.send_using_tcp = 1
nfs.statd.port = 662
nfs.statd.send_using_tcp = 1
重启nfsd:
nfsd restart
检查
rpcinfo -p
:
program vers proto port
100000 2 udp 111 rpcbind
100000 3 udp 111 rpcbind
100000 4 udp 111 rpcbind
100000 2 tcp 111 rpcbind
100000 3 tcp 111 rpcbind
100000 4 tcp 111 rpcbind
100024 1 udp 980 status
100024 1 tcp 1021 status
100021 0 udp 976 nlockmgr
100021 1 udp 976 nlockmgr
100021 3 udp 976 nlockmgr
100021 4 udp 976 nlockmgr
100021 0 tcp 1017 nlockmgr
100021 1 tcp 1017 nlockmgr
100021 3 tcp 1017 nlockmgr
100021 4 tcp 1017 nlockmgr
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100003 2 tcp 2049 nfs
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100003 3 tcp 2049 nfs
100005 1 udp 892 mountd
100005 3 udp 892 mountd
100005 1 tcp 892 mountd
100005 3 tcp 892 mountd
备注
虽然 /etc/nfs.conf
配置了 nfs.lockd.port
和 nfs.statd.port
端口,但是没有观察到 status
和 nlockmgr
监听这两个指定端口,让我很迷惑
执行挂载:
mkdir /studio
mount -t nfs -vvvv -o vers=3,tcp 172.22.0.12:/Users/huataihuang/docs/studio /studio
奔溃 输出还是失败:
mount.nfs: timeout set for Thu Feb 2 17:27:37 2023
mount.nfs: trying text-based options 'vers=3,tcp,addr=172.22.0.12'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 172.22.0.12 prog 100003 vers 3 prot TCP port 2049
mount.nfs: portmap query failed: RPC: Unable to receive - Connection reset by peer
mount.nfs: Connection reset by peer
参考¶
Running NFS Behind a Firewall 更详细的信息参考(需要RedHat支持账号)