NFS: 1つを除くすべてのクライアントと共有

NFS: 1つを除くすべてのクライアントと共有

1 つのクライアントを除くすべてのネットワーク クライアントとフォルダーを共有したいです。現在の/etc/exportsファイルは次のとおりです。

/opt/resources     *(rw,async)

192.168.1.24他のすべての承認済みクライアントのアドレスを記載する必要なくクライアントを防止するには、何を追加すればよいですか?

答え1

ファイル内の負のパターンを受け入れる NFS サーバーは知りませんexports

IP アドレスをリストする場合、ネットマスクを使用して一度に複数のクライアントをカバーできます (IP アドレスにワイルドカード パターンは使用できません)。たとえば、次の行は 192.168.1.24 を除く 192.168.1.* に一致します。はい、面倒です。

/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 ネットグループただし、ネットグループ ファイルでは、すべてのリスト内のすべてのホストをリストする必要があります。

エクスポートされた各ツリーのアクセス リストを記述する適切な方法が見つからない場合は、hostsまたはnetgroupファイルを自動的に生成することをお勧めします。

答え2

私の知る限り、NFS指定されたクライアントを拒否するオプションはありません (クライアントがexportsエントリにリストされていない場合、共有リソースにアクセスできないため)。

あなたの場合、host.denyクライアントのNFS共有へのアクセスを拒否するために を使用できると思います。 に次の行を追加します/etc/host.deny:

portmap:192.168.1.24

もちろん、これは完璧な解決策ではありません。リストされているクライアントは、サーバー/etc/host.deny内の他の共有リソースにアクセスできないためです。NFS

答え3

もう一つの方法はipsetiptables を使用します。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 エントリを作成することもできます。

関連情報