Halaman ini menunjukkan cara menetapkan port untuk daemon statd
dan nlockmgr
di VM klien untuk mempermudah konfigurasi firewall.
Filestore menggunakan daemon nlockmgr
dan statd
untuk mengaktifkan penguncian file. Port untuk layanan ini harus diekspos dengan benar di VM klien Anda melalui aturan firewall agar klien dapat menggunakan kunci dengan benar. Sebaiknya
tetapkan port statd
dan nlockmgr
agar konsisten di semua VM klien, sehingga lebih mudah untuk mengonfigurasi aturan firewall masuk.
Untuk informasi selengkapnya tentang cara menentukan apakah Anda perlu mengonfigurasi aturan firewall untuk jaringan VPC, lihat Mengonfigurasi aturan firewall.
Memeriksa setelan port
Untuk memeriksa nilai yang ditetapkan untuk port statd
dan nlockmgr
saat ini, jalankan
perintah berikut di instance VM klien. Jika file tidak ada, atau
jika opsi tidak memiliki nilai, port tidak akan ditetapkan. Dalam hal ini, daemon secara dinamis ditetapkan ke port arbitrer yang tersedia.
Debian/Ubuntu
Untuk menentukan port
statd
, jalankan perintah berikut dan lihat nilaiSTATDOPTS
:cat /etc/default/nfs-common
Untuk menentukan port
nlockmgr
, jalankan perintah berikut dan lihat nilainlm_tcpport
dannlm_udpport
:cat /etc/modprobe.d/lock.conf
RHEL/CentOS
Untuk menentukan port
statd
, jalankan perintah berikut dan lihat nilaiSTATD_PORT
:cat /etc/sysconfig/nfs
Untuk menentukan port
nlockmgr
, jalankan perintah berikut dan lihat nilainlm_tcpport
dannlm_udpport
:cat /etc/modprobe.d/lock.conf
SUSE
Jalankan perintah berikut:
cat /etc/sysconfig/nfs
Port statd
tercantum di bagian STATD_PORT
dan port nlockmgr
tercantum di bagian LOCKD_TCPPORT
dan LOCKD_UDPPORT
.
Windows
Menetapkan port NFS tidak diperlukan di Windows.
Menetapkan port
Untuk menetapkan port statd
dan nlockmgr
, jalankan perintah berikut di
instance VM klien. Contoh ini menggunakan editor teks
nano
, tetapi Anda dapat menggunakan editor teks apa pun. Contoh ini juga menggunakan 2046 sebagai
port untuk statd
dan 4045 sebagai port untuk nlockmgr
karena nilai ini
adalah pilihan umum. Anda dapat menggunakan port yang berbeda berdasarkan konfigurasi jaringan. Dalam hal ini, aturan firewall masuk harus mengizinkan traffic ke
port tertentu yang Anda gunakan.
Debian/Ubuntu
Tetapkan port
statd
:Buka file
/etc/default/nfs-common
untuk mengedit:sudo nano /etc/default/nfs-common
Tetapkan opsi
STATDOPTS
:STATDOPTS="-p 2046"
Simpan file dan keluar.
Tetapkan port
nlockmgr
:Buat file
/etc/modprobe.d/lock.conf
:sudo nano /etc/modprobe.d/lock.conf
Tetapkan opsi
nlm_tcpport
dannlm_udpport
:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Simpan file dan keluar.
RHEL/CentOS
Tetapkan port
statd
:Buka file
/etc/sysconfig/nfs
untuk mengedit:sudo nano /etc/sysconfig/nfs
Tetapkan opsi
STATD_PORT
:STATD_PORT=2046
Simpan file dan keluar.
Tetapkan port
nlockmgr
:Buat file
/etc/modprobe.d/lock.conf
:sudo nano /etc/modprobe.d/lock.conf
Tetapkan opsi
nlm_tcpport
dannlm_udpport
:options lockd nlm_tcpport=4045 options lockd nlm_udpport=4045
Simpan file dan keluar.
SUSE
Tetapkan port statd
dan nlockmgr
:
Buka file
/etc/sysconfig/nfs
untuk mengedit:sudo nano /etc/sysconfig/nfs
Tetapkan opsi
STATD_PORT
,LOCKD_TCPPORT
, danLOCKD_UDPPORT
:STATD_PORT=2046 LOCKD_TCPPORT=4045 LOCKD_UDPPORT=4045
Simpan file dan keluar.
Windows
Menetapkan port NFS tidak diperlukan di Windows.
Memverifikasi port terbuka
Untuk memverifikasi bahwa port NFS telah dibuka dengan benar, selesaikan langkah-langkah berikut.
Instal dependensi berikut.
Debian/Ubuntu
Dari command line, masukkan perintah berikut:
sudo apt install nfs-common tcpdump tshark
RHEL/CentOS
Dari command line, masukkan perintah berikut:
sudo yum install nfs-utils tcpdump wireshark
SUSE
Dari command line, masukkan perintah berikut:
sudo zypper install nfs-client tcpdump wireshark
Windows
Proses verifikasi ini tidak didukung di Windows.
Buat file skrip bernama
verify-nfs-port-script.sh
, salin dan tempelkan skrip berikut di dalamnya, lalu simpan secara lokal ke komputer Anda. Catat lokasi file dan simpan untuk langkah berikutnya.#!/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}
Masukkan perintah berikut:
chmod +x SCRIPT_PATH
Ganti kode berikut:
SCRIPT_PATH
: jalur tempat file skrip Anda berada. Perintah ini harus dijalankan sebagai root. Jika tidak, tambahkansudo
ke awal perintah.
Masukkan perintah berikut:
SCRIPT_PATH INSTANCE_IP SHARE_NAME
Ganti kode berikut:
SCRIPT_PATH
: jalur tempat file skrip Anda berada. Perintah ini harus dijalankan sebagai root. Jika tidak, tambahkansudo
ke awal perintah.INSTANCE_IP
: alamat IP instance FilestoreSHARE_NAME
: nama berbagi file
Jika port terbuka, skrip akan menampilkan respons berikut:
The NLM GRANT message is working properly!
Jika port tidak terbuka, skrip akan menampilkan error berikut:
The NLM GRANT message is not working properly!
Langkah selanjutnya
- Mengonfigurasi aturan firewall.
- Pelajari lebih lanjut persyaratan jaringan dan resource IP untuk menggunakan Filestore.