NFS:与除一个之外的所有客户端共享

NFS:与除一个之外的所有客户端共享

我想与网络上的所有客户端(除了一个客户端)共享一个文件夹。这是我当前的/etc/exports文件:

/opt/resources     *(rw,async)

我应该添加什么来防止客户192.168.1.24无需提及所有其他授权客户的地址?

答案1

我不知道有哪个 NFS 服务器接受exports文件中的负模式。

如果您列出 IP 地址,则可以使用网络掩码同时覆盖多个客户端(不能对 IP 地址使用通配符模式)。例如,以下行匹配 192.168.1.*(192.168.1.24 除外)。是的,这很乏味。

/opt/resources 192.168.1.0/28(rw,async) 192.168.1.16/29(rw,async) 192.168.1.25(rw,async) 192.168.1.26/31(rw,async) 192.168.1.28/30(rw,async) 192.168.1.32/27(rw,async)  192.168.1.64/26(rw,async) 192.168.1.128/25(rw,async)

您可以exports使用以下命令来避免文件混乱和可能的重复NIS网络组。但是,在网络组文件中,您将需要列出所有列表中的所有主机。

如果您找不到令人满意的方法来描述每个导出树的访问列表,您可能需要自动生成hostsnetgroup文件。

答案2

据我所知,NFS没有任何选项可以拒绝指定的客户端(因为如果客户端未在exports条目中列出,则它无法访问共享资源)。

就您而言,我认为您可以用来host.deny拒绝客户端访问NFS共享。添加一行/etc/host.deny

portmap:192.168.1.24

当然,这不是一个完美的解决方案,因为列出的客户端/etc/host.deny无法访问NFS服务器中任何其他共享资源。

答案3

另一种方法是使用IP集与 iptables。 ipset 在大多数 Linux 基础存储库中都可用。

您可以使用以下命令创建 IP 地址的 ipset:

ipset create serverblacklist hash:net
ipset -A serverblacklist 192.168.1.24

...并添加这样的规则来阻止 ipset 表“serverblacklist”IP-

iptables -A INPUT -p tcp -m set --match-set serverblacklist src -j DROP

同样,您还可以创建一个允许的 IP 白名单和一个 IPtables 条目来明确允许它们,具体取决于什么是最方便的。

相关内容