CentOS 7 NFS

Aus
Wechseln zu: Navigation, Suche

NFS-Server einrichten

Als erstes müssen die NFS-Tools installiert werden

yum install nfs-utils nfs-utils-lib

Nun müssen die NFS-Services gestartet werden

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

Welches Verzeichnis soll freigegeben werden? Wir erstellen ein gemeinsames Verzeichnis, dieses muss von jedem gelesen, beschrieben und ausführbar sein.

mkdir /share 
chmod 777 /share

Jetzt muss das gemeinsame Verzeichnis exportiert werden, dazu die Datei /etc/exports editieren

/share/     192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)
/share Das gemeinsame Verzeichnis
192.168.1.0/24 IP Adressraum des Clients
rw Schreibrechte auf das gemeinsame Verzeichnis
sync Gemeinsames Verzeichnis synchronisieren
no_root_squash Root Privileg einschalten
no_all_squash Userbefugnisse einschalten

Anschliessend starten wir den NFS-Server neu

systemctl restart nfs-server

Clientseitige Konfiguration

Als erstes müssen die NFS-Tools installiert werden

yum install nfs-utils nfs-utils-lib

Nun müssen die NFS-Services gestartet werden

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

NFS-Shares auf Clients mounten

Einen Mountpoint auf dem Client erstellen

mkdir -p /mnt/nfs/share

Nun das Verzeichnis auf dem Client mounten

mount -t nfs 192.168.1.24:/share/ /mnt/nfs/share/

Da die Firewall auf dem Server unseren Client nicht kennte sollte jetzt eine Ausgabe dieser Art erscheinen

mount.nfs: access denied by server while mounting 192.168.1.24:/share

Eventuell kommt auch ein connection timed out error. Auf jeden Fall blockiert die Firewall des NFS-Servers die Verbindung. Wie findet man jetzt die Ports heraus, welche auf dem NFS-Server geöffnet werden müssen? Folgendes Kommando auf dem Client gibt die Ports aus

rpcinfo -p

mit ähnlicher Ausgabe wie folgender

   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  43602  status
    100005    1   udp  20048  mountd
    100024    1   tcp  49130  status
    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
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  41856  nlockmgr
    100021    3   udp  41856  nlockmgr
    100021    4   udp  41856  nlockmgr
    100021    1   tcp  40313  nlockmgr
    100021    3   tcp  40313  nlockmgr
    100021    4   tcp  40313  nlockmgr

Jetzt folgendes auf dem NFS-Server ausführen um die Firewall für den Client zu öffnen (Warum eigentlich nur die TCP-Ports?)

firewall-cmd --permanent --zone=internal --add-port=111/tcp
firewall-cmd --permanent --zone=internal --add-port=49130/tcp
firewall-cmd --permanent --zone=internal --add-port=20048/tcp
firewall-cmd --permanent --zone=internal --add-port=2049/tcp
firewall-cmd --permanent --zone=internal --add-port=40313/tcp

--zone=internal ist hier angegeben, da nur das interne Netz auf den NFS-Server zugreifen soll. Man kann die Zone auch weglassen, es ist alles eine Sache der Sicherheit ;) . Danach die Firewall neu starten

firewall-cmd --reload

Ein weiteres Mal können wir nun das NFS-Share mounten

mount -t nfs 192.168.1.24:/share/ /mnt/nfs/share/

Jetzt sollte das NFS-Verzeichnis erreichbar sein ;)

NFS-Share auf Client prüfen

Um zu sehen ob das Verzeichnis gemountet ist kann der Befehl

mount

eingegeben werden. Es folgt ein ähnliche Ausgabe:

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=16461924k,nr_inodes=4115481,mode=755)
.
.
.
systemd-1 on /mnt/nfs/data type autofs (rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=22662)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
192.168.1.24:/share on /mnt/nfs/share type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.10,local_lock=none,addr=192.168.1.24)
.
.
.

In der letzten Zeile steht unser NFS-Share.

Auto mount des NFS-Share (Bootfest)

Um unser NFS-Verzeichnis beim Boot des Servers zu mounten müssen wir folgendes in der Datei /etc/fstab hinzufügen

192.168.1.24:/share/ /mnt/nfs/share/ nfs rw,sync,hard,intr 0 0

Damit sollte die Datei /etc/fstab ähnlich folgender Ausgabe aussehen

#
# /etc/fstab
# Created by anaconda on Thu Apr  4 16:43:37 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9b2347ab-23c0-463e-9cb8-a4ddf9f4dfcb /                       xfs     defaults        0 0
UUID=a96af4ed-b427-453e-a222-7e4f4ddddf81 /boot                   xfs     defaults        0 0
UUID=d88cde23-912d-4548-8f49-08beefefef15 swap                    swap    defaults        0 0
192.168.1.24:/share/                      /mnt/nfs/share          nfs     defaults,nofail,x-systemd.automount     0 0

Jetzt das System rebooten und es sollte das Verzeichnis gemountet sein (prüfen, siehe oben)

Quelle: https://www.unixmen.com/setting-nfs-server-client-centos-7/