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. Однако в файле netgroup вам необходимо будет перечислить все хосты во всех списках.

Если вы не можете найти удовлетворительный способ описания списков доступа для каждого экспортированного дерева, вы можете автоматически сгенерировать файл hostsили netgroup.

решение2

Насколько мне известно, NFSнет возможности запретить указанному клиенту (потому что если клиент не указан в exportsзаписи, он не сможет получить доступ к общему ресурсу).

В вашем случае, я думаю, вы можете использовать, host.denyчтобы запретить клиенту доступ к NFSобщему ресурсу. Добавьте строку в /etc/host.deny:

portmap:192.168.1.24

Это, конечно, не идеальное решение, поскольку клиент, указанный в списке, /etc/host.denyне может получить доступ ни к каким другим общим ресурсам на NFSсервере.

решение3

Другой способ — использоватьipsetс iptables. ipset доступен в большинстве базовых репозиториев Linux.

Вы можете создать IP-набор IP-адресов, используя, например,

ipset create serverblacklist hash:net
ipset -A serverblacklist 192.168.1.24

...и добавьте такое правило, чтобы заблокировать IP-адреса таблицы ipset 'serverblacklist'-

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

Аналогичным образом вы можете создать белый список разрешенных IP-адресов и запись в IPtables, чтобы явно разрешить их, в зависимости от того, что наиболее целесообразно.

Связанный контент