J'ai correctement configuré un serveur/système client NFS sur les ordinateurs de mon réseau local. J'aime cela!
Mais, fatigué du long délai lorsqu'un montage n'est pas disponible au démarrage, j'ai décidé de suivre @ridgy pour lui suggérer d'utiliser autofs pour monter les partages - en utilisant les informations de cet article .
J'ai eu des problèmes de pare-feu avant, donc, j'ai immédiatement suspecté que l'ufw pourrait être la raison pour laquelle les montages expirent. Donc, j'ai désactivé ufw sur le serveur et le client. Et bien sûr. Cela a bien fonctionné. Donc, je suis sûr que la configuration de base est correcte.
Les seules autres règles d'ufw à ce stade sont les règles ALLOW (Autoriser) pour les ports 2078 et 6589. Aucune règle BLOCK n'est configurée. Et, comme NFS fonctionne bien avec ufw pendant le montage contrôlé par fstab, je suis un peu confus quant à l’endroit où le blocage se produit.
Jusqu'à présent, je n'ai pas trouvé de documentation sur les ports/protocoles qui sont uniques aux autofs en plus du NFS 111,2049 TCP/UDP habituel.
Chaque fois que je réactiver ufw. Les actions redeviennent inaccessibles.
Des idées?
@ridgy
Après avoir suivi votre conseil ci-dessous d’éditer nfs-common et nfs-kernel-server .. j’ai vérifié trois fois, et les modifications ont été apportées exactement comme indiqué. J'ai redémarré et couru ...
$Sudo netstat -nalp | grep rpc
... La sortie était;
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1220/rpcbind
tcp 0 0 0.0.0.0:32767 0.0.0.0:* LISTEN 4158/rpc.mountd
tcp6 0 0 :::111 :::* LISTEN 1220/rpcbind
tcp6 0 0 :::32767 :::* LISTEN 4158/rpc.mountd
udp 0 0 0.0.0.0:972 0.0.0.0:* 1220/rpcbind
udp 0 0 0.0.0.0:32767 0.0.0.0:* 4158/rpc.mountd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1220/rpcbind
udp6 0 0 :::972 :::* 1220/rpcbind
udp6 0 0 :::32767 :::* 4158/rpc.mountd
udp6 0 0 :::111 :::* 1220/rpcbind
unix 2 [ ACC ] STREAM LISTENING 15939 1/init /run/rpcbind.sock
unix 2 [ ] DGRAM 49175 4158/rpc.mountd
unix 3 [ ] STREAM CONNECTED 48294 1220/rpcbind /run/rpcbind.sock
unix 3 [ ] STREAM CONNECTED 16984 1220/rpcbind
unix 3 [ ] STREAM CONNECTED 48275 4157/rpc.idmapd
unix 3 [ ] STREAM CONNECTED 48276 4157/rpc.idmapd
OK ... Alors, je me demande ... Où est rpc.statd ??? De plus, mes partages NFS (l'autofs était toujours désactivé) étaient toujours visibles depuis le client. bien que le pare-feu n'ait pas été mis à jour avec le nouveau port 32767 de rpc.mountd.
Au final, ce n’était pas si compliqué, en suivant les astuces de Securing NFS . J'ai modifié les fichiers _/etc/default/nfs-common
_ et _/etc/default/nfs-kernel-server
_ en fonction de:
nfs-common:
_.
.
# Options for rpc.statd.
# Should rpc.statd listen on a specific port? This is especially useful
# when you have a port-based firewall. To use a fixed port, set this
# this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
# For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS
STATDOPTS="--port 32765 --outgoing-port 32766"
.
.
_
nfs-kernel-server:
_.
.
# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="--manage-gids --port 32767"
.
.
_
Pourquoi ces ports? Comme _32767
_ est le nombre le plus élevé de 15 bits, il est très peu probable que ces ports soient déjà utilisés par autre chose.
Je n'utilise pas de quotas, je n'ai donc pas modifié _/etc/default/quota
_ comme suggéré. Et j'ai dû redémarrer après avoir apporté ces modifications. Puis j'ai vu le résultat avec
_$ Sudo netstat -nalp | grep rpc
tcp 0 0 0.0.0.0:32767 0.0.0.0:* LISTEN 1018/rpc.mountd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 735/rpcbind
tcp 0 0 0.0.0.0:32765 0.0.0.0:* LISTEN 806/rpc.statd
tcp6 0 0 :::32767 :::* LISTEN 1018/rpc.mountd
tcp6 0 0 :::111 :::* LISTEN 735/rpcbind
tcp6 0 0 :::32765 :::* LISTEN 806/rpc.statd
udp 0 0 0.0.0.0:875 0.0.0.0:* 735/rpcbind
udp 0 0 127.0.0.1:982 0.0.0.0:* 806/rpc.statd
udp 0 0 0.0.0.0:32765 0.0.0.0:* 806/rpc.statd
udp 0 0 0.0.0.0:32767 0.0.0.0:* 1018/rpc.mountd
udp 0 0 0.0.0.0:111 0.0.0.0:* 735/rpcbind
udp6 0 0 :::875 :::* 735/rpcbind
udp6 0 0 :::32765 :::* 806/rpc.statd
udp6 0 0 :::32767 :::* 1018/rpc.mountd
udp6 0 0 :::111 :::* 735/rpcbind
unix 2 [ ACC ] STREAM LISTENING 11412 735/rpcbind /run/rpcbind.sock
unix 2 [ ] DGRAM 9521 806/rpc.statd
unix 2 [ ] DGRAM 9614 1018/rpc.mountd
unix 3 [ ] STREAM CONNECTED 11721 862/rpc.idmapd
unix 3 [ ] STREAM CONNECTED 11722 862/rpc.idmapd
_
Comme vous pouvez le constater, les ports _rpc.mountd
_ et _rpc.statd
_ écoutés sont désormais statiques.
Lorsque vous entrez showmount
sur le client (ici 192.168.192.20), Wireshark indique la communication (le serveur est 192.168.192.111). Important ici: le _GETPORT Call
_ et le _GETPORT reply
_, qui renvoie _Port:32767
_. La communication utilise ensuite ce port.
Maintenant, vous devriez pouvoir modifier les règles du pare-feu en fonction, puis utiliser showmount
et autofs
à travers un pare-feu.
Juste pour l'enregistrement
En suivant les indications des commentaires et de ma propre expérience, j'ai trouvé un comportement différent selon les distributions:
raspbian jessie
_ actuel (basé sur debian
), il existe un service _nfs-common
_ (fichier _/etc/init.d/nfs-common
_) qui, lorsqu'il est activé, démarre, par exemple. _rpc.statd
_ au démarrage, en respectant les paramètres de port dans _/etc/default/nfs-common
_.Ubuntu 16.04
_, ce service n'existe pas. _rpc.statd
_ n'est pas démarré au démarrage, car il n'est pas nécessaire avec NFS V4. Mais dès que _mount .... -o nfsvers=3
_ est terminé, _rpc.statd
_ est lancé, en respectant les paramètres de port définis dans _/etc/default/nfs-common
_.Je n'ai pas trouvé de documentation cohérente à ce sujet. dans Comment configurer NFS le fichier _/etc/init.d/nfs-common
_ est explicitement mentionné, bien qu'il soit et non dans le package. Si quelqu'un a des allusions/liens à ce sujet, il serait grandement mérité.
Encore une remarque: _man rpc.mountd
_ et _man rpc.statd
_ dire (pour l'option _--port
_):
"Si cette option n'est pas spécifiée, rpc.statd essaiera de consulter/etc/services, si le port réussit, définira le même port pour tous les connecteurs d'écouteur, sinon choisira un port éphémère aléatoire pour chaque socket d'écouteur."
Même lors de la définition des ports dans _/etc/services
_ (comme suggéré dans le wiki mentionné ci-dessus), cela ne fonctionnait pas. Donc, modifier les fichiers dans _/etc/default
_ semble obligatoire - les pages de manuel ne sont pas correctes à ce stade.