ich hab mir mit meinem Home-Server scheinbar ein Ei gelegt. Man könnte auch sagen, ich habe ein Henne-Ei-Problem.
Ich habe auf meinem Home-Server (Debian Stretch) eine VM. Diese VM stellt LDAP bereit, unter anderem auch für die Host-Maschine. Das funktioniert auch so weit.
... zumindest bis zu einem Reboot!
Dann kommt nämlich libvirtd nicht hoch. Demnach kommt die VM mit dem LDAP drin auch nicht hoch, ergo keine LDAP-User auf der Host-Maschine. Der Spaß beginnt, wenn man sich anschaut, warum libvirtd nicht hoch kommt.
Code: Alles auswählen
● libvirtd.service - Virtualization daemon
Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-01-15 21:25:45 CET; 1min 8s ago
Docs: man:libvirtd(8)
http://libvirt.org
Main PID: 1005 (libvirtd)
Tasks: 17 (limit: 9830)
CGroup: /system.slice/libvirtd.service
└─1005 /usr/sbin/libvirtd
Jan 15 21:26:43 HomeServer libvirtd[1005]: nss_ldap: reconnecting to LDAP server...
Jan 15 21:26:46 HomeServer libvirtd[1005]: nss_ldap: could not connect to any LDAP server as <SAG_ICH_NICH> - Can
Jan 15 21:26:46 HomeServer libvirtd[1005]: nss_ldap: failed to bind to LDAP server ldaps://<SAG_ICH_NICHT>: Can't contact LD
Jan 15 21:26:46 HomeServer libvirtd[1005]: nss_ldap: reconnecting to LDAP server (sleeping 1 seconds)...
Jan 15 21:26:49 HomeServer libvirtd[1005]: nss_ldap: could not connect to any LDAP server as <SAG_ICH_NICHT> - Can
Jan 15 21:26:49 HomeServer libvirtd[1005]: nss_ldap: failed to bind to LDAP server ldaps://<SAG_ICH_NICHT>: Can't contact LD
Jan 15 21:26:49 HomeServer libvirtd[1005]: nss_ldap: could not search LDAP server - Server is unavailable
Jan 15 21:26:52 HomeServer libvirtd[1005]: nss_ldap: could not connect to any LDAP server as <SAG_ICH_NICHT> - Can
Jan 15 21:26:52 HomeServer libvirtd[1005]: nss_ldap: failed to bind to LDAP server ldaps://<SAG_ICH_NICHT>: Can't contact LD
Jan 15 21:26:52 HomeServer libvirtd[1005]: nss_ldap: reconnecting to LDAP server...
Es sieht also so aus, dass libvirtd nicht startet, weil der LDAP-Server nicht erreichbar ist. Der LDAP-Server wiederum ist nicht erreichbar, weil libvirtd nicht startet. Und da beißt sich die Katze dann in den eigenen Schwanz.
Die kurzfristige Lösung für mich war nun, die /etc/nsswicht.conf zu bearbeiten, dort jegliche Referenz auf LDAP zu entfernen, dann nscd und libvirtd neu zu starten. Dann kam die VM auch problemlos hoch, und danach die nsswitch wieder an zu passen und nscd nochmal neu zu starten, damit die LDAP-User auf dem Host-System auch verfügbar sind. Das funktioniert zwar, wenn ich das allerdings bei jedem Reboot machen muss, hab ich da langfristig ein ungutes Gefühl bei.
Allerdings war ich von dem Verhalten auch etwas überrascht. Ich hätte nicht gedacht, dass libvirtd den LDAP-Zugriff braucht (bzw eigentlich braucht nscd den) um zu starten. Ich wäre jetzt davon ausgegangen, dass, solange der LDAP nicht verfügbar ist, eben nur lokale System-User verfügbar sind, und das auf den Start der VMs keinen Einfluss hat. Tja, da hab ich wohl die Rechnung ohne den Wirt gemacht.
Die Fragen die sich mir nun stellen sind:
1. Wie kann ich das Problem elegant lösen?
2. Warum ist das überhaupt so? Wie gesagt, ich hätte nicht mit einer Abhängigkeit zwischen LDAP-Zugriff und dem starten von VMs gerechnet.
Schöne Grüße
Look
Edit:
Ergänzend hier noch meine nsswitch.conf
Code: Alles auswählen
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
gshadow: files ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis