Server NFS e firewalld


16

Non ho trovato un documento inamovibile su questo, quindi iniziamo uno.

Su un host CentOS 7.1, ho analizzato il linuxconfig HOW-TO , comprese le firewall-cmdvoci, e ho un filesystem esportabile.

[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

Tuttavia, se showmountprovengo dal client, ho ancora un problema.

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

Ora, come sono sicuro che si tratti di un problema con il firewall? Facile. Disattiva il firewall. Lato server:

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

E lato client:

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

Riavvia firewalld. Lato server:

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

E lato client:

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

Quindi, andiamo in città, adattando i comandi iptables da un server NFS RHEL 6 HOW-TO ...

[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: 

Questa volta, ricevo un messaggio di errore leggermente diverso dal client:

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

Quindi, so di essere sulla strada giusta. Detto questo, perché non riesco a trovare un tutorial definitivo su questo da nessuna parte? Non posso essere stata la prima persona a doverlo capire!

Quali firewall-cmdvoci mi mancano?

Oh, un'altra nota. I miei /etc/sysconfig/nfsfile sul client CentOS 6 e sul server CentOS 7 finora non sono stati modificati. Preferirei non doverli modificare (e mantenerli!), Se possibile.

Risposte:


40

Questo dovrebbe essere sufficiente:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

Non abbastanza nel mio caso. Ho due server NFS, il primo trasmette correttamente ed è abbonato dai suoi client, il secondo sembra trasmettere in modo corretto ma il suo client (il primo server) non è in grado di "showmount" (esportazione mount rpc: RPC: Impossibile ricevere; errno = Nessuna route verso l'host). Tornerò qui se / quando risolverò questo.
Urhixidur,

Si scopre che il SERVER aveva bisogno dei tre servizi (nfs, mountd, rpc-bind) aggiunti al suo firewall (non so se anche il client ha bisogno di tutti e tre; capita che abbiano tutti e tre nel mio caso). Nel mio caso, il client (primo server NFS) lo aveva ma il server (secondo server NFS) mancava mountd.
Urhixidur,

@Urhixidur il client non dovrebbe averne bisogno perché firewalld consente connessioni in uscita.
T0xic,

Nota l'ortografia di rpc-bind. Anche se l'ho abilitato con systemctl enable rpcbinde systemctl start rpcbind, mi ha detto firewall-cmd Error: INVALID_SERVICE: rpcbind. Presto mi sono reso conto che ha bisogno di un trattino in questo contesto! Sono davvero lo stesso servizio?
Qwertie,

5

Dopo aver configurato il server NFS dovremmo abilitare e avviare tre servizi:

  1. nfs-server.service
  2. rpcbind.service
  3. nfs-mountd.service (è necessario solo l'avvio)

E consenti anche questi servizi sul firewall del server:

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload

4

Ho appena trovato questo - e funziona quando il problema è SELinux che blocca la lettura di ~ / .ssh / authorized_keys durante il login! Innanzitutto, incoraggia il tuo file ~ / .ssh / authorized_keys a essere correttamente popolato e le sue autorizzazioni e le autorizzazioni della sua cartella sono impostate correttamente. Se si esegue "setenforce 0" sull'host di destinazione SSH e si è in grado di accedere a quell'host senza immettere una password, ma non è possibile farlo dopo aver immesso "setenforce 1" sullo stesso host di destinazione, è possibile che il problema venga risolto:

setsebool -P use_nfs_home_dirs 1

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


0

Uso nfsv4 e funziona bene con quelle linee, supponendo che la tua zona sia "pubblica" e tu stia usando le porte predefinite 2049 e 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.