Executa o serviço em seu próprio namespace ip netns no Ubuntu 16.04

1

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
    
por yurtesen 02.03.2017 / 20:33

0 respostas