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 ) à 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