CentOS 7 NFS
Inhaltsverzeichnis
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
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 ;)
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.
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/