Pages : 1
#1 Le 07/07/2015, à 18:37
- maxire
Montage NFS via tunnel ssh [Résolu]
Bonjour,
Je tente de mettre au point un montage nfs à travers un tunnel ssh, le plus simple est de montrer ce que je fais:
[frankenstein@frankenstein ~]$ ssh -fN -L 61001:192.168.1.9:2049 frankenstein@192.168.1.9
frankenstein@192.168.1.9's password:
[frankenstein@frankenstein ~]$ netstat -tp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 frankenstein.home:35041 frankenstein.home:ssh TIME_WAIT -
tcp 0 0 frankenstein.home:45441 gateway:microsoft-ds ESTABLISHED -
tcp 0 0 frankenstein.home:35045 frankenstein.home:ssh ESTABLISHED 7386/ssh
tcp6 0 0 frankenstein.home:ssh frankenstein.home:35045 ESTABLISHED -
[frankenstein@frankenstein ~]$ sudo mount -v -t nfs4 -o rw,port=61001,nfsvers=4,sec=sys,noacl,nolock 192.168.1.9:/srv/nfsroot/home /mnt
mount.nfs4: timeout set for Tue Jul 7 19:29:28 2015
mount.nfs4: trying text-based options 'port=61001,sec=sys,noacl,nolock,addr=192.168.1.9,clientaddr=192.168.1.9'
mount.nfs4: mount(2): Connection refused
mount.nfs4: trying text-based options 'port=61001,sec=sys,noacl,nolock,addr=192.168.1.9,clientaddr=192.168.1.9'
mount.nfs4: mount(2): Connection refused
mount.nfs4: trying text-based options 'port=61001,sec=sys,noacl,nolock,addr=192.168.1.9,clientaddr=192.168.1.9'
mount.nfs4: mount(2): Connection refused
^C[frankenstein@frankenstein ~]$ sudo mount -v -t nfs4 -o rw,nfsvers=4,sec=sys,noacl,nolock 192.168.1.9:/srv/nfsroot/home /mnt
mount.nfs4: timeout set for Tue Jul 7 19:29:44 2015
mount.nfs4: trying text-based options 'sec=sys,noacl,nolock,addr=192.168.1.9,clientaddr=192.168.1.9'
[frankenstein@frankenstein ~]$ ls /mnt
frankenstein lfs lost+found marietheresem partimag
[frankenstein@frankenstein ~]$ sudo exportfs -s
/srv/nfsroot/archiso 192.168.1.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
/srv/nfsroot/home 192.168.1.0/24(rw,wdelay,insecure,no_root_squash,no_subtree_check,sec=sys,rw,insecure,no_root_squash,no_all_squash)
[frankenstein@frankenstein ~]$
Je fais mes tests de connexions directement sur le serveur, je n'utilise que NFS4.
Si je tente un montage par le tunnel ssh port 61001 j'obtiens ce message:
mount.nfs4: mount(2): Connection refused
Pas de problème si je tente le montage sans passer par le tunnel.
Je subodore que le problème est à chercher du côté de mount.nfs4, en effet avec le tunnel non démarré ou en utilisant n'importe quoi comme numéro de port j'obtiens la même erreur, le problème ne semble pas être côté serveur mais plutôt côté client.
Quel est le problème?
Dernière modification par maxire (Le 09/07/2015, à 13:48)
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne
#2 Le 08/07/2015, à 08:50
- bruno
Re : Montage NFS via tunnel ssh [Résolu]
Bonjour,
Peux-tu essayer avec cette commande de montage (cf man nfs) :
sudo mount -v -o noresvport,mountport=61001,tcp 192.168.1.9:/srv/nfsroot/home /mnt
#3 Le 08/07/2015, à 09:52
- maxire
Re : Montage NFS via tunnel ssh [Résolu]
Bonjour Bruno,
Merci de ta réponse, déjà essayé, même châtiment.
En fait j'en suis arrivé à mettre en cause l'utilisation de NFS4 après une rapide lecture des sources de NFS, en effet le module de contrôle/affectation par défaut des options de mount.nfs fait des choses pas très claires avec nfs4.
Je viens de tout remettre en nfs3 et maintenant j'ai:
[frankenstein@frankenstein ~]$ sudo mount -v -t nfs -o rw,port=61001,mountport=61002,nfsvers=3,sec=sys,noacl,nolock 192.168.1.9:/srv/nfsroot/home /mnt
mount.nfs: timeout set for Wed Jul 8 10:44:08 2015
mount.nfs: trying text-based options 'port=61001,mountport=61002,nfsvers=3,sec=sys,noacl,nolock,addr=192.168.1.9'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Program not registered
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Program not registered
mount.nfs: requested NFS version or transport protocol is not supported
Je précise que j'utilise des ports fixes pour mountd/statd/lockmanager:
[frankenstein@frankenstein ~]$ rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100003 4 tcp 2049 nfs
100003 4 udp 2049 nfs
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100024 1 udp 32765 status
100024 1 tcp 32765 status
100003 3 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 32803 nlockmgr
100021 3 udp 32803 nlockmgr
100021 4 udp 32803 nlockmgr
100021 1 tcp 32803 nlockmgr
100021 3 tcp 32803 nlockmgr
100021 4 tcp 32803 nlockmgr
[frankenstein@frankenstein ~]$
Tunnels ssh:
ssh -fN -L 61001:192.168.1.9:2049 frankenstein@192.168.1.9
ssh -fN -L 61002:192.168.1.9:20048 frankenstein@192.168.1.9
Initialement tout est inspiré de cet ancien howto Tunneling nfs over ssh
Évidemment pas de problème de connexion si je ne tente pas de passer par les tunnels.
[frankenstein@frankenstein ~]$ sudo mount -v -t nfs -o rw,nfsvers=3,sec=sys,noacl,nolock 192.168.1.9:/srv/nfsroot/home /mnt
[sudo] password for frankenstein:
mount.nfs: timeout set for Wed Jul 8 10:52:52 2015
mount.nfs: trying text-based options 'nfsvers=3,sec=sys,noacl,nolock,addr=192.168.1.9'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.1.9 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.1.9 prog 100005 vers 3 prot UDP port 20048
[frankenstein@frankenstein ~]$ ls /mnt
frankenstein lfs lost+found marietheresem partimag
[frankenstein@frankenstein ~]$
Je pense que dans ce cas j'ai loupé un truc.
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne
#4 Le 08/07/2015, à 11:06
- bruno
Re : Montage NFS via tunnel ssh [Résolu]
Tu ne donnes pas le résultat de ma commande. Je l'ai testée sur 2 serveurs NFS différents, l'un sous Debian 8, l'autre sous Ubuntu 14.04 et cela a parfaitement fonctionné. Note bien que je n'ai pas réalisé toutes les étapes de ton très vieux how-to, j'ai juste établi le tunnel avec une commande ssh sur le client puis lancé la commande mount.
Il faut aussi vérifier que tu n'es bloqué par un pare-feu.
#5 Le 09/07/2015, à 13:45
- maxire
Re : Montage NFS via tunnel ssh [Résolu]
C'est bon, tout fonctionne maintenant, merci Bruno pour le coup de main.
Côté serveur Archlinux (adresse 192.168.1.9):
$ sudo exportfs -s
[sudo] password for frankenstein:
/srv/nfsroot/home 127.0.0.1(rw,wdelay,insecure,no_root_squash,no_subtree_check,sec=sys,rw,insecure,no_root_squash,no_all_squash)
Côté client Debian Jessie:
ltsp-admin@pc20-ltsp:~$ ssh -fN -L 61001:127.0.0.1:2049 frankenstein@192.168.1.9
frankenstein@192.168.1.9's password:
ltsp-admin@pc20-ltsp:~$ sudo mount -v -t nfs -o noresvport,nfsvers=4,port=61001,mountport=61001,nolock,rw localhost:/srv/nfsroot/home /mnt
[sudo] password for ltsp-admin:
mount.nfs: timeout set for Thu Jul 9 14:33:41 2015
mount.nfs: trying text-based options 'noresvport,nfsvers=4,port=61001,mountport=61001,nolock,addr=::1,clientaddr=::1'
ltsp-admin@pc20-ltsp:~$ ls /mnt
frankenstein lfs lost+found marietheresem partimag
ltsp-admin@pc20-ltsp:~$ netstat -tp
(Tous les processus ne peuvent être identifiés, les infos sur les processus
non possédés ne seront pas affichées, vous devez être root pour les voir toutes.)
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
tcp 0 0 pc20-ltsp:37674 frankenstein.home:ssh ESTABLISHED 1482/ssh
tcp6 0 0 localhost:ipp localhost:48647 ESTABLISHED -
tcp6 0 0 localhost:54331 localhost:61001 TIME_WAIT -
tcp6 0 0 localhost:61001 localhost:38492 ESTABLISHED 1482/ssh
tcp6 0 0 localhost:48647 localhost:ipp ESTABLISHED -
tcp6 0 0 localhost:38492 localhost:61001 ESTABLISHED -
ltsp-admin@pc20-ltsp:~$
Et il semblerait que ma connexion nfs est sécurisée, je n'ai plus qu'à automatiser ce montage sur les clients (clef d'identification, établissement tunnel au démarrage système, paramétrage fstab).
Notes:
Je n'ai aucun firewall le seul firewall actif est celui du routeur.
D"après la page man de nfs l'option mountport est spécifique aux versions 2 et 3 de nfs or ici j'utilise la version 4, quelque chose m'échappe.
Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail
Hors ligne
Pages : 1