
Ich möchte einen Ordner mit allen Clients im Netzwerk teilen, außer mit einem. Dies ist meine aktuelle /etc/exports
Datei:
/opt/resources *(rw,async)
Was muss ich hinzufügen, um den Client zu blockieren, 192.168.1.24
ohne dass die Adressen aller anderen autorisierten Clients angegeben werden müssen?
Antwort1
Mir ist kein NFS-Server bekannt, der negative Muster in der exports
Datei 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, exports
indem 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 hosts
oder möglicherweise automatisch generieren netgroup
.
Antwort2
Soweit ich weiß, NFS
gibt es keine Möglichkeit, einen bestimmten Client abzulehnen (denn wenn der Client nicht im exports
Eintrag aufgeführt ist, kann er nicht auf die freigegebene Ressource zugreifen).
In Ihrem Fall können Sie, denke ich, host.deny
einem Client den Zugriff auf die NFS
Freigabe 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.deny
nicht auf die gemeinsam genutzten Ressourcen anderer NFS
Server 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.