Auf dieser Seite wird gezeigt, wie Sie die Ports der statd
- und nlockmgr
-Daemons auf Ihren Client-VMs festlegen, um die Firewallkonfiguration zu vereinfachen.
Filestore verwendet die Daemons nlockmgr
und statd
, um die Dateisperre zu aktivieren. Die Ports für diese Dienste müssen in den Client-VMs ordnungsgemäß über die Firewallregeln freigegeben sein, damit Clients ordnungsgemäß Sperren verwenden können. Wir empfehlen, die Ports statd
und nlockmgr
so festzulegen, dass sie auf allen Client-VMs konsistent sind, um das Konfigurieren von Firewallregeln für eingehenden Traffic zu vereinfachen.
Weitere Informationen dazu, wie Sie erkennen, ob Sie eine Firewallregel für das VPC-Netzwerk konfigurieren müssen, finden Sie unter Firewallregeln konfigurieren.
Porteinstellungen prüfen
Führen Sie die folgenden Befehle auf der Client-VM-Instanz aus, um zu prüfen, auf welche Werte die Ports statd
und nlockmgr
derzeit gesetzt sind. Wenn die Dateien nicht vorhanden sind oder die Optionen keine Werte haben, sind die Ports nicht festgelegt. In diesem Fall werden die Daemons beliebigen verfügbaren Ports dynamisch zugewiesen.
Debian/Ubuntu
Um den
statd
-Port zu ermitteln, führen Sie den folgenden Befehl aus und sehen Sie sich den WertSTATDOPTS
an:cat /etc/default/nfs-common
Um den
nlockmgr
-Port zu ermitteln, führen Sie den folgenden Befehl aus und sehen Sie sich die Wertenlm_tcpport
undnlm_udpport
an:cat /etc/modprobe.d/lock.conf
RHEL/CentOS
Um den
statd
-Port zu ermitteln, führen Sie den folgenden Befehl aus und sehen Sie sich den WertSTATD_PORT
an:cat /etc/sysconfig/nfs
Um den
nlockmgr
-Port zu ermitteln, führen Sie den folgenden Befehl aus und sehen Sie sich die Wertenlm_tcpport
undnlm_udpport
an:cat /etc/modprobe.d/lock.conf
SUSE
Führen Sie diesen Befehl aus:
cat /etc/sysconfig/nfs
Der Port statd
wird unter STATD_PORT
und der Port nlockmgr
unter LOCKD_TCPPORT
und LOCKD_UDPPORT
aufgelistet.
Windows
Unter Windows müssen keine NFS-Ports festgelegt werden.
Ports festlegen
Führen Sie die folgenden Befehle auf der Client-VM-Instanz aus, um die Ports statd
und nlockmgr
festzulegen. In diesen Beispielen wird der Texteditor nano
verwendet. Sie können aber auch einen beliebigen anderen Texteditor nutzen. In diesen Beispielen wird 2046 als Port für statd
und 4045 als Port für nlockmgr
verwendet, da dies gängige Optionen sind. Sie können je nach Netzwerkkonfiguration andere Ports verwenden. In diesem Fall müssen die Firewallregeln für eingehenden Traffic zu den von Ihnen verwendeten Ports zulassen.
Debian/Ubuntu
Stellen Sie den
statd
-Port ein:Öffnen Sie die Datei
/etc/default/nfs-common
zur Bearbeitung.sudo nano /etc/default/nfs-common
Legen Sie die Option
STATDOPTS
fest:STATDOPTS="-p 2046"
Speichern Sie die Datei und schließen Sie sie.
Stellen Sie den
nlockmgr
-Port ein:Erstellen Sie die Datei
/etc/modprobe.d/lock.conf
.sudo nano /etc/modprobe.d/lock.conf
Legen Sie die Optionen
nlm_tcpport
undnlm_udpport
fest:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Speichern Sie die Datei und schließen Sie sie.
RHEL/CentOS
Stellen Sie den
statd
-Port ein:Öffnen Sie die Datei
/etc/sysconfig/nfs
zur Bearbeitung.sudo nano /etc/sysconfig/nfs
Legen Sie die Option
STATD_PORT
fest:STATD_PORT=2046
Speichern Sie die Datei und schließen Sie sie.
Stellen Sie den
nlockmgr
-Port ein:Erstellen Sie die Datei
/etc/modprobe.d/lock.conf
.sudo nano /etc/modprobe.d/lock.conf
Legen Sie die Optionen
nlm_tcpport
undnlm_udpport
fest:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Speichern Sie die Datei und schließen Sie sie.
SUSE
Stellen Sie die Ports statd
und nlockmgr
ein:
Öffnen Sie die Datei
/etc/sysconfig/nfs
zur Bearbeitung.sudo nano /etc/sysconfig/nfs
Legen Sie die Optionen
STATD_PORT
,LOCKD_TCPPORT
undLOCKD_UDPPORT
fest:STATD_PORT=2046 LOCKD_TCPPORT=4045 LOCKD_UDPPORT=4045
Speichern Sie die Datei und schließen Sie sie.
Windows
Unter Windows müssen keine NFS-Ports festgelegt werden.
Prüfen, ob die Ports geöffnet sind
Führen Sie die folgenden Schritte aus, um zu prüfen, ob die NFS-Ports richtig geöffnet wurden.
Installieren Sie die folgenden Abhängigkeiten.
Debian/Ubuntu
Geben Sie in der Befehlszeile den folgenden Befehl ein:
sudo apt install nfs-common tcpdump tshark
RHEL/CentOS
Geben Sie in der Befehlszeile den folgenden Befehl ein:
sudo yum install nfs-utils tcpdump wireshark
SUSE
Geben Sie in der Befehlszeile den folgenden Befehl ein:
sudo zypper install nfs-client tcpdump wireshark
Windows
Dieser Bestätigungsprozess wird unter Windows nicht unterstützt.
Erstellen Sie eine Scriptdatei mit dem Namen
verify-nfs-port-script.sh
, kopieren Sie das folgende Script und fügen Sie es in die Datei ein. Speichern Sie die Datei dann lokal auf Ihrem Computer. Notieren Sie sich den Speicherort der Datei und speichern Sie sie für den nächsten Schritt.#!/bin/bash # This script is intended to run on client machines to verify that the ports # are properly open to allow the reception of NLM GRANT messages from the server. set -eu function kill_descendants() { for pid in $(ps -o pid= --ppid "$1") do kill_descendants "$pid" done if [[ $1 -ne $$ ]]; then kill "$1" 2>/dev/null | true fi } function cleanup { set +eu # Kill all background jobs and wait for it to end, makes sure locks are released kill_descendants $$ # Wait for jobs to die and locks to be released, so mount is not busy sleep 2 umount -f "$MNT1" umount -f "$MNT2" rmdir "$MNT1" 2&> /dev/null || true rmdir "$MNT2" 2&> /dev/null || true } function print_help { echo "$0 [server_ip] [mount_path]" echo -e "\t For example, if you mount a server using:" echo -e "\t\t \"mount 10.0.0.1:share /mnt/mount_point\"" echo -e "\t Run the script: " echo -e "\t\t \"$0 10.0.0.1 share\"" } if [ $# -ne 2 ]; then print_help exit 1 fi if [ $(id -u) -ne 0 ]; then echo "Failure! This script needs to run as root, use \"sudo $@\"" exit 1 fi if ! [ -x "$(command -v tshark)" ]; then echo "The 'tshark' command does not exist and is needed for the script. Please install it" exit 1 fi if ! [ -x "$(command -v tcpdump)" ]; then echo "The 'tcpdump' command does not exist and is needed for the script. Please install it" exit 1 fi SERVER_IP=$1 MOUNT_PATH=$2 MNT1=$(mktemp -d) MNT2=$(mktemp -d) trap cleanup EXIT echo "Mounting..." mount -o nosharecache "$SERVER_IP":"$MOUNT_PATH" "$MNT1" mount -o nosharecache "$SERVER_IP":"$MOUNT_PATH" "$MNT2" REC_FILE=$(mktemp /tmp/nlm_recording_XXXXXXXX.pcap) tcpdump -i any -s0 -w "$REC_FILE" "host $SERVER_IP" & TCPDUMP_PID=$! echo "Recording TCP dump to $REC_FILE" sleep 5 # wait for tcpdump to start running echo "Running test..." flock "$MNT1"/lock_file -c "echo -n \"Got first lock: \" && date && sleep 5 && echo -n \"Releasing first lock: \" && date" & sleep 2 # Wait for the first lock to actually be taken echo "Waiting for second lock: $(date)" flock "$MNT2"/lock_file -c "echo -n \"Got second lock: \" && date" sleep 2 # Wait for tcpdump to record everything kill $TCPDUMP_PID # For quick analysis inspect recording with tshark, if you don't have it just inspect with Wireshark echo "Inspecting results in $REC_FILE with TShark" tshark -r "$REC_FILE" -Y nlm # First, print the output tshark -r "$REC_FILE" -Y nlm 2>/dev/null | grep -q GRANTED EXIT_CODE=0 if [ $? -eq 0 ]; then echo "The NLM GRANT message is working properly!" EXIT_CODE=0 else echo "The NLM GRANT message is not working properly!" EXIT_CODE=1 fi echo "For debugging, please provide the printed output of the script, and $REC_FILE" exit ${EXIT_CODE}
Geben Sie den folgenden Befehl ein:
chmod +x SCRIPT_PATH
Ersetzen Sie Folgendes:
SCRIPT_PATH
: Pfad zur Scriptdatei Dieser Befehl sollte als Root ausgeführt werden. Andernfalls fügen Siesudo
an den Anfang des Befehls ein.
Geben Sie den folgenden Befehl ein:
SCRIPT_PATH INSTANCE_IP SHARE_NAME
Ersetzen Sie Folgendes:
SCRIPT_PATH
: Pfad zur Scriptdatei Dieser Befehl sollte als Root ausgeführt werden. Andernfalls fügen Siesudo
an den Anfang des Befehls ein.INSTANCE_IP
: die IP-Adresse der Filestore-InstanzSHARE_NAME
: der Name der Dateifreigabe
Wenn der Port geöffnet ist, gibt das Script die folgende Antwort zurück:
The NLM GRANT message is working properly!
Wenn der Port nicht geöffnet ist, gibt das Script den folgenden Fehler zurück:
The NLM GRANT message is not working properly!
Nächste Schritte
- Konfigurieren Sie Firewallregeln.
- Weitere Informationen zu den Netzwerk- und IP-Ressourcenanforderungen für die Verwendung von Filestore