Questa pagina mostra come impostare le porte per i daemon statd
e nlockmgr
nelle VM client per semplificare la configurazione del firewall.
Filestore utilizza i daemon nlockmgr
e statd
per abilitare il
blocco dei file. Le porte per questi servizi devono essere esposte correttamente sulle VM client tramite regole firewall in modo che i client possano utilizzare i blocchi correttamente. Ti consigliamo di impostare le porte statd
e nlockmgr
in modo che siano coerenti su tutte le VM client, semplificando la configurazione delle regole firewall in entrata.
Per ulteriori informazioni su come determinare se devi configurare una regola firewall per la rete VPC, consulta Configurare le regole firewall.
Controlla le impostazioni del trasferimento
Per verificare su quali valori sono attualmente impostate le porte statd
e nlockmgr
, esegui i comandi seguenti sull'istanza VM del client. Se i file non esistono o se le opzioni non hanno valori, le porte non vengono impostate. In quel caso, ai daemon vengono assegnate dinamicamente porte arbitrarie disponibili.
Debian/Ubuntu
Per determinare la porta
statd
, esegui il comando seguente e osserva il valoreSTATDOPTS
:cat /etc/default/nfs-common
Per determinare la porta
nlockmgr
, esegui il comando seguente e osserva i valorinlm_tcpport
enlm_udpport
:cat /etc/modprobe.d/lock.conf
RHEL/CentOS
Per determinare la porta
statd
, esegui il comando seguente e osserva il valoreSTATD_PORT
:cat /etc/sysconfig/nfs
Per determinare la porta
nlockmgr
, esegui il comando seguente e osserva i valorinlm_tcpport
enlm_udpport
:cat /etc/modprobe.d/lock.conf
SUSE
Esegui questo comando:
cat /etc/sysconfig/nfs
La porta statd
è elencata sotto STATD_PORT
e la porta nlockmgr
è elencata sotto LOCKD_TCPPORT
e LOCKD_UDPPORT
.
Windows
L'impostazione di porte NFS non è obbligatoria su Windows.
Imposta porte
Per impostare le porte statd
e nlockmgr
, esegui i comandi seguenti sull'istanza VM del client. Questi esempi utilizzano l'editor di testo nano
, ma puoi utilizzare qualsiasi editor di testo. Questi esempi utilizzano anche 2046 come porta per statd
e 4045 come porta per nlockmgr
perché questi valori sono opzioni comuni. Puoi utilizzare porte diverse in base alla configurazione della rete. In questo caso, le regole firewall in entrata devono consentire il traffico alle porte specifiche che utilizzi.
Debian/Ubuntu
Imposta la porta
statd
:Apri il file
/etc/default/nfs-common
per la modifica:sudo nano /etc/default/nfs-common
Imposta l'opzione
STATDOPTS
:STATDOPTS="-p 2046"
Salva il file ed esci.
Imposta la porta
nlockmgr
:Crea il file
/etc/modprobe.d/lock.conf
:sudo nano /etc/modprobe.d/lock.conf
Imposta le opzioni
nlm_tcpport
enlm_udpport
:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Salva il file ed esci.
RHEL/CentOS
Imposta la porta
statd
:Apri il file
/etc/sysconfig/nfs
per la modifica:sudo nano /etc/sysconfig/nfs
Imposta l'opzione
STATD_PORT
:STATD_PORT=2046
Salva il file ed esci.
Imposta la porta
nlockmgr
:Crea il file
/etc/modprobe.d/lock.conf
:sudo nano /etc/modprobe.d/lock.conf
Imposta le opzioni
nlm_tcpport
enlm_udpport
:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Salva il file ed esci.
SUSE
Imposta le porte statd
e nlockmgr
:
Apri il file
/etc/sysconfig/nfs
per la modifica:sudo nano /etc/sysconfig/nfs
Imposta le opzioni
STATD_PORT
,LOCKD_TCPPORT
eLOCKD_UDPPORT
:STATD_PORT=2046 LOCKD_TCPPORT=4045 LOCKD_UDPPORT=4045
Salva il file ed esci.
Windows
L'impostazione di porte NFS non è obbligatoria su Windows.
Verificare che le porte siano aperte
Per verificare che le porte NFS siano state aperte correttamente, completa i passaggi seguenti.
Installa le dipendenze seguenti.
Debian/Ubuntu
Dalla riga di comando, inserisci il seguente comando:
sudo apt install nfs-common tcpdump tshark
RHEL/CentOS
Dalla riga di comando, inserisci il seguente comando:
sudo yum install nfs-utils tcpdump wireshark
SUSE
Dalla riga di comando, inserisci il seguente comando:
sudo zypper install nfs-client tcpdump wireshark
Windows
Questa procedura di verifica non è supportata su Windows.
Crea un file di script denominato
verify-nfs-port-script.sh
, copia e incolla il seguente script al suo interno, quindi salvalo localmente sulla tua macchina. Prendi nota della posizione del file e salvalo per il passaggio successivo.#!/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}
Inserisci questo comando:
chmod +x SCRIPT_PATH
Sostituisci quanto segue:
SCRIPT_PATH
: il percorso in cui si trova il file dello script. Questo comando deve essere eseguito come root; in caso contrario, aggiungisudo
all'inizio del comando.
Inserisci questo comando:
SCRIPT_PATH INSTANCE_IP SHARE_NAME
Sostituisci quanto segue:
SCRIPT_PATH
: il percorso in cui si trova il file dello script. Questo comando deve essere eseguito come root; in caso contrario, aggiungisudo
all'inizio del comando.INSTANCE_IP
: l'indirizzo IP dell'istanza di FilestoreSHARE_NAME
: il nome della condivisione file
Se la porta è aperta, lo script restituisce la seguente risposta:
The NLM GRANT message is working properly!
Se la porta non è aperta, lo script restituisce il seguente errore:
The NLM GRANT message is not working properly!
Passaggi successivi
- Configura le regole firewall.
- Scopri di più sui requisiti di rete e delle risorse IP per l'utilizzo di Filestore.