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.
65 lines
3.6 KiB
65 lines
3.6 KiB
# Usage
|
|
Les fichiers *ifup.sh* et *ifdown.sh* sont les scripts de gestion des interfaces réseaux supportant les *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 l'attribution d'une interface physique à un conteneur ainsi que la création et le placement d'une interface réseau virtuelle 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 scripts dans l'exemple) :
|
|
|
|
``` 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
|
|
ExecStopPost=/etc/systemd/nspawn/ifdown.sh %i
|
|
```
|
|
|
|
Pour configurer les interfaces réseaux d'un conteneur, il faut :
|
|
* pour une interface virtuelle : 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 physique : utiliser la directive `Interface=` de façon [normale](https://www.freedesktop.org/software/systemd/man/systemd.nspawn.html#Interface=) en veillant à ne pas avoir l'une des deux lignes de commentaire dans les deux lignes au dessus de celle-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
|
|
|
|
Interface=eth2
|
|
#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. En utilisation avec un conteneur, les messages de retour du script sont visibles dans le journal du service via `systemctl status systemd-nspawn@votreConteneur.service` ou `journalctl -xe`.
|
|
|
|
: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 se faire, vous pouvez ajouter la commande `echo` devant l'action d'exécution comme suit (et comme précisé en commentaire dans le script) dans la fonction `execCmdIntRzo()` (le script exige un nom de conteneur en paramètre) :
|
|
|
|
``` bash
|
|
echo ${commandes_a_executer["${id_commande_rzo}"]}
|
|
```
|