devis switch : le trunk ne restreignait rien

`switchport trunk allowed vlan ?` sur le matériel confirme la syntaxe et
révèle un défaut : `add` ajoute à la liste courante, la forme sans mot-clé
la définit.

Le devis émettait `add`. Or un port trunk neuf autorise tous les VLAN — dans
une config réelle, les ports n'ont aucune ligne `allowed vlan`, ce qui
signifie exactement cela. Y ajouter la liste voulue n'en retranchait aucun :
le trunk continuait de tout transporter, et le devis donnait l'illusion de
restreindre. Le pire genre de défaut — ça a l'air juste, ça s'applique sans
erreur, et ça ne fait pas ce que ça annonce.

La forme sans mot-clé est aussi atomique : `none` puis `add` couperait le
trunk entre les deux commandes, ce qui suffit à perdre la session si on
l'applique sur le port de gestion.

Preuves : 24 OK, 0 échec.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-08-02 18:15:22 -04:00
parent 24959359e2
commit 34e65259ac
3 changed files with 30 additions and 4 deletions

View file

@ -1,5 +1,22 @@
# CHANGELOG — Set-OPS
## 2026-08-02 (suite 13) — le trunk ne restreignait rien
`switchport trunk allowed vlan ?` sur le matériel réel confirme la syntaxe **et** révèle un
défaut : `add` *ajoute* à la liste courante, la forme sans mot-clé la *définit*.
Le devis émettait `add`. Or un port trunk neuf autorise **tous** les VLAN — dans une
configuration réelle, les ports n'avaient aucune ligne `allowed vlan`, ce qui signifie
exactement cela. Y ajouter la liste des VLAN voulus n'en retranchait aucun : le trunk
continuait de tout transporter, et le devis donnait **l'illusion de restreindre**.
C'est le pire genre de défaut — une configuration qui a l'air juste, s'applique sans erreur,
et ne fait pas ce qu'elle annonce.
La forme sans mot-clé est retenue, et elle est aussi **atomique** : `none` puis `add` aurait
coupé le trunk entre les deux commandes, ce qui suffit à perdre la session si on l'applique
sur le port de gestion.
## 2026-08-02 (suite 12) — la syntaxe des routes, vérifiée sur le matériel
Un `show running-config` du commutateur Binardat tranche la question restée ouverte : la

View file

@ -295,9 +295,12 @@ ansible-vault edit instance/inventories/principal/group_vars/all/vault.yml
- ~~La syntaxe des routes~~**réglé le 2026-08-02**, confronté à un `show running-config`
Binardat : la plateforme écrit `ip route 0.0.0.0/0 <saut>` en notation CIDR. Le générateur
suit le dialecte.
- **Restent non vérifiés sur Binardat** : la syntaxe des ACL (`ip access-list extended`), celle
de `switchport trunk allowed vlan add`, et le **spanning-tree** — totalement absent du
`show running-config`, ce qui suggère qu'il est désactivé par défaut sur cette plateforme.
- ~~La syntaxe des trunks~~**réglé le 2026-08-02** par `switchport trunk allowed vlan ?`.
Le devis émet la forme **sans mot-clé**, qui *définit* la liste : `add` l'*ajoute* à
l'existante, et sur un port trunk neuf — qui autorise tous les VLAN — n'aurait rien
retranché. Le devis aurait donné l'illusion de restreindre.
- **Restent non vérifiés sur Binardat** : la syntaxe des ACL (`ip access-list extended`) et
celle du **spanning-tree**.
- **Les ports physiques restent à nommer**`<PORT-VERS-PROXMOX>`, `<PORT-VERS-FRONTIERE>`
et `<PORT-TRUNK>` ; rien dans le modèle ne peut les deviner.
- ~~**La sortie générale** n'est pas déclarée~~**réglé le 2026-08-02.** Elle est

View file

@ -137,7 +137,13 @@ def bloc_trunk(port: str, vlans: str, description: str = "", bord: bool = False)
out = [f"interface {port}"]
if description:
out.append(f" description {description}")
out += [" switchport mode trunk", f" switchport trunk allowed vlan add {vlans}"]
# `allowed vlan <liste>` DEFINIT la liste ; `allowed vlan add <liste>` l'AJOUTE a
# l'existante. Un port trunk neuf autorise tous les VLAN : `add` n'y retrancherait
# rien et le devis donnerait l'illusion de restreindre. La forme sans mot-cle est
# aussi atomique — `none` puis `add` couperait le trunk entre les deux commandes,
# ce qui suffit a perdre la session si on l'applique sur le port de gestion.
# Formes confirmees par `switchport trunk allowed vlan ?` (Binardat, 2026-08-02).
out += [" switchport mode trunk", f" switchport trunk allowed vlan {vlans}"]
if bord:
out.append(" spanning-tree portfast trunk")
return out