Veja nesta página como definir as portas para os daemons statd
e nlockmgr
nas VMs do cliente para facilitar a configuração do firewall.
O Filestore usa os daemons nlockmgr
e statd
para ativar o bloqueio de
arquivos. As portas desses serviços precisam ser devidamente expostas nas VMs do
cliente por meio das regras de firewall para que os clientes possam usar os bloqueios corretamente. Recomendamos
definir as portas statd
e nlockmgr
para que sejam consistentes em todas
as VMs do cliente, facilitando a configuração das regras de firewall de entrada.
Para mais informações sobre como determinar se você precisa configurar uma regra de firewall para a rede VPC, consulte Configurar regras de firewall.
Verificar as configurações da porta
Para verificar os valores definidos para as portas statd
e nlockmgr
atualmente,
execute os comandos a seguir na instância de VM do cliente. Se os arquivos não existirem ou
se as opções não tiverem valores, as portas não serão definidas. Nesse caso, os daemons serão atribuídos dinamicamente a portas disponíveis arbitrárias.
Debian/Ubuntu
Para determinar a porta
statd
, execute o seguinte comando e observe o valorSTATDOPTS
:cat /etc/default/nfs-common
Para determinar a porta
nlockmgr
, execute o seguinte comando e observe os valoresnlm_tcpport
enlm_udpport
:cat /etc/modprobe.d/lock.conf
RHEL/CentOS
Para determinar a porta
statd
, execute o seguinte comando e observe o valorSTATD_PORT
:cat /etc/sysconfig/nfs
Para determinar a porta
nlockmgr
, execute o seguinte comando e observe os valoresnlm_tcpport
enlm_udpport
:cat /etc/modprobe.d/lock.conf
SUSE
Execute este comando:
cat /etc/sysconfig/nfs
A porta statd
está listada em STATD_PORT
, e a porta nlockmgr
está
listada em LOCKD_TCPPORT
e LOCKD_UDPPORT
.
Windows
Não é necessário definir portas NFS no Windows.
Definir portas
Para definir as portas statd
e nlockmgr
, execute os seguintes comandos na
instância de VM do cliente. Nestes exemplos, usamos o editor de texto
nano
mas é possível usar qualquer outro. Nos exemplos, também usamos 2046
como a porta para statd
e 4045 como a porta para nlockmgr
porque são as
opções comuns. É possível usar portas diferentes com base na configuração de
rede. Neste caso, as regras de firewall de entrada precisam permitir o tráfego para
as portas específicas que você usa.
Debian/Ubuntu
Defina a porta
statd
:Abra o arquivo
/etc/default/nfs-common
para edição:sudo nano /etc/default/nfs-common
Defina a opção
STATDOPTS
:STATDOPTS="-p 2046"
Salve o arquivo e saia.
Defina a porta
nlockmgr
:Crie o arquivo
/etc/modprobe.d/lock.conf
:sudo nano /etc/modprobe.d/lock.conf
Defina as opções
nlm_tcpport
enlm_udpport
:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Salve o arquivo e saia.
RHEL/CentOS
Defina a porta
statd
:Abra o arquivo
/etc/sysconfig/nfs
para edição:sudo nano /etc/sysconfig/nfs
Defina a opção
STATD_PORT
:STATD_PORT=2046
Salve o arquivo e saia.
Defina a porta
nlockmgr
:Crie o arquivo
/etc/modprobe.d/lock.conf
:sudo nano /etc/modprobe.d/lock.conf
Defina as opções
nlm_tcpport
enlm_udpport
:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Salve o arquivo e saia.
SUSE
Defina as portas statd
e nlockmgr
:
Abra o arquivo
/etc/sysconfig/nfs
para edição:sudo nano /etc/sysconfig/nfs
Defina as opções
STATD_PORT
,LOCKD_TCPPORT
eLOCKD_UDPPORT
:STATD_PORT=2046 LOCKD_TCPPORT=4045 LOCKD_UDPPORT=4045
Salve o arquivo e saia.
Windows
Não é necessário definir portas NFS no Windows.
Verificar se as portas estão abertas
Para verificar se as portas NFS foram abertas corretamente, siga estas etapas.
Instale as dependências a seguir.
Debian/Ubuntu
Na linha de comando, insira o seguinte comando:
sudo apt install nfs-common tcpdump tshark
RHEL/CentOS
Na linha de comando, insira o seguinte comando:
sudo yum install nfs-utils tcpdump wireshark
SUSE
Na linha de comando, insira o seguinte comando:
sudo zypper install nfs-client tcpdump wireshark
Windows
Esse processo de verificação não é compatível com o Windows.
Crie um arquivo de script chamado
verify-nfs-port-script.sh
, copie e cole o script a seguir nele e salve-o localmente na sua máquina. Anote o local do arquivo e salve-o para a próxima etapa.#!/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}
Digite este comando:
chmod +x SCRIPT_PATH
Substitua:
SCRIPT_PATH
: o caminho em que o arquivo de script está localizado. Ele precisa ser executado como raiz. Caso contrário, adicionesudo
ao início do comando.
Digite este comando:
SCRIPT_PATH INSTANCE_IP SHARE_NAME
Substitua:
SCRIPT_PATH
: o caminho em que o arquivo de script está localizado. Ele precisa ser executado como raiz. Caso contrário, adicionesudo
ao início do comando.INSTANCE_IP
: o endereço IP da instância do FilestoreSHARE_NAME
: o nome do compartilhamento de arquivos
Se a porta estiver aberta, o script vai retornar a seguinte resposta:
The NLM GRANT message is working properly!
Se a porta não estiver aberta, o script vai retornar o seguinte erro:
The NLM GRANT message is not working properly!
A seguir
- Configurar regras de firewall.
- Saiba mais sobre os requisitos de recursos de rede e IP para usar o Filestore.