# LSB tags, iptables, et runlevel

**URL:** <https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404>\
**Category:** Support Debian\
**Created:** [Février 20, 2016, 9:41 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404 "2016-02-20T21:41:32Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lancazar](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/b782af/32.png) [@Lancazar](https://www.debian-fr.org/u/Lancazar)\
**Post date:** [Février 20, 2016, 9:41 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404/1 "2016-02-20T21:41:32Z")

</div>

Bonjour,

Je suis en train de configurer iptables, et j’écrivais mon script de démarrage. Voici donc les lsb-flags que je lui ai donné :

### BEGIN INIT INFO

# Provides: iptables configuration

# Required-Start: $local\_fs $network

# Required-Stop: $local\_fs $remote\_fs

# Default-Start: 3 5

# Default-Stop: 0 1 2 4 6

# Short-Description: règles de filtrage

# Description: Iptables is an open-source firewall

### END INIT INFO

au départ, les runlevel étaient ainsi :  
2 3 4 5  
0 1 6

voici les sorties d’“update-rc iptables defaults” :  
avec Default-Start: 2 3 4 5  
update-rc.d: using dependency based boot sequencing  
insserv: warning: current stop runlevel(s) (empty) of script `iptables' overwrites defaults (0 1 6). insserv: warning: current stop runlevel(s) (empty) of script`iptables’ overwrites defaults (0 1 6).  
avec Default-Start: 3 5  
pdate-rc.d: using dependency based boot sequencing  
update-rc.d: warning: iptables start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (3 5)  
update-rc.d: warning: iptables stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (0 1 2 4 6)  
insserv: warning: current start runlevel(s) (2 3 4 5) of script `iptables' overwrites defaults (3 5). insserv: warning: current stop runlevel(s) (empty) of script`iptables’ overwrites defaults (0 1 2 4 6).  
insserv: warning: current start runlevel(s) (2 3 4 5) of script `iptables' overwrites defaults (3 5). insserv: warning: current stop runlevel(s) (empty) of script`iptables’ overwrites defaults (0 1 2 4 6).

Alors… Pourquoi ne me permet-il pas de choisir tranquillement mes runlevel ? comment faire pour éviter les avertissements ?

Merci 🙂

---

<div class="post-metadata">

**Author:** ![Lancazar](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/b782af/32.png) [@Lancazar](https://www.debian-fr.org/u/Lancazar)\
**Post date:** [Février 20, 2016, 9:42 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404/2 "2016-02-20T21:42:08Z")

</div>

Je ne sais toujours pas à quoi correspondent ces avertissements, mais le boot se passe correctement, mes règles marchent et mon pare-feu est niquel 🙂 .

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 20, 2016, 9:42 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404/3 "2016-02-20T21:42:08Z")

</div>

Je ne pourrai pas réellement te dire pourquoi ça fait ça : j’ai eu ce genre d’avertissements aussi en jouant avec les runlevel, ils sont partis quand j’ai bidouillé le script et je ne me suis jamais vraiment posé la question puisqu’il ne me dit plus rien. 😒

Je soupçonne (sans avoir le courage de vérifier) que c’est parce que je/tu avons un peu trop joué avec les runlevels et fait des update … defaults sans forcément faire de update … remove avant.

Par contre, si je peux te donner un conseil… Démarre ton iptables avant que tes interfaces soient montées : ça évite un “trou” (même minuscule) durant lequel tu as du réseau sans firewall.  
Pour ça, il faut démarrer en S juste avant “networking” (qui monte les interfaces) mais après “ifupdown” (à priori nécessaire, je n’ai pas testé sans mais ça mange pas de pain) et “mountkernfs” (pour pouvoir configurer certains paramètres réseau dans /proc).

Aussi, pas besoin de Stop (inutile de faire un flush des règles quand tu éteins la machine).

Mon header, qui fait tout ça sans avertissements :

[code]### BEGIN INIT INFO

# Provides: le-nom-de-ton-script

# Required-Start: mountkernfs ifupdown $local\_fs

# X-Start-Before: networking

# Default-Start: S

# Required-Stop:

# Default-Stop:

# Short-Description: Configure the ip(6)tables firewall.

# Description: Configure the ip(6)tables firewall.

### END INIT INFO[/code]

Puis pour mettre à jour :

`## le "remove" risque de te donner des avertissements, si oui suis ses conseils
update-rc.d le-nom-de-ton-script remove
update-rc.d le-nom-de-ton-script defaults`

Ce qui me fait penser que ton “iptables configuration” (avec espace) dans le “Provides” c’est pas forcément très catholique. Ou pas.

---

<div class="post-metadata">

**Author:** ![Lancazar](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/b782af/32.png) [@Lancazar](https://www.debian-fr.org/u/Lancazar)\
**Post date:** [Février 20, 2016, 9:42 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404/4 "2016-02-20T21:42:10Z")

</div>

D’accords pour les dépendances, mais le runlevel S ??

Est-ce qu’il démarre bien dans tous les runlevel ?  
Il me semble que c’est le mode mono-utilisateur, non ?

Edit, j’ai trouvé pour les warnings :

### BEGIN INIT INFO

# Provides: ipconf

# Required-Start: mountkernfs ifupdown $local\_fs

# X-Start-Before: networking

# Default-Start: 2 3 4 5

# Required-Stop:

# Default-Stop: 0 1 6

# Short-Description: Configure the iptables firewall.

# Description: Configure the iptables firewall.

### END INIT INFO

pour le runlevel 2 : normalement, aucun démon n’est lancé à ce niveau, ni d’interfaces réseau. C’est ce que je croyais, et c’est pourquoi je ne l’avais pas indiqué après documentation. Or, Debian semble le considérer différemment, d’où l’inclusion ici.

avec  
update-rc.d -f ./ipconf remove  
update-rc.d ./ipconf defaults

tout roule.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 20, 2016, 9:42 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404/5 "2016-02-20T21:42:25Z")

</div>

[quote=“Lancazar”]D’accords pour les dépendances, mais le runlevel S ??

Est-ce qu’il démarre bien dans tous les runlevel ?  
Il me semble que c’est le mode mono-utilisateur, non ?[/quote]

Lors du démarrage de ta machine le runlevel S est toujours exécuté avant de basculer vers 2/3/4/5 selon je-ne-sais-plus-quelle-règle. D’ailleurs si tu regardes /etc/init.d/networking (qui déclenche, entre autres, un ifup de toutes tes interfaces réseau) il ne démarre qu’en S et pourtant tes interfaces sont bien actives dans tous les runlevel.

Donc, en runlevel 2/3/4/5 le X-Start-Before networking est impossible à satisfaire puisque ce dernier a été lancé depuis belle lurette. La raison pour laquelle insserv ne grogne pas doit être qu’il ne fait pas de comparaisons inter-runlevels mais uniquement intra.

De toutes façons, une fois ton iptables configuré en S, peu importe vers quel runlevel tu bascules ensuite, les règles ne vont pas s’effacer toutes seules. Sachant, je me répète, que le S est systématiquement exécuté à chaque boot, peu importe vers quel runlevel “final” tu te diriges.

---

<div class="post-metadata">

**Author:** ![Lancazar](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/b782af/32.png) [@Lancazar](https://www.debian-fr.org/u/Lancazar)\
**Post date:** [Février 20, 2016, 9:42 UTC](https://www.debian-fr.org/t/lsb-tags-iptables-et-runlevel/25404/6 "2016-02-20T21:42:30Z")

</div>

D’accord, merci pour les précisions.
