Nfs
Installation classique
Sur le serveur
Installer le serveur nfs :
aptitude install nfs-kernel-server
Pour créer un partage, éditez le fichier /etc/exports
:
/home/pfoo/data/ 192.168.10.0/255.255.255.0(ro,all_squash,anonuid=1000,anongid=1000,sync)
Pour permettre la lecture et l'écriture, remplacez ro
par rw
192.168.10.0/255.255.255.0
signifie que le partage sera accessible pour les ips 192.168.10.X
Rechargez nfs :
/etc/init.d/nfs-kernel-server reload
Attention, si vous souhaitez partager un volume ntfs en nfs, utilisez de préférence ntfs-3g pour monter le volume ntfs sur le serveur.
Limiter l'accès
Ajoutez les lignes suivantes dans /etc/hosts.deny
:
portmap: ALL lockd: ALL mountd: ALL rquotad: ALL statd: ALL
Ajoutez les lignes suivantes dans /etc/hosts.allow
:
portmap: 192.168.10. lockd: 192.168.10. mountd: 192.168.10. rquotad: 192.168.10. statd: 192.168.10.
Sur le client
Installer le client nfs :
aptitude install nfs-common
Ajoutez la ligne suivante dans /etc/fstab
:
192.168.10.13:/home/pfoo/data/ /home/pfoo/mnt/ nfs defaults,user,auto,noatime,intr 0 0
192.168.10.13
est l'ip de votre serveur nfs.
il ne reste plus qu'a monter :
mount /home/pfoo/mnt/
NFS et tunnel ssh
Sur le serveur
Pour simplifier les choses, il va falloir forcer NFS à n'utiliser que des ports précis.
Modifiez la ligne suivante dans /etc/default/nfs-common
:
STATDOPTS="--port 2231"
Modifiez la ligne suivante dans <code</etc/default/nfs-kernel-server :
RPCMOUNTDOPTS="--port 2233"
Enfin, créez le fichier /etc/modprobe.d/local.conf
contenant :
options lockd nlm_udpport=2232 nlm_tcpport=2232 options nfs callback_tcpport=2234
Créez un utilisateur "sleeper" qui servira a établir le tunnel ssh:
adduser --disabled-password sleeper
Et copiez la clé ssh publique de votre client dans /home/sleeper/.ssh/authorized_keys :
from="ip",command="/bin/sleep 600d" ssh-rsa .......
Créez enfin le partage nfs dans /etc/exports
. En admettant que vous souhaitez partager le dossier /srv (remplacez IPNFS par l'ip de votre serveur) :
/srv IPNFS(rw,no_root_squash,sync,insecure)
Puis lancez l'export :
exportfs -a
Sur le client
Initialisez le tunnel ssh (remplacez IPNFS par l'ip de votre serveur nfs) :
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 61001:IPNFS:2049 -l sleeper IPNFS sleep 600d ssh -f -i /root/.ssh/id_rsa -c blowfish -L 62001:IPNFS:2233 -l sleeper IPNFS sleep 600d
Ajoutez la ligne suivante dans /etc/fstab :
localhost:/srv /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto
Et montez le partage :
mount /mnt
si vous souhaitez limiter la bande passante utilisable par le tunnel, utilisez trickle. Par exemple pour 5mbps :
trickle -s -u 5000 -d 5000 ssh -f -i /root/.ssh/id_rsa -c blowfish -L 61001:IPNFS:2049 -l sleeper IPNFS sleep 600d trickle -s -u 5000 -d 5000 ssh -f -i /root/.ssh/id_rsa -c blowfish -L 62001:IPNFS:2233 -l sleeper IPNFS sleep 600d