NFS: Mit allen Clients außer einem teilen

NFS: Mit allen Clients außer einem teilen

Ich möchte einen Ordner mit allen Clients im Netzwerk teilen, außer mit einem. Dies ist meine aktuelle /etc/exportsDatei:

/opt/resources     *(rw,async)

Was muss ich hinzufügen, um den Client zu blockieren, 192.168.1.24ohne dass die Adressen aller anderen autorisierten Clients angegeben werden müssen?

Antwort1

Mir ist kein NFS-Server bekannt, der negative Muster in der exportsDatei akzeptiert.

Sie können Netzmasken verwenden, um mehrere Clients gleichzeitig abzudecken, wenn Sie IP-Adressen auflisten (Sie können keine Platzhaltermuster für IP-Adressen verwenden). Beispielsweise entspricht die folgende Zeile 192.168.1.* außer 192.168.1.24. Ja, es ist mühsam.

/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)

Sie können eine Überlastung der Datei und eine mögliche Duplizierung vermeiden, exportsindem Sie einenNIS-Netzgruppe. Allerdings müssen Sie in der Netgroup-Datei alle Hosts in allen Listen auflisten.

Wenn Sie keine zufriedenstellende Möglichkeit finden, die Zugriffslisten für jeden exportierten Baum zu beschreiben, möchten Sie die Datei hostsoder möglicherweise automatisch generieren netgroup.

Antwort2

Soweit ich weiß, NFSgibt es keine Möglichkeit, einen bestimmten Client abzulehnen (denn wenn der Client nicht im exportsEintrag aufgeführt ist, kann er nicht auf die freigegebene Ressource zugreifen).

In Ihrem Fall können Sie, denke ich, host.denyeinem Client den Zugriff auf die NFSFreigabe verweigern. Fügen Sie eine Zeile hinzu /etc/host.deny:

portmap:192.168.1.24

Dies ist natürlich keine perfekte Lösung, da der aufgeführte Client /etc/host.denynicht auf die gemeinsam genutzten Ressourcen anderer NFSServer zugreifen kann.

Antwort3

Eine andere Möglichkeit wäre die Verwendungipsetmit iptables. ipset ist in den meisten Linux-Basis-Repos verfügbar.

Sie können ein IPset von IP-Adressen erstellen, indem Sie beispielsweise Folgendes verwenden:

ipset create serverblacklist hash:net
ipset -A serverblacklist 192.168.1.24

...und füge eine solche Regel hinzu, um die IPset-Tabelle 'serverblacklist' IPs zu blockieren-

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

Ebenso könnten Sie eine Whitelist der zuzulassenden IPs und einen IPtables-Eintrag erstellen, um diese explizit zuzulassen, je nachdem, was am zweckmäßigsten ist.

verwandte Informationen