web-dev-qa-db-fra.com

Qu'est-ce qui ne va pas avec dhcpd (isc-dhcp-server) dans le conteneur LXC? Pourquoi ça ne fait rien?

J'ai essayé à plusieurs reprises, sur différentes machines Ubuntu: l'exécutable dhcpd (installé dans /usr/sbin/dhcpd via le package isc-dhcp-server) à l'intérieur du conteneur LXC semblant unique En effet, lorsqu'il est exécuté à partir de la ligne de commande, il doit sortir avec le code de sortie 1 .

Je veux exécuter le programme manuellement pour obtenir des messages d'erreur interactifs et des problèmes de débogage dans la configuration.

Par exemple, lors de l'exécution de $ dhcpd --version, j'attendrais au moins une version similaire à celle de l'hôte.

$ dhcpd --version
isc-dhcpd-4.3.5
$ 

À l'intérieur du conteneur LXC (mais pas dans VirtualBox), la dhcpd ne génère toujours rien sur stdout, quelles que soient les options de la ligne de commande.


modifier:

J'ai comparé le résultat de l'exécution de strace dhcpd --version sur le conteneur LXC et sur l'hôte. Il n'y a qu'une seule différence, à la toute fin de la sortie. Sur invité de LXC:

connect(3, {sa_family=AF_UNIX, Sun_path="/dev/log"}, 110) = 0
write(2, "isc-dhcpd-", 10)              = -1 EACCES (Permission denied)
write(2, "4.3.5", 5)                    = -1 EACCES (Permission denied)
write(2, "\n", 1)                       = -1 EACCES (Permission denied)
futex(0x7f2637e2882c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

La partie analogue de l'hôte se lit comme suit:

connect(3, {sa_family=AF_UNIX, Sun_path="/dev/log"}, 110) = 0
write(2, "isc-dhcpd-", 10isc-dhcpd-)              = 10
write(2, "4.3.5", 54.3.5)                    = 5
write(2, "\n", 1
)                       = 1
futex(0x7f95cadac82c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

J'ai rempli le problème contre LXD à propos de ce problème, voir https://github.com/lxc/lxd/issues/5378

1
Adam Ryczkowski

Essayez de lancer "strace dhcpd --version" pour voir si cela donne plus d’informations.

Modifier:

write(2, "isc-dhcpd-", 10)              = -1 EACCES (Permission denied)

Cela signifie que le processus ne peut pas écrire dans STDERR (descripteur de fichier 2).

Félicitations, vous avez touché Ubuntu bug 1641236 ou 1667016 Citation de lxc numéro 29

Vous avez cependant quelques solutions de contournement disponibles: Utiliser ssh au lieu de "lxc exec" devrait fonctionner correctement (car ssh allouera sa propre paire pts) Utiliser "lxc exec" puis lancer une session "script" devrait avoir le même effet que ssh Vous pouvez désactiver le profil tcpdump apparmor en créant un lien symbolique avec /etc/apparmor.d/disable/, puis en rechargeant apparmor dans le conteneur (ou en le redémarrant).

La dernière solution semble fonctionner pour les deux bogues

ln -s /etc/apparmor.d/usr.sbin.dhcpd /etc/apparmor.d/disable/
1
Achilleas Kotsis