You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
3.3 KiB
64 lines
3.3 KiB
# Usage
|
|
Les fichiers *ifup.sh* et *ifdown.sh* sont les scripts de gestion des *VLAN* pour les conteneurs [Systemd-nspawn](https://doc.ycharbi.fr/index.php/Conteneurs_-_systemd) écrit par mes soins. Ils se bases sur la technologie de [filtrage des *VLAN*](https://doc.ycharbi.fr/index.php/Vlan_-_linux) du noyau *Linux*.
|
|
* *ifup.sh* permet la création et le placement d'une interface réseau dans un *VLAN* ou dans un tronc *802.1Q*. Il se charge également de l'intégrer à un pont spécifique (l'existence préalable de ce dernier est requise)
|
|
* *ifdown* se charge de supprimer les interfaces créées par *Systemd-nspawn* après l'extinction du conteneur
|
|
|
|
Afin qu'ils s'exécutent au démarrage et à l'arrêt d'un conteneur, il faut [modifier](https://philip-trauner.me/blog/post/machinectl-autologin) le service `systemd-nspawn@.service` pour y ajouter les directives adéquates (notez l'emplacement des fichiers) :
|
|
|
|
``` bash
|
|
systemctl edit systemd-nspawn@.service
|
|
```
|
|
|
|
Collez-y le contenu suivant. Ceci aura pour effet de créer le fichier `/etc/systemd/system/systemd-nspawn@.service.d/override.conf` qui persistera aux mises à jour du paquet *systemd-container*.
|
|
|
|
``` ini
|
|
[Service]
|
|
ExecStartPre=/etc/systemd/nspawn/ifup.sh %i
|
|
ExecStart=
|
|
ExecStart=systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i
|
|
ExecStopPost=/etc/systemd/nspawn/ifdown.sh %i
|
|
```
|
|
*Note : j'ai également retiré le `-U` des paramètres d'initialisation, d'où les deux `ExecStart=` (le premier, vide, permettant de réinitialiser la valeur par défaut). Ceci correspond à un besoin personnel et est facultatif.*
|
|
|
|
|
|
Pour configurer les interfaces réseaux d'un conteneur, il faut ajouter deux lignes de commentaires **au dessus** de chaque directive `Interface=` dans le [fichier de configuration](https://doc.ycharbi.fr/index.php/Conteneurs_-_systemd#Fichier_de_configuration) de celui-ci.
|
|
|
|
Pour une interface non étiqueté :
|
|
|
|
``` ini
|
|
PONT=votrepont
|
|
VLAN=vid
|
|
```
|
|
|
|
Pour une interface de tronc 802.1Q :
|
|
``` ini
|
|
PONT=votrepont
|
|
8021Q=vid1,vi2,vid3
|
|
```
|
|
|
|
Il est possible de mixer les notions au travers de plusieurs interfaces comme dans l'exemple suivant (fichier `/etc/systemd/nspawn/web.nspawn`) :
|
|
``` ini
|
|
[Network]
|
|
#PONT=br0
|
|
#VLAN=100
|
|
Interface=web_100
|
|
#PONT=br0
|
|
#VLAN=121
|
|
Interface=web_121
|
|
#PONT=br0
|
|
#8021Q=5,210
|
|
Interface=web_T1
|
|
#PONT=br0
|
|
#8021Q=181,1109
|
|
Interface=web_T2
|
|
```
|
|
|
|
Le script vérifie que ce que vous avez renseigné est valide. S'il rencontre la moindre erreur, il s'interrompt sans modifier le système et vous oriente sur le problème.
|
|
|
|
:warning: *J'attire votre attention sur le fait que l'ajout, en cours de fonctionnement, de directives `Interface=` dans le ficher de configuration de votre conteneur a pour effet de neutraliser l'exécution d'*ifdown.sh*. Ceci est intrinsèque à la façon dont il fonctionne. Les interfaces créées par *ifup.sh* devront alors êtres supprimées manuellement.* :warning:
|
|
# Tests sans altérations
|
|
Si vous voulez modifier les scripts, il peut être pratique d'afficher les commandes générées au lieu de les appliquer lors de vos tests. Pour ce faire, vous pouvez ajouter la commande `echo` devant l'action d'exécution comme suit dans la fonction `execCmdIntRzo()` :
|
|
|
|
``` bash
|
|
echo ${commandes_a_executer["${id_commande_rzo}"]}
|
|
``` |