Serveur NFS OpenBSD

Configuration du serveur

  • OpenBSD 4.9 amd64 -release

Système de fichiers à exporter

Initialiser le disque sd1 pour un usage exclusif d'OpenBSD, une seule slice sur la partition primaire 4/4:

# fdisk -i sd1

Partitionnement de la slice en mode interactif:

# disklabel -E sd1

→ Création d'une seule partition de la totalité de l'espace disponible

Création d'un système de fichiers FFS sur le device /dev/sd1d:

# newfs sd1d

Création du point de montage du nouveau device:

# mkdir -p /var/data/d250

Modification dans /etc/fstab:

/dev/sd1d /var/data/d250 ffs rw,nodev,nosuid 1 2

Création du groupe data:

# groupadd -g 1010 data

le GID est fixé à 1010 car par défaut il était à 1001 ce qui allait poser des problèmes sur les clients

Fixation des permissions sur le filesystem:

# chown nobody:data /var/data/d250 && chmod 775 /var/data/d250
  • l'utilisateur nobody est tout désigné pour l'export NFS
  • rwxrwxr-x sur le répertoire racine de l'export

Mise en place de l'export NFS

Création du /etc/rc.conf.local avec ce qu'il faut dedans:

portmap=YES
nfs_server=YES

Définition des règles d'exports dans /etc/exports:

/var/data/d250 -alldirs -mapall=nobody:data -network=192.168.100 -mask=255.255.255.0
  • /var/data/d250 # le point de montage à exporter.
  • -alldirs # permettre le montage distant des sous-répertoires de /var/data/d250.
  • -mapall=nobody:data # tous les clients seront “mappés” sous l'utilisateur nobody et le groupe data, même root.
  • -network=192.168.100 -mask=255.255.255.0 # seuls les clients sur ce sous-réseau pourrons monter cet export.

Démarrage des démons:

# /usr/sbin/portmap
# echo -n >/var/db/mountdtab
# /sbin/mountd
# /sbin/nfsd -tun 4

Si vos règles PF ne laissent passer que le trafic explicitement défini alors il faut prendre en compte les ports:

  • nfsd 2049/tcp/udp
  • sunrpc 111/tcp/udp

Pour mountd les ports changent à chaque reboot. Il faut donc les récupérer et mettre à jour les règles en conséquence:

# rpcinfo -p 192.168.200.1 | grep mountd
   100005    1   udp    606  mountd
   100005    3   udp    606  mountd
   100005    1   tcp    958  mountd
   100005    3   tcp    958  mountd

Configuration des clients

  • Debian GNU/Linux amd64 -testing (wheezy/sid)
  • Ubuntu 10.04 i386 LTS

Prise en charge de NFS

Installation des paquets permettant la prise en charge de filesystem NFS:

# aptitude install nfs-common portmap

Montage du système de fichiers exporté

Création du futur point de montage et mise en place d'un lien symbolique pour un accès depuis le home des utilisateurs:

$ sudo mkdir /var/data && sudo ln -s /var/data

Modification du /etc/fstab:

192.168.200.1:/var/data/d250	/var/data	nfs	rw,noauto,noatime,intr,vers=2	0	0
  • 192.168.200.1:/var/data/d250 # adresse du serveur et FS exporté.
  • /var/data # point de montage local.
  • nfs # type de FS utilisé pour le montage local.
  • rw # permissions sur le FS.
  • noauto # pas de montage automatique, les clients bloquent au boot sans cette option.
  • noatime # ne met pas à jour les temps d'accès aux inodes du FS, augmente les performances.
  • intr # permet d’interrompre les opérations NFS tant que le serveur ne répond pas.
  • vers=2 # dégrade le protocole NFS à sa version 2, améliore grandement les perf' de lecture/écriture.
  • 0 0 # indique de ne pas lancer un fsck sur ce FS au boot de la machine

Création d'un lanceur pour le “MOD” (montage à la demande :-D ) à utiliser avant d'accéder pour la première fois aux données:

sudo mount /var/data

Pour ne pouvoir lancer cette commande il faut faire parti des “sudoers”. Editez le fichiers qui-va-bien via le script visudo puis ajoutez:

# Members of alias NFSUSERS can mount NFS exports from the data server
User_Alias     NFSUSERS = $USER1, $USER2, $USER3
NFSUSERS $LOCALHOST = NOPASSWD: /bin/mount /var/data/serveur
  • $USER est un utilisateur du système local qui pourra avoir accès au serveur NFS
  • $LOCALHOST est le nom du système local
  • /var/data/serveur est le point de montage local de l'export NFS

Il est aussi possible de passer par autofs pour s'affranchir de la MOD

and voila 8-)

Liens