将 nfs 导出到本地 ip 范围内的设备,无需指定本地 ip

将 nfs 导出到本地 ip 范围内的设备,无需指定本地 ip

我有一个包含多个树莓派的系统,其中一个是“主”设备,它必须将 nfs 导出到系统中的多个“从”设备。

该系统将连接到最终用户网络;最终用户将能够指定 pi 必须通信的 IP 子网范围。

为了减少最终用户的设置复杂性,是否可以在 /etc/exports 中指定仅与 pi 的本地 IP 地址共享?

就像是:

/home      local-ip/255.255.255.0(ro)

要明确的是:如果最终用户将 pi 的 ip 设置为 10.0.1.x 范围或 192.168.5.x 范围,那么导出是否可以自动使用此范围而无需修改 /etc/exports?我不想导出到所有 ip。

其他信息:用户在使用时无法与系统通信。pi 的 SD 卡有一个小型 FAT 分区,最终用户可以将其安装在 Windows 计算机中并修改由 /etc/network/interfaces 提供的接口文件,以允许他们更改 ip。/etc/exports 似乎不支持从其他文件获取来源。

答案1

你是对的,/etc/exports无法通过常规方法获取 - 但是你可以编写文件内容脚本:

#!/bin/bash
ip_info=$(ip a | grep inet | grep -v "127.0.0.1" | cut -d " " -f 6)
range=$(echo $ip_info | sed 's/\.[0-9]\+\//\.0\//g')
echo "/home/              $range(ro)" > /etc/exports
exportfs
/etc/init.d/nfs-kernel-server restart

将其放入您最喜欢的编辑器中/root/set_nfs_exports.sh并使其可执行

chmod +x /root/set_nfs_exports.sh

并在网络接口启动后执行

ln -s /root/set_nfs_exports.sh /etc/network/if-up.d/export-nfs

希望这可以帮助

相关内容