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 WertSTATDOPTSan:cat /etc/default/nfs-commonUm den
nlockmgr-Port zu ermitteln, führen Sie den folgenden Befehl aus und sehen Sie sich die Wertenlm_tcpportundnlm_udpportan: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_PORTan:cat /etc/sysconfig/nfsUm den
nlockmgr-Port zu ermitteln, führen Sie den folgenden Befehl aus und sehen Sie sich die Wertenlm_tcpportundnlm_udpportan: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-commonzur Bearbeitung.sudo nano /etc/default/nfs-commonLegen Sie die Option
STATDOPTSfest: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.confLegen Sie die Optionen
nlm_tcpportundnlm_udpportfest:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045Speichern Sie die Datei und schließen Sie sie.
RHEL/CentOS
Stellen Sie den
statd-Port ein:Öffnen Sie die Datei
/etc/sysconfig/nfszur Bearbeitung.sudo nano /etc/sysconfig/nfsLegen Sie die Option
STATD_PORTfest:STATD_PORT=2046Speichern 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.confLegen Sie die Optionen
nlm_tcpportundnlm_udpportfest:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045Speichern Sie die Datei und schließen Sie sie.
SUSE
Stellen Sie die Ports statd und nlockmgr ein:
Öffnen Sie die Datei
/etc/sysconfig/nfszur Bearbeitung.sudo nano /etc/sysconfig/nfsLegen Sie die Optionen
STATD_PORT,LOCKD_TCPPORTundLOCKD_UDPPORTfest:STATD_PORT=2046 LOCKD_TCPPORT=4045 LOCKD_UDPPORT=4045Speichern 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 tsharkRHEL/CentOS
Geben Sie in der Befehlszeile den folgenden Befehl ein:
sudo yum install nfs-utils tcpdump wiresharkSUSE
Geben Sie in der Befehlszeile den folgenden Befehl ein:
sudo zypper install nfs-client tcpdump wiresharkWindows
Dieser Bestätigungsvorgang 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_PATHErsetzen Sie Folgendes:
SCRIPT_PATH: Pfad zur Scriptdatei Dieser Befehl sollte als Root ausgeführt werden. Andernfalls fügen Siesudoan den Anfang des Befehls ein.
Geben Sie den folgenden Befehl ein:
SCRIPT_PATH INSTANCE_IP SHARE_NAMEErsetzen Sie Folgendes:
SCRIPT_PATH: Pfad zur Scriptdatei Dieser Befehl sollte als Root ausgeführt werden. Andernfalls fügen Siesudoan 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