Questa pagina mostra come impostare le porte per i demoni statd
e nlockmgr
sulle VM client per semplificare la configurazione del firewall.
Filestore utilizza i demoni nlockmgr
e statd
per attivare il blocco dei file. Le porte di questi servizi devono essere esposte correttamente sulle VM client tramite regole firewall in modo che i client possano utilizzare correttamente le serrature. Ti consigliamo di impostare le porte statd
e nlockmgr
in modo che siano coerenti su tutte le VM client, facilitando la configurazione delle regole del 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 della porta
Per controllare i valori attualmente impostati per le porte statd
e nlockmgr
, esegui i seguenti comandi sull'istanza VM client. Se i file non esistono o se le opzioni non hanno valori, le porte non sono impostate. In questo caso, ai daemon vengono assegnate dinamicamente porte disponibili arbitrarie.
Debian/Ubuntu
Per determinare la porta
statd
, esegui il seguente comando e controlla il valoreSTATDOPTS
:cat /etc/default/nfs-common
Per determinare la porta
nlockmgr
, esegui il seguente comando e controlla i valorinlm_tcpport
enlm_udpport
:cat /etc/modprobe.d/lock.conf
RHEL/CentOS
Per determinare la porta
statd
, esegui il seguente comando e controlla il valoreSTATD_PORT
:cat /etc/sysconfig/nfs
Per determinare la porta
nlockmgr
, esegui il seguente comando e controlla i valorinlm_tcpport
enlm_udpport
:cat /etc/modprobe.d/lock.conf
SUSE
Esegui questo comando:
cat /etc/sysconfig/nfs
La porta statd
è indicata in STATD_PORT
e la porta nlockmgr
è elencata in LOCKD_TCPPORT
e LOCKD_UDPPORT
.
Windows
L'impostazione delle porte NFS non è richiesta su Windows.
Impostare le porte
Per impostare le porte statd
e nlockmgr
, esegui i comandi seguenti sull'istanza VM 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 scelte comuni. Puoi utilizzare porte diverse in base alla configurazione della rete. In questo caso, le regole del 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 delle porte NFS non è richiesta su Windows.
Verifica che le porte siano aperte
Per verificare che le porte NFS siano state aperte correttamente, completa i seguenti passaggi.
Installa le seguenti dipendenze.
Debian/Ubuntu
Nella riga di comando, inserisci il seguente comando:
sudo apt install nfs-common tcpdump tshark
RHEL/CentOS
Nella riga di comando, inserisci il seguente comando:
sudo yum install nfs-utils tcpdump wireshark
SUSE
Nella 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 al suo interno il seguente script e 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, altrimenti aggiungisudo
all'inizio.
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, altrimenti aggiungisudo
all'inizio.INSTANCE_IP
: l'indirizzo IP dell'istanza 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 del firewall.
- Scopri di più sui requisiti delle risorse di rete e IP per l'utilizzo di Filestore.