NFS server dan firewalld

16

Saya belum menemukan dokumen slam-dunk tentang ini, jadi mari kita mulai.

Pada host CentOS 7.1, saya telah melalui linuxconfig HOW-TO , termasuk firewall-cmdentri, dan saya memiliki sistem file yang dapat diekspor.

[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
  interfaces: enp5s0
  sources: 192.168.10.0/24
  services: dhcpv6-client ipp-client mdns ssh
  ports: 2049/tcp
  masquerade: no
  forward-ports: 
  rich rules: 

[root@<server> ~]# showmount -e localhost
Export list for localhost:
/export/home/<user> *.localdomain

Namun, jika saya showmountdari klien, saya masih punya masalah.

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

Sekarang, bagaimana saya yakin ini adalah masalah firewall? Mudah. Matikan firewall. Sisi server:

[root@<server> ~]# systemctl stop firewalld

Dan sisi klien:

[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain

Mulai ulang firewalld. Sisi server:

[root@<server> ~]# systemctl start firewalld

Dan sisi klien:

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

Jadi, mari kita pergi ke kota, dengan mengadaptasi perintah iptables dari server RHEL 6 NFS BAGAIMANA ...

[root@ ~]# firewall-cmd \
>  --add-port=111/tcp \
>  --add-port=111/udp \
>  --add-port=892/tcp \
>  --add-port=892/udp \
>  --add-port=875/tcp \
>  --add-port=875/udp \
>  --add-port=662/tcp \
>  --add-port=662/udp \
>  --add-port=32769/udp \
>  --add-port=32803/tcp
success

[root@<server> ~]# firewall-cmd \
>  --add-port=111/tcp \
>  --add-port=111/udp \
>  --add-port=892/tcp \
>  --add-port=892/udp \
>  --add-port=875/tcp \
>  --add-port=875/udp \
>  --add-port=662/tcp \
>  --add-port=662/udp \
>  --add-port=32769/udp \
>  --add-port=32803/tcp \
>  --permanent
success

[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
  interfaces: enp5s0
  sources: 192.168.0.0/24
  services: dhcpv6-client ipp-client mdns ssh
  ports: 32803/tcp 662/udp 662/tcp 111/udp 875/udp 32769/udp 875/tcp 892/udp 2049/tcp 892/tcp 111/tcp
  masquerade: no
  forward-ports: 
  rich rules: 

Kali ini, saya mendapatkan pesan kesalahan yang sedikit berbeda dari klien:

[root@<client> ~]# showmount -e <server>.localdomain
rpc mount export: RPC: Unable to receive; errno = No route to host

Jadi, saya tahu saya berada di jalur yang benar. Karena itu, mengapa saya tidak bisa menemukan tutorial yang pasti tentang ini di mana saja? Saya tidak bisa menjadi orang pertama yang harus mencari tahu!

firewall-cmdEntri apa yang saya lewatkan?

Oh, satu catatan lainnya. /etc/sysconfig/nfsFile saya pada klien CentOS 6 dan server CentOS 7 belum dimodifikasi, sejauh ini. Saya lebih suka tidak harus mengubah (dan memelihara!) Mereka, jika memungkinkan.

dafydd
sumber

Jawaban:

40

Ini harus cukup:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
tom
sumber
Tidak cukup dalam kasus saya. Saya punya dua server NFS, yang pertama menyiarkan dengan benar dan berlangganan oleh kliennya, yang kedua tampaknya menyiarkan dengan baik tetapi kliennya (server pertama) tidak dapat 'memamerkan' (rpc mount export: RPC: Tidak dapat menerima; errno = Tidak ada rute ke host). Saya akan kembali ke sini jika / ketika saya menyelesaikan ini.
Urhixidur
Ternyata SERVER membutuhkan tiga layanan (nfs, mountd, rpc-bind) ditambahkan ke firewall-nya (tidak tahu apakah klien membutuhkan ketiganya juga; kebetulan saja ketiganya ada dalam kasus saya). Dalam kasus saya, klien (server NFS pertama) memilikinya tetapi server (server NFS kedua) hilang mountd.
Urhixidur
@Urhixidur klien seharusnya tidak memerlukan ini karena firewalld memungkinkan koneksi keluar.
T0xicCode
Perhatikan ejaan rpc-bind. Meskipun saya mengaktifkannya dengan systemctl enable rpcbinddan systemctl start rpcbind, firewall-cmd memberi tahu saya Error: INVALID_SERVICE: rpcbind. Segera saya menyadari bahwa perlu tanda hubung dalam konteks ini! Apakah mereka benar-benar layanan yang sama?
Qwertie
5

Setelah mengkonfigurasi server NFS kita harus mengaktifkan dan memulai tiga layanan:

  1. nfs-server.service
  2. rpcbind.service
  3. nfs-mountd.service (hanya start yang diperlukan)

Dan juga memungkinkan layanan ini di firewall server:

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
Aditya.V
sumber
4

Baru saja menemukan ini - dan berfungsi ketika masalahnya SELinux memblokir pembacaan ~ / .ssh / official_keys saat login! Pertama, enxure file ~ / .ssh / otor_keys Anda telah diisi dengan benar dan izin serta izin foldernya diatur dengan benar. Jika Anda menjalankan "setenforce 0" pada host tujuan SSH dan dapat masuk ke host itu tanpa memasukkan kata sandi, tetapi tidak dapat melakukannya setelah memasukkan "setenforce 1" pada host tujuan yang sama, berikut ini dapat memperbaiki masalah Anda:

setsebool -P use_nfs_home_dirs 1

ref: https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/

JamesM
sumber
0

Saya menggunakan nfsv4 dan berfungsi dengan baik dengan garis-garis itu, seandainya zona Anda "publik" dan Anda menggunakan port default 2049 dan 4001

firewall-cmd --permanent --add-service=nfs --zone=public
firewall-cmd --permanent --add-service=mountd --zone=public
firewall-cmd --permanent --add-service=rpc-bind --zone=public
firewall-cmd --permanent --add-port=4001/udp --zone=public
firewall-cmd --permanent --add-port=4001/tcp --zone=public
firewall-cmd --permanent --add-port=2049/tcp --zone=public
firewall-cmd --permanent --add-port=2049/udp --zone=public
firewall-cmd --reload
elbarna
sumber