Je n'ai pas trouvé de document slam-dunk à ce sujet, alors commençons-en un.
Sur un hôte CentOS 7.1, je suis passé par le linuxconfig HOW-TO , y compris le firewall-cmd
entrées, et j'ai un système de fichiers exportable.
[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
Cependant, si je showmount
du client, j'ai toujours un problème.
[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to Host)
Maintenant, comment suis-je sûr qu'il s'agit d'un problème de pare-feu? Facile. Éteignez le pare-feu. Du côté serveur:
[root@<server> ~]# systemctl stop firewalld
Et côté client:
[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain
Redémarrez le pare-feu. Du côté serveur:
[root@<server> ~]# systemctl start firewalld
Et côté client:
[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to Host)
Alors, allons en ville, en adaptant les commandes iptables d'un serveur RHEL 6 NFS HOWTO ...
[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:
Cette fois, je reçois un message d'erreur légèrement différent du client:
[root@<client> ~]# showmount -e <server>.localdomain
rpc mount export: RPC: Unable to receive; errno = No route to Host
Donc, je sais que je suis sur la bonne voie. Cela dit, pourquoi ne puis-je trouver un tutoriel définitif à ce sujet nulle part? Je ne peux pas être la première personne à avoir compris ça!
Quoi firewall-cmd
les entrées me manquent?
Oh, une autre note. Ma /etc/sysconfig/nfs
les fichiers sur le client CentOS 6 et le serveur CentOS 7 ne sont pas modifiés jusqu'à présent. Je préférerais ne pas avoir à les changer (et les maintenir!), Si possible.
Cela devrait suffire:
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
Après avoir configuré le serveur NFS, nous devons activer et démarrer trois services:
Et autorisez également ces services sur le pare-feu du serveur:
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
Je viens de le trouver - et cela fonctionne lorsque le problème est que SELinux bloque la lecture des ~/.ssh/authorized_keys lors de la connexion! Tout d'abord, enchez votre fichier ~/.ssh/authorized_keys est correctement rempli et ses autorisations et les autorisations de son dossier sont définies correctement. Si vous exécutez ensuite "setenforce 0" sur l'hôte de destination SSH et êtes en mesure de vous connecter à cet hôte sans entrer de mot de passe, mais ne pouvez pas le faire après avoir entré "setenforce 1" sur ce même hôte de destination, les problèmes suivants peuvent résoudre votre problème:
setsebool -P use_nfs_home_dirs 1
réf: https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/
J'utilise nfsv4 et fonctionne très bien avec ces lignes, en supposant que votre zone est "publique" et que vous utilisez les ports par défaut 2049 et 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