Kann eine Anwendung angewiesen werden, beim Booten in einem Netzwerk-Namespace zu starten, anstatt nur normal zu starten? Ich verwende einen Transmission-Daemon auf Ubuntu 14.04 LTS. Es bootet beim Start, was großartig ist, ich brauche es nur, um in einem Namespace zu starten. Ich habe meinen Namespace mit Pre-Up in der Datei / etc / network / interfaces erstellt. Es scheint, als wäre der effizienteste Weg, einfach zu ändern, was den Dienst bereits dazu bringt, beim Booten zu starten, aber ich könnte mich irren.
2
ip netns exec vpn service transmission-daemon start
. Ich denke, ich könnte das einfach beim Booten laufen lassen, aber das scheint eine sehr unangenehme Art zu sein. Um zu erwähnen, müsste ich sicherstellen, dass es ausgeführt wird, nachdem der Namespace erstellt wurde. Aus diesem Grund habe ich mich gefragt, ob es eine Möglichkeit gibt, dies zu tun, indem ich nur ändere, was den Start beim Start bereits veranlasst hat.Antworten:
Der "Start beim Booten" Teil:
Schreiben Sie eine Upstart-Dienstkonfiguration und fügen Sie sie ein
/etc/init
. Das Kochbuch enthält Beispiele. Alternativ können Sie das vorhandene ändern,transmission.conf
falls vorhanden.Für zukünftige Ubuntu-Versionen (15.04 und höher) müssen Sie jedoch systemd verwenden. Schreiben Sie ein
transmission.service
und legen Sie es in/etc/systemd/system
.Der Teil "… in einem Netz":
Beim Überprüfen des Upstart-Kochbuchs gibt es keine verwandten Einstellungen (abgesehen von einer einfachen Chroot). Die meisten vorhandenen Upstart-Init-Skripte sind für solche Aufgaben in der Tat immer noch auf externe Tools angewiesen
ip netns
.Gleiches gilt derzeit für systemd. Während es JoinsNamespaceOf = hat , können Sie nur eine andere Service-Einheit und noch keinen benannten Namespace angeben.
quelle
original transmission-daemon.conf
. : D