Linux NFS share mit vagrant/libvirt - bekomme ich einfach nicht zum laufen...

Linux Betriebssystem

zacki06

Active member
Registriert
2 Jan. 2022
Beiträge
413
Hallo zusammen,

diesmal eine eher exotische Frage.

Ich versuche auf meinem Fedora 38 Desktop eine ubuntu vagrant box über libvirt (kvm/qemu) zum laufen zu bekommen. Da ich das in der Vergangenheit nur unter Windows und dort mit VirtualBox genutzt habe stehe ich leider beim einbinden des geteilten verzeichnisses über NFS schwer auf dem Schlauch.

Ich habe mir unterschiedlichste Guides und Beiträge dazu durchgelesen woran das liegen könnte aber bisher bin ich noch nicht wirklich schlauer geworden.

Die einzige Fehlermeldung die ich bekomme ist immer und überall "Connection refused".

Code:
vagrant@vagbox05:~$ sudo mount -v -o vers=4 192.168.121.1:/home/user/Vagrant/vagbox05 /vagrant
mount.nfs: timeout set for Fri Jan 19 16:30:47 2024
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.121.1,clientaddr=192.168.121.18'
mount.nfs: mount(2): Connection refused

Ich habe vagrant über das vagrantfile dazu angewiesen nfs v4 zu verwenden, das unterstützt mein "host", und natürlich habe ich auch geschaut das die benötigten Services installiert und angeschmissen sind. In der Firewall hab ich nfs, mountd, etc zugelassen aber es will einfach nicht.

Hat jemand eine Idee wie ich da weiter vorgehen kann um den Fehler einzugrenzen/zu beheben? Poste gerne auch den output von was auch immer hilft.

Code:
firewall-cmd --list-all                       
FedoraWorkstation (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno1
  sources:
  services: dhcpv6-client mdns mountd nfs rpc-bind samba-client ssh
  ports: 1025-65535/udp 1025-65535/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
 
Auf welchen Interfaces lauscht nfs? Ich habe schon sehr oft gesehen das Dienste im Standard nur auf localhost lauschen, nicht auf der eigentlich Interface-Adresse. Dies würde sich auf mit dem "connection refused" decken, da der Port dann nicht offen ist.

Prüfen könntest du das mit "lsof -i" bzw. spezifischer mit "lsof -iTCP:2049"

Hier wäre auch zu prüfen auf welchem Port NFS überhaupt lauscht.

PS: Du kannst ja mal die nfs.conf posten
 
Das ist eine gute Frage,
Code:
lsof -iTCP:2049
gibt leider nichts zurück.

Ich hab noch folgenden Befehl im Netz gefunden, was der genau aussagt weiß ich aber leider nicht.

Code:
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
    100024    1   udp  59237  status
    100024    1   tcp  50157  status
    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
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100021    1   udp  45823  nlockmgr
    100021    3   udp  45823  nlockmgr
    100021    4   udp  45823  nlockmgr
    100021    1   tcp  45301  nlockmgr
    100021    3   tcp  45301  nlockmgr
    100021    4   tcp  45301  nlockmgr

Die Ports hab ich allerdings ohnehin in Verdacht, ich bin mit Firewalls leider nicht sonderlich bewandert und auf Fedora nochmal weniger.

Was eventuell auch zu erwähnen wäre ist, das libvirt sein eigenes netzwerk erstellt und das auf 192.168.121.0/24 läuft, also mein rechner als "host" ist dann x.x.x.1 und die VM bekommt dann als 4. octet irgend eine random zahl zugewiesen.

Mein heimnetzwerk läuft auf 192.168.108.0/24, weiß nicht ob nicht auch das probleme machen kann.

Code:
cat /etc/nfs.conf     
#
# This is a general configuration for the
# NFS daemons and tools
#
[general]
# pipefs-directory=/var/lib/nfs/rpc_pipefs
#
[nfsrahead]
# nfs=15000
# nfs4=16000
#
[exports]
# rootdir=/export
#
[exportfs]
# debug=0
#
[gssd]
# verbosity=0
# rpc-verbosity=0
# use-memcache=0
# use-machine-creds=1
use-gss-proxy=1
# avoid-dns=1
# limit-to-legacy-enctypes=0
# context-timeout=0
# rpc-timeout=5
# keytab-file=/etc/krb5.keytab
# cred-cache-directory=
# preferred-realm=
# set-home=1
# upcall-timeout=30
# cancel-timed-out-upcalls=0
#
[lockd]
# port=0
# udp-port=0
#
[exportd]
# debug="all|auth|call|general|parse"
# manage-gids=n
# state-directory-path=/var/lib/nfs
# threads=1
# cache-use-ipaddr=n
# ttl=1800
[mountd]
# debug="all|auth|call|general|parse"
# manage-gids=n
# descriptors=0
# port=0
port=20048
# threads=1
# reverse-lookup=n
# state-directory-path=/var/lib/nfs
# ha-callout=
# cache-use-ipaddr=n
# ttl=1800
#
[nfsdcld]
# debug=0
# storagedir=/var/lib/nfs/nfsdcld
#
[nfsdcltrack]
# debug=0
# storagedir=/var/lib/nfs/nfsdcltrack
#
[nfsd]
# debug=0
# threads=8
# host=
# port=0
# grace-time=90
# lease-time=90
# udp=n
# tcp=y
# vers3=y
# vers4=y
# vers4.0=y
# vers4.1=y
# vers4.2=y
rdma=y
rdma-port=20049

[statd]
# debug=0
# port=0
# outgoing-port=0
# name=
# state-directory-path=/var/lib/nfs/statd
# ha-callout=
# no-notify=0
#
[sm-notify]
# debug=0
# force=0
# retry-time=900
# outgoing-port=
# outgoing-addr=
# lift-grace=y

Den port unter [mountd] hab ich händisch nach einem guide angelegt (falls das von interesse ist)
 
Kannst du dich von der VM aus auf dem Host per SSH einloggen (ich nehm' mal an dass du sshd am host laufen hast) ?
 
Du kannst mit "exportfs -v" auf dem Server schauen ob der Export überhaupt existiert. Weiterhin könntest du testweise mit "chmod -R 777 /export" alle Rechteeinschränkungen aufheben (vorsicht - muss danach korrigiert werden).
"rpcinfo -p | grep nfs" sollte ebenfalls offene Ports für NFS listen (111 und 2049) - diese müssten aber bereits in der "lsof -i" Liste auftauchen
 
Entschuldigt das ich erst jetzt antworte, hatte heute eine Prüfung und wollte mich davor gedanklich nicht mehr in dieses Thema eingraben^^

Kannst du dich von der VM aus auf dem Host per SSH einloggen (ich nehm' mal an dass du sshd am host laufen hast) ?

Code:
ssh user@192.168.121.1
ssh: connect to host 192.168.121.1 port 22: Connection refused

Scheint nicht so. Bin aber nicht sicher ob ich sshd laufen habe, wüsste eigentlich nicht warum auf meinem Standrechner. Der soll sich ja zu anderen verbinden und eigentlich keine Verbindungen von außen rein lassen.

Code:
systemctl status sshd     
○ sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: inactive (dead)
       Docs: man:sshd(8)
             man:sshd_config(5)

Läuft wohl nicht. Brauche ich den laufen für nfs?

Du kannst mit "exportfs -v" auf dem Server schauen ob der Export überhaupt existiert. Weiterhin könntest du testweise mit "chmod -R 777 /export" alle Rechteeinschränkungen aufheben (vorsicht - muss danach korrigiert werden).
"rpcinfo -p | grep nfs" sollte ebenfalls offene Ports für NFS listen (111 und 2049) - diese müssten aber bereits in der "lsof -i" Liste auftauchen
Code:
exportfs -v
/home/user/Vagrant/vagbox05
                192.168.121.49(sync,wdelay,hide,no_subtree_check,fsid=-1914898598,anonuid=1000,anongid=1000,sec=sys,rw,secure,root_squash,all_squash)

Das mit dem chmod 777 hab ich wo gelesen und dort stand das man die Finger davon lassen sollte 😃

Unter "lsof -i" taucht nichts relevantes auf, nur so dinge wie KDEConnect, Firefox, Signal, etc.

Code:
rpcinfo -p | grep nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl

111 ist hier nicht dabei, wohl aber wenn ich grep weg lasse.

Code:
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
    100024    1   udp  56817  status
    100024    1   tcp  39103  status
    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
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100021    1   udp  34561  nlockmgr
    100021    3   udp  34561  nlockmgr
    100021    4   udp  34561  nlockmgr
    100021    1   tcp  38623  nlockmgr
    100021    3   tcp  38623  nlockmgr
    100021    4   tcp  38623  nlockmgr

Hilft das weiter? 🤷‍♂️
 
wie ist der output des Clients bei

showmount -e [IP des NFS Servers]

?
 
Die einzige Fehlermeldung die ich bekomme ist immer und überall "Connection refused".

Das bedeutet im Prinzip: a) „Hier läuft kein Server“, oder b) „Der Server, der hier läuft, lässt Dich nicht rein“.

Wenn Deine VM wirklich den Server laufen hat, liegt es am ehesten an einem dieser beiden Dinge: 1) daran, dass es keine Verbindung vom Host zum Gast gibt, oder 2) daran, dass der Host nur Verbindungen annimmt von IPs/-Bereichen, zu denen Dein Host (aus Sicht der VM) nicht gehört.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben