Hallo,
ich würde gerne ein geteiltes Netzlaufwerk von meinem Synology NAS einbinden und komme da leider nicht weiter. Daher hoffe ich, dass ihr mir da weiterhelfen könnt ![]()
Vorgeschichte
Bisher habe ich das Laufwerk immer über den AUTH_SYS Weg eingebunden und die UIDs lokal geändert. Das ist jetzt gerade der Versuch, das ganze über Kerberos zu lösen. Wenn ich NFSv4 und Kerberos nicht ans Laufen bekomme, wäre das wohl mein Backup-Plan, wieder mit auth_sys zu arbeiten.
Setup
- Router
- Fritz.Box 7490
- Kerberos Server
- Raspberry Pi 4B mit Raspberry Pi OS Lite
- raspi-server-0.fritz.box
- NAS
- Synology DS 214+ mit DSM 7.1.1
- NAS.fritz.box
- Client
- Rechner mit aktuellem OpenSUSE Tumbleweed
- tower-linux.fritz.box
Konfiguration
Kerberos Server
Ich habe vorher einmal überprüft, dass Hostnamen und IPs aufgelöst werden können.
$ hostname
raspi-server-0
$ ip addr show
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:d6:57:60 brd ff:ff:ff:ff:ff:ff
inet 192.168.178.80/24 brd 192.168.178.255 scope global dynamic noprefixroute eth0
...
$ host 192.168.178.80
80.178.168.192.in-addr.arpa domain name pointer raspi-server-0.fritz.box.
Alles anzeigen
Realm angelegt und Principals hinzugefügt, keytab file erstellt etc.
# Realm anlegen
sudo krb5_newrealm
# Principals hinzufügen
sudo kadmin.local
addprinc myuser@FRITZ.BOX
addprinc myuser/admin@FRITZ.BOX
addprinc -randkey host/raspi-server-0.fritz.box@FRITZ.BOX
addprinc -randkey host/NAS.fritz.box@FRITZ.BOX
addprinc -randkey nfs/NAS.fritz.box@FRITZ.BOX
addprinc -randkey nfs/tower-linux.fritz.box@FRITZ.BOX
# keytab file erstellen
ktadd host/raspi-server-0.fritz.box@FRITZ.BOX
# services starten
sudo systemctl start krb5-kdc.service
sudo systemctl start krb5-admin-server.service
Alles anzeigen
Hier die Kerberos-Config:
$ sudo cat /etc/krb5.conf
[libdefaults]
default_realm = FRITZ.BOX
# notwendig, weil hostname den Namen ohne domain gibt
ignore_acceptor_hostname = true
# The following krb5.conf variables are only for MIT Kerberos.
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
rdns = true
[realms]
FRITZ.BOX = {
kdc = raspi-server-0.fritz.box
admin_server = raspi-server-0.fritz.box
}
[domain_realm]
.fritz.box = FRITZ.BOX
fritz.box = FRITZ.BOX
Alles anzeigen
Zu Testzwecken habe ich dann den SSH Server für GSSAPI konfiguriert:
$ sudo apt install openssh-server-gssapi
$ sudo vim /etc/ssh/sshd_config
# und folgendes:
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
Client
Hier habe ich auch einmal danach geguckt, ob die Hostnamen und IP-Adressen passen und Kerberos konfiguriert, ipmap.conf angelegt und dann auch SSH konfiguriert.
> hostname
tower-linux.fritz.box
> ip addr show
...
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 2c:d0:5a:e1:c2:c3 brd ff:ff:ff:ff:ff:ff
altname wlx2cd05ae1c2c3
inet 192.168.178.104/24 brd 192.168.178.255 scope global dynamic noprefixroute wlp2s0
...
> host 192.168.178.104
104.178.168.192.in-addr.arpa domain name pointer tower-linux.fritz.box.
Alles anzeigen
# Kerberos config
> sudo cat /etc/krb5.conf
[sudo] Passwort für root:
[libdefaults]
default_realm = FRITZ.BOX
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
[realms]
FRITZ.BOX = {
kdc = raspi-server-0.fritz.box
admin_server = raspi-server-0.fritz.box
}
[domain_realm]
.fritz.box = FRITZ.BOX
fritz.box = FRITZ.BOX
# keytab file erstellen
> sudo kadmin -p myuser/admin
ktadd nfs/tower-linux.fritz.box@FRITZ.BOX
# id mapping für NFS
> sudo cat /etc/idmapd.conf.d/nfs.conf
[General]
Domain = fritz.box
Local-Realms = FRITZ.BOX
[Mapping]
Nobody-User=guest
Nobody-Group=users
[Translation]
# The default is nsswitch and other methods exist.
method = static,nsswitch
GSS-Methods=static,synomap
[Static]
myuser@FRITZ.BOX = myuser
Alles anzeigen
Tickets anlegen und die Verbindung per SSH vom Client zum Kerberos Server funktioniert
# Kerberos Ticket holen
> kinit
> klist
Ticketzwischenspeicher: FILE:/tmp/krb5cc_1000
Standard-Principal: myuser@FRITZ.BOX
Valid starting Expires Service principal
23.04.2026 09:06:43 23.04.2026 19:06:43 krbtgt/FRITZ.BOX@FRITZ.BOX
erneuern bis 24.04.2026 09:06:37
# SSH Verbindung mit Kerberos funktioniert
> ssh raspi-server-0 -vv
...
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug2: we sent a gssapi-with-mic packet, wait for reply
Authenticated to raspi-server-0 ([2003:103:f707:c400:dea6:32ff:fed6:5760]:22) using "gssapi-with-mic".
debug1: channel 0: new session [client-session] (inactive timeout: 0)
debug2: channel 0: send open
...
> klist
Ticketzwischenspeicher: FILE:/tmp/krb5cc_1000
Standard-Principal: myuser@FRITZ.BOX
Valid starting Expires Service principal
23.04.2026 09:06:43 23.04.2026 19:06:43 krbtgt/FRITZ.BOX@FRITZ.BOX
erneuern bis 24.04.2026 09:06:37
23.04.2026 09:07:28 23.04.2026 19:06:43 host/raspi-server-0.fritz.box@FRITZ.BOX
erneuern bis 24.04.2026 09:06:37
Alles anzeigen
Synology NAS
Erst habe ich die keytabs Datei für das NAS auf dem Client erstellt und dieses dann über die Oberfläche vom DSM importiert.
# keytab file für das NAS erstellen
> sudo kadmin -p myuser/admin
> ktadd -k naskeytabfile host/NAS.fritz.box@FRITZ.BOX nfs/NAS.fritz.box@FRITZ.BOX
sudo chown -c myuser naskeytabfile
# im Anschluss über DSM importiert
Jetzt habe ich evtl. einen Fehler begangen, weil ich alles über den DSM konfiguriert hatte und das Einbinden dann nicht ging. Daher habe ich die Configdateien für Kerberos und NFS manuell geändert und nicht über den DSM. Diese sehen jetzt auf dem NAS so aus:
$ sudo cat /etc/nfs/krb5.conf
Password:
[libdefaults]
default_realm=FRITZ.BOX
ignore_acceptor_hostname=true
[realms]
FRITZ.BOX = {
kdc = raspi-server-0.fritz.box
admin_server = raspi-server-0.fritz.box
}
[domain_realm]
.fritz.box = FRITZ.BOX
fritz.box = FRITZ.BOX
$ sudo cat /etc/idmapd.conf
[General]
Domain=fritz.box
Local-Realms=FRITZ.BOX
[Mapping]
Nobody-User=guest
Nobody-Group=users
[Translation]
Method=nsswitch,static
GSS-Methods=static,synomap
[Static]
myuser@FRITZ.BOX=myuser
Alles anzeigen
SSH über GSSAPI wird wohl auf dem Synology NAS nicht unterstützt, daher konnte ich das nicht ausprobieren.
Der Export für das Netzlaufwerk sieht so aus (das ist alles über DSM konfiguriert):
> sudo cat /etc/exports
Password:
/volume1/Daten *(rw,async,no_wdelay,crossmnt,insecure,no_root_squash,insecure_locks,sec=sys:krb5:krb5i:krb5p,anonuid=1025,anongid=100) tower-linux.fritz.box(rw,async,no_wdelay,crossmnt,insecure,no_root_squash,insecure_locks,sec=krb5:krb5i:krb5p,anonuid=1025,anongid=100)
Also müsste für den Client auch wirklich Kerberos genutzt werden, da für tower-linux.fritz.box sec=sys nicht erlaubt ist.
Mounten des Netzlaufwerkes auf dem Client
Jetzt zum eigentlichen Mounten. Hier kommt ein Fehler, dass eine falsche Mountoption genutzt wurde.
> sudo mount -t nfs -o sec=krb5,nfsvers=4 NAS.fritz.box:/volume1/Daten /mnt/nfs
mount.nfs: an incorrect mount option was specified for /mnt/nfs
> sudo mount NAS.fritz.box:/volume1/Daten /mnt/nfs
# dies funktioniert allerdings mit einem für mich seltsamen Ergebnis
> su
Passwort:
tower-linux:/ # cd /mnt/nfs
tower-linux:/mnt/nfs # ls
test.txt
tower-linux:/mnt/nfs # stat -c '%u' test.txt
4294967294
tower-linux:/mnt/nfs # stat -c '%U' test.txt
UNKNOWN
Alles anzeigen
Also irgendwie funktioniert das Mounten, d.h. dachte ich, dass das Kerberossetup funktioniert und es eher an dem Mapping der IDs liegt. Ich kann auch als root Dateien auf dem Netzlaufwerk erstellen, allerdings passen die Berechtigungen nicht.
Jetzt fehlt mir gerade ein Ansatz, wie ich das weiter eingegrenzt bekomme, um herauszufinden, wie ich das Netzlaufwerk korrekt mit den passenden Berechtigungen für myuser eingebunden bekomme.
Hättet ihr da Ideen, Anregungen oder Lösungen?
Vielen Dank!