Guide pratique des opérations courantes sur un serveur NFS

Présentation du protocole NFS

Le système de fichiers réseau (NFS) est un protocole permettant à des systèmes cleints d'accéder à des fichiers sur un serveur distant comme s'ils étaient stockés localement.

Composants essentiels

  • nfs-kernel-server : Le daemon principal du service NFS.
  • rpcbind : Service de mappage des ports RPC.
  • /etc/exports : Fichier de configuration des partages.

Administration du service

Vérification et gestion des démons système :

# Vérifier l'état des services
systemctl status nfs-kernel-server
systemctl status rpcbind

# Démarrer, arrêter ou redémarrer le service NFS
systemctl start nfs-kernel-server
systemctl stop nfs-kernel-server
systemctl restart nfs-kernel-server

# Activer le démarrage automatique
systemctl enable nfs-kernel-server
systemctl enable rpcbind

Validation et application de la configuration :

# Vérifier la syntaxe du fichier exports
exportfs -v

# Recharger la configuration sans interruption de service
exportfs -ra

# Lister les partages actifs
exportfs -s

Configuration des partages

Structure du fichier /etc/exports :

# Format : répertoire client(options)
/données/projets 192.168.10.0/24(rw,sync,no_subtree_check)
/volume/publique *.domaine.fr(ro,async,all_squash,anonuid=65534,anongid=65534)

Options importantes :

  • rw/ro : Permission en lecture/écriture ou lecture seule.
  • sync/async : Écriture synchrone ou asynchrone.
  • root_squash : Mappe l'accès root client vers l'utilisateur nobody (par défaut).
  • no_subtree_check : Désactive la vérification de sous-arbre pour de meilleures performances.

Exemple d'ajout et de suppression dynamique d'un partage :

# Ajouter un partage et appliquer
echo "/export/commun 10.10.0.0/16(rw,sync)" >> /etc/exports
exportfs -ra

# Retirer temporairement un partage spécifique
exportfs -u 10.10.0.0/16:/export/commun

# Supprimer tous les partages et reconfigurer proprement
exportfs -ua
nano /etc/exports  # Édition du fichier
exportfs -ra

Surveillance des connexions clients

Pour identifier les clients connectés, plusieurs méthodes sont disponibles.

Utilisation de showmount

# Afficher tous les points de montage clients
showmount -a

# Extraire uniquement les adresses IP uniques
showmount -a | awk -F: '{print $1}' | sort -u

Analyse des fichiers d'état et des connexions réseau

# Consulter le journal des montages actifs
cat /var/lib/nfs/rmtab

# Surveiller les connexions sur le port NFS (2049)
ss -tan | grep :2049

# Ou avec netstat
netstat -anp | grep 2049

Statistiques avec nfsstat

# Afficher les statistiques du serveur NFS
nfsstat -s

# Surveiller en temps réel les opérations
watch -n 2 'nfsstat -s -2'

Recherche ciblée par IP client

#!/bin/bash
# Rechercher les montages pour une IP spécifique
CIBLE="10.10.25.7"

echo "Montages pour le client $CIBLE :"
showmount -a | grep "$CIBLE"
ss -tan | grep :2049 | grep "$CIBLE"

Génération d'un rapport complet

#!/bin/bash
# Créer un rapport sur l'activité NFS
RAPPORT="/tmp/rapport_nfs_$(date +%F).log"

{
    echo "Rapport NFS du $(date)"
    echo "================================"
    echo -e "\nClients montés :"
    showmount -a
    echo -e "\nStatistiques serveur :"
    nfsstat -s
    echo -e "\nConnexions réseau actives :"
    ss -tan | grep :2049
} > "$RAPPORT"

echo "Rapport généré : $RAPPORT"

Optimisation des performances

Ajustement des paramètres

# Augmenter le nombre de threads nfsd (fichier /etc/default/nfs-kernel-server)
RPCNFSDCOUNT=32

# Optimiser les paramètres réseau pour NFS (dans /etc/sysctl.conf)
echo "sunrpc.tcp_slot_table_entries=128" >> /etc/sysctl.conf
echo "net.core.rmem_max=16777216" >> /etc/sysctl.conf
echo "net.core.wmem_max=16777216" >> /etc/sysctl.conf
sysctl -p

Surveillance des performancse

# Monitorer l'activité I/O disque liée à NFS
iostat -x 2 | grep -E "nfs|sd"

# Observer la charge des processus nfsd
top -p $(pgrep -d, nfsd)

Dépannage et journaux

Localisation des logs

# Journaux système liés à NFS
journalctl -u nfs-kernel-server -f

# Messages d'erreur du noyau
dmesg | grep -i nfs

Diagnostic des problèmes courants

# Vérifier que le service écoute bien
rpcinfo -p | grep nfs

# Tester un montage local pour isoler le problème
mount -t nfs localhost:/test /mnt/temp

# Vérifier les règles du pare-feu
ufw status | grep 2049

# Contrôler les permissions du répertoire partagé
ls -ld /chemin/vers/partage
getfacl /chemin/vers/partage

Renforcement de la sécurité

Configuration sécurisée

# 1. Restreindre l'accès à des IP/clients spécifiques
# /etc/exports
/export/securise 192.168.1.100(rw,sync,root_squash)

# 2. Privilégier NFSv4 dans /etc/nfs.conf
[nfsd]
vers4=y
vers3=n

# 3. Configurer le pare-feu pour NFS
ufw allow from 192.168.1.0/24 to any port 2049
ufw allow from 192.168.1.0/24 to any port 111

Audit et surveillance

# Script pour auditer les accès
#!/bin/bash
LOG="/var/log/audit_nfs.log"
echo "Audit du $(date)" >> "$LOG"
showmount -a >> "$LOG"
echo "---" >> "$LOG"

Automatisation

Script de surveillance des connexions

#!/bin/bash
# Surveiller le nombre de clients connectés
DELAI=120  # Intervalle en secondes
JOURNAL="/var/log/surveillance_nfs.log"

while true; do
    NOMBRE=$(showmount -a 2>/dev/null | wc -l)
    HEURE=$(date "+%H:%M:%S")
    echo "$HEURE - Clients actifs : $NOMBRE" >> "$JOURNAL"
    
    if [ "$NOMBRE" -gt 50 ]; then
        echo "ALERTE : Nombre élevé de clients ($NOMBRE)" >> "$JOURNAL"
    fi
    sleep $DELAI
done

Nettoyage des entrées obsolètes

#!/bin/bash
# Tenter de nettoyer les entrées clients potentiellement obsolètes
FICHIER="/var/lib/nfs/rmtab"

if [ -f "$FICHIER" ]; then
    while IFS=: read -r client chemin; do
        if ! ping -c 1 -W 2 "$client" > /dev/null; then
            echo "Entrée suspecte pour $client -> $chemin"
            # exportfs -u "$client":"$chemin"  # Décommenter pour agir
        fi
    done < "$FICHIER"
fi

Récapitulatif des bonnes pratiques

  • Préférer NFSv4 pour sa sécurité améliorée et son fonctionnement via un seul port.
  • Appliquer le principe du moindre privilège pour les permissions d'export.
  • Segmenter le trafic NFS sur un réseau dédié.
  • Surveiller régulièrement les performances et les connexions.
  • Sauvegarder périodiquement les fichiers de configuration critiques.

Aide-mémoire des commandes

Commande Description
showmount -a Lister tous les clients montés
exportfs -ra Recharger la configuration des partages
nfsstat -s Afficher les statistiques du serveur
ss -tan | grep :2049 Voir les connexions réseau NFS actives

Dernière mise à jour : 2023-10-27
Systèmes applicables : Debian/Ubuntu, RHEL/CentOS 8+
Précaution : Tester toute modification en environnement de pré-production avant déploiement.

Étiquettes: nfs Linux administration système réseau partage de fichiers

Publié le 23 juillet à 06h36