Port mana yang harus saya buka di firewall untuk menggunakan NFS?


73

Saya menjalankan Ubuntu 11.10 - mengatur NFS untuk berbagi direktori di antara banyak server lain. Port mana yang harus dibuka di firewall?


6
Itu tergantung pada versi protokol yang ingin Anda gunakan. NFS 4 hanya membutuhkan 2.049 sementara versi yang lebih lama membutuhkan lebih.
lzap

Jawaban:


97
$ rpcinfo -p | grep nfs

Port 111 (TCP dan UDP) dan 2049 (TCP dan UDP) untuk server NFS.

Ada juga port untuk Cluster dan status klien (Port 1110 TCP untuk yang sebelumnya, dan 1110 UDP untuk yang terakhir) serta port untuk manajer kunci NFS (Port 4045 TCP dan UDP). Hanya Anda yang dapat menentukan port mana yang perlu Anda izinkan tergantung pada layanan mana yang dibutuhkan lintas gateway.


4
Saya tidak tahu tentang rpcinfo, itu cukup berguna. Saya tidak melihat port 111 dengan grep nfs, tetapi saya berhenti grep untuk mengetahui bahwa 111 adalah untuk portmapper. Juga senang tahu! (dan seperti yang Anda sebutkan, perlu)
kenny

@KennyYounger rpcinfo juga berguna. Jika ini menjawab pertanyaan Anda, jangan lupa menandainya sebagai jawaban untuk kepentingan pemirsa di masa depan.
Wesley

6
Anda perlu me-mount terbuka saat pertama kali me-mount sistem file. Ini berjalan pada port dinamis, jadi tidak akan selalu sama. Saya memasang tautan ke panduan dalam jawaban saya.
bonsaiviking

1
Terima kasih @bonsaiviking. Info penting untuk proses ini. Saya membatalkan jawaban Anda!
kenny

Bisakah Anda memberikan deskripsi singkat tentang apa yang dilakukan oleh layanan tersebut ("status cluster dan klien", "manajer kunci NFS") dan kapan layanan itu diperlukan? Jika layanan tersebut diblokir oleh firewall, akankah server dan klien NFS menurun dengan anggun, atau hanya mengunci menunggu jawaban?
Nathan Craike

27

Selain 111 untuk portmapper dan 2049 untuk nfs, Anda harus mengizinkan port mountd dan mungkin rquotad, lockd, dan statd, yang semuanya dapat menjadi dinamis. Panduan keamanan NFS yang luar biasa ini merekomendasikan untuk mengubah skrip startup dan konfigurasi modul kernel untuk memaksa mereka menggunakan port statis.

Selain panduan di atas, yang memiliki bagian tentang firewall , lihat jawaban saya untuk pertanyaan lain tentang pengerasan NFS.


7
Kami benar-benar lebih suka konten, bukan petunjuk ke konten. Sebuah précis dari konten dengan tautan juga ok dan lebih disukai daripada sebuah tautan.
user9517 mendukung GoFundMonica

2
Tidak yakin tentang 2012 tetapi rekomendasi di tautan tampaknya sudah usang. NFS lebih dari TCP lebih disukai karena berbagai alasan dan NFS lebih dari UDP dapat menyebabkan korupsi data diam pada tautan cepat karena keterbatasan protokol. Panduan keamanan tidak menyebutkan Kerberos / GSS dll.
Maciej Piechotka

Sehubungan dengan mountd, hidup jauh lebih mudah jika Anda mengkonfigurasi ulang untuk memastikan port mountd diperbaiki. Pada sistem debian, edit nilai RPCMOUNTDOPTS ke sesuatu seperti RPCMOUNTDOPTS="--port 34567"dan kemudian mulai kembali dengan sysctl --systemdan/etc/init.d/nfs-kernel-server restart
user45793

14

Saya menemukan petunjuk yang bermanfaat untuk masalah saya di halaman ini, tetapi tidak ada resep yang mudah diikuti. Jadi, inilah resep saya.

TL; DR - harus mengizinkan port nfs (111, 2049) dan mountd port setelah memperbaikinya.

Instruksi:


Menyiapkan port tetap untuk mountd

gksudo gedit /etc/default/nfs-kernel-server
  • berkomentar di baris ini: RPCMOUNTDOPTS=--manage-gids
  • tambahkan ini sebagai gantinya: RPCMOUNTDOPTS="--port 33333"

Atau nomor port lainnya.

sekarang coba reset nfs menggunakan:

sudo service nfs-kernel-server restart

Dan uji apakah itu membantu menggunakan:

rpcinfo -p | grep "tcp.*mountd"

Bagi saya itu tidak cukup, tetapi restart penuh memperbaiki masalah ini.

( kredit )


Menyiapkan firewall

(1) hapus aturan lama, lakukan ini secara manual atau reset jika ini hanya digunakan untuk firewall:

sudo ufw reset
sudo ufw enable

(2) tambahkan port nfs & mountd

sudo ufw allow in from 10.0.0.1/20 to any port 111 
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333

(Ubah IP lokal Anda atau " any" alih-alih 10.0.0.1/20)

Itu saja yang ada di sana.


3
Anda tidak perlu memulai ulang seluruh kotak. Sederhana sudo service nfs-config restartsebelum memulai kembali nfs-kernel-serverakan baik-baik saja.
showp1984

@ showp1984 terima kasih, saya akan mencobanya lain kali
Amir Uval

Atau jika sistem Anda menggunakan systemctl, itu systemctl restart nfs-kernel-server.service.
fbicknel

Anda juga dapat melakukan semuanya dalam satu gelombang besar: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333diikuti oleh (ok, dua gelombang besar) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Catatan port 33333 adalah per contoh di atas. Anda dapat menggunakan port lain seperti yang ditunjukkan oleh jawabannya.
fbicknel

5

Ini akan memberikan daftar semua port yang digunakan oleh semua program terkait NFS:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq

3

Dengan FERM kita dapat menggunakan Backticks untuk mendapatkan porta dari rpcinfo, misalnya:

Server:

proto tcp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}

Klien:

proto udp {saddr ($SERVER) {ACCEPT;}}  # NFS

(Jika Anda hanya akan menggunakan TCP maka Anda hanya perlu proto tcpbagian itu).


1

Sebagai catatan, saya harus menambahkan izin untuk port 111, 2049 DAN 1048 untuk konfigurasi di mana bagian NFS diekspor oleh server Windows 2008 R2 dan kliennya adalah Ubuntu 12.04.4.

Saya harap ini membantu seseorang.


2
Mungkin membantu menjelaskan mengapa Anda membutuhkan port 1048 dan bagaimana Anda menentukannya.
HBruijn

3
Terus terang, saya tidak tahu mengapa saya perlu menambahkan izin untuk 1048, tetapi menambahkan itu memecahkan masalah saya. Saya hanya ingin berbagi jika itu dapat menghemat waktu orang lain di masa depan. Saya minta maaf karena tidak dapat menjawab pertanyaan.
Erdem KAYA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.