NFS: 하나를 제외한 모든 클라이언트와 공유

NFS: 하나를 제외한 모든 클라이언트와 공유

하나를 제외하고 네트워크의 모든 클라이언트와 폴더를 공유하고 싶습니다. 이것은 내 현재 /etc/exports파일입니다.

/opt/resources     *(rw,async)

고객이 192.168.1.24다른 모든 승인된 고객의 주소를 언급할 필요가 없도록 하려면 무엇을 추가해야 합니까?

답변1

exports파일의 부정적인 패턴을 허용하는 NFS 서버는 없습니다 .

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

또 다른 방법은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 항목을 생성하여 가장 편리한 항목에 따라 이를 명시적으로 허용할 수도 있습니다.

관련 정보