Problem
Das Mounten der nfs-Freigabe vom CentOS/RHEL NFS-Server auf einem NFS-Client gibt den unten gezeigten Fehler aus:
# mount -t nfs x.x.x.x:/share /mnt mount.nfs: access denied by server while mounting x.x.x.x:/share
Sie können versuchen, den Befehl mount mit der Option verbose auszuführen, um einen detaillierten Fehler zu diesem Problem zu erhalten.
# mount -t nfs -vvvv server.example.com:/share /mnt mount.nfs: timeout set for Fri Mar 9 17:56:57 2018 mount.nfs: trying text-based options 'vers=4.1,addr=x.x.x.x,clientaddr=x.x.x.x' mount.nfs: mount(2): Protocol not supported mount.nfs: trying text-based options 'vers=4.0,addr=x.x.x.x,clientaddr=x.x.x.x' mount.nfs: mount(2): Protocol not supported mount.nfs: trying text-based options 'addr=x.x.x.x' mount.nfs: prog 100003, trying vers=3, prot=6 mount.nfs: trying x.x.x.x prog 100003 vers 3 prot TCP port 2049 mount.nfs: prog 100005, trying vers=3, prot=17 mount.nfs: trying x.x.x.x prog 100005 vers 3 prot UDP port 300 mount.nfs: mount(2): Permission denied mount.nfs: access denied by server while mounting server.example.com:/share
Lösung
Dies ist ein allgemeines Problem beim NFS-Mounting beim Client und kann aufgrund vieler Probleme auftreten. Nachfolgend sind einige der am häufigsten auftretenden Probleme aufgeführt.
1. Versuchen Sie das Mounten mit NFSv3
Manchmal unterstützt der NFS-Server möglicherweise nur NFSv3-Verbindungen. Standardmäßig verwendet der Mount-Befehl NFSv4, was zu dem Fehler führen kann. Um dies zu vermeiden, geben Sie beim Mounten der Freigabe NFSv3 an.
# mount -t nfs -o nfsvers=3 x.x.x.x:/share /mnt
2. Überprüfen Sie /etc/exports auf korrekte Freigabeoptionen
Stellen Sie sicher, dass /etc/exports korrekt auf die korrekten NFS-Client-Informationen verweist, um Zugriff zu gewähren. Einige NFS-Server erfordern, dass der NFS-Clientname in IP auflösbar ist, daher sollte er über DNS auflösbar oder in /etc/hosts des NFS-Servers angegeben sein. Das Format von /etc/exports Datei ist:
dir client1 (options) [client2(options)...]
Zu den Client-Optionen gehören (Standardwerte werden zuerst aufgeführt):
ro / rw :
a) ro :Clients nur Lesezugriff auf die Freigabe gewähren.
b) rw :Clients Lese-/Schreibzugriff auf die Freigabe gewähren.
sync / async :
a) sync :Der NFS-Server antwortet auf die Anfrage erst, nachdem Änderungen, die durch vorherige Anfragen vorgenommen wurden, auf die Festplatte geschrieben wurden.
b) async :gibt an, dass der Server nicht warten muss.
wdelay / no_wdelay
a) wdelay :Der NFS-Server verzögert das Festschreiben von Schreibanfragen, wenn er vermutet, dass eine weitere Schreibanfrage unmittelbar bevorsteht.
b) no_wdelay :Verwenden Sie diese Option, um die Verzögerung zu deaktivieren. Die Option no_wdelay kann nur aktiviert werden, wenn standardmäßig sync Option ist aktiviert.
no_all_squash / all_squash :
a) no_all_squash :ändert nicht die Zuordnung von entfernten Benutzern.
b) all_squash :um alle entfernten Benutzer einschließlich root zu squashen.
root_squash / no_root_squash :
a) root_squash :verhindern, dass remote verbundene Root-Benutzer Root-Zugriff haben. Effektives Squashing von Remote-Root-Privilegien.
b) no_root_squash :Root-Squashing deaktivieren.
Beispiel:
# vi /etc/exports /test nfs_client(rw)
3. Überprüfen Sie die NFS-Serverberechtigungen
– Es könnte ein Problem mit dem NFS-Server geben, der die NFS-Freigabe teilt. Versuchen Sie, die problematische Freigabe auf einem anderen NFS-Client zu mounten, um die Möglichkeit eines Problems auf dem NFS-Server auszuschließen.
– Setzen Sie die Berechtigung auf (ro,no_root_squash,sync) für den NFS-Export auf Serverseite und führen Sie den Befehl aus:
# exportfs -r
Versuchen Sie dann, das NFS-Freigabeverzeichnis zu mounten. Wenn Sie den NFS-Client in /etc/exports nach Domäne oder Hostname angeben, stellen Sie sicher, dass der Domänenname der richtigen IP zugeordnet ist, einem falschen Eintrag in /etc/hosts könnte beispielsweise dazu führen, dass der Zugriff verweigert wird.
4. Verwendung von tcpdump
In sehr seltenen Fällen müssen Sie möglicherweise tcpdump verwenden, um tcpdump der Mount-Operation zu erfassen. Führen Sie zuerst den folgenden Befehl aus, um mit der Erfassung der Netzwerkpakete zu beginnen. Starten Sie in einem anderen Terminal die NFS-Mount-Operation.
# tcpdump -s0 -i [eth#] host [nfs_server_ip] -w /tmp/tcpdump.pcapFehlerbehebung bei häufigen NFS-Problemen unter Linux
CentOS / RHEL 7 :Konfigurieren eines NFS-Servers und NFS-Clients