
Я хочу поделиться папкой со всеми клиентами сети, кроме одного. Это мой текущий /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, чтобы явно разрешить их, в зависимости от того, что наиболее целесообразно.