Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/07/2015, à 19: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, à 14:48)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#2 Le 08/07/2015, à 09: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

En ligne

#3 Le 08/07/2015, à 10: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, à 12: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.

En ligne

#5 Le 09/07/2015, à 14: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