J'avais l'habitude de lancer les services dans 14.04 en exécutant
ip netns exec namespacename service start servicename
Mais je me suis rendu compte que cela ne fonctionne plus sous 16.04. Le service démarre dans l'espace de noms normal.
J'ai essayé de modifier le fichier /lib/systemd/system/servicename.service pour utiliser l'espace de noms mais sans succès. Le premier problème était que le programme était exécuté avec son propre utilisateur qui n'a pas accès aux espaces de noms. Je l'ai modifié pour exécuter le programme en tant que root puis utiliser sudo dans ExecStart mais pour une raison quelconque, le contrôle du service n'est jamais revenu à l'invite de commande.
Avez-vous des idées sur la façon d'accomplir un service pour qu'il s'exécute automatiquement et en permanence dans un espace de nom à chaque fois qu'il est redémarré sur Ubuntu 16.04 ?
Si cela a de l'importance, le service en question est transmission-daemon.
UPDATE :
J'ai réussi à le faire fonctionner avec le fichier .service suivant. Dans ce fichier, 'vpn' est le nom de l'espace de nom. Mon problème était de définir le mauvais Type
pour le service. Je continue à penser que cette solution n'est pas la meilleure. Si vous avez une meilleure solution, dites-le nous !
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target
[Service]
User=root
Type=simple
ExecStart=/bin/sh -c 'exec /sbin/ip netns exec vpn /usr/bin/sudo -u debian-transmission /usr/bin/transmission-daemon -f --log-error --config-dir /var/lib/transmission-daemon/info'
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target