Eu costumava executar serviços em 14.04 executando
ip netns exec namespacename service start servicename
Mas percebi que isso não funciona mais em 16.04. O serviço começa no namespace normal.
Eu tentei editar o arquivo /lib/systemd/system/servicename.service para usar o namespace, mas ele não foi bem-sucedido. O primeiro problema foi que o programa foi executado com seu próprio usuário que não tem acesso a namespaces. Eu mudei para executar o programa como root, em seguida, use o sudo no ExecStart, mas por algum motivo o controle de serviço nunca voltou ao prompt de comando.
Alguma idéia de como realizar um serviço para ser executado de forma automática e permanente dentro de um namespace sempre que ele for reiniciado no Ubuntu 16.04?
Se for importante, o serviço em questão é o daemon de transmissão
ATUALIZAÇÃO:
Consegui fazê-lo funcionar com o seguinte arquivo .service. No arquivo 'vpn' é o nome do namespace. Meu problema foi definir o Type
incorreto para o serviço. Eu ainda sinto que esta solução não é a melhor solução. Se você tem uma maneira melhor, por favor diga!
[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