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

AFAIK,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 條目來明確允許它們,具體取決於什麼是最方便的。

相關內容