devis switch : la liaison des ACL n'existe pas sur une interface VLAN
`ip ?` sur une interface VLAN du Binardat n'offre aucun `access-group`, et la liste complète des commandes de ce mode n'en contient pas davantage. La ligne `ip access-group <NOM> in` posée sur les douze SVI n'existe pas sur cette plateforme. C'est la ligne qui rend l'isolation effective. Sans elle, les ACL de la section 3 sont parfaitement définies et jamais liées : `show access-lists` afficherait « used 0 time(s) », et rien d'autre ne signalerait que l'isolation inter-tenant ne filtre rien. Même signature que le défaut du trunk — une configuration qui a l'air juste et n'agit pas. Le `firewall disable` aperçu dans un `show running-config` prend rétrospectivement du sens : le filtrage semble conditionné globalement. Aucune forme de remplacement n'est devinée. Le devis porte un avertissement à cet endroit, en dialecte `binardat` uniquement — après trois syntaxes supposées dont deux fausses, marquer l'incertitude vaut mieux qu'un quatrième pari. Preuves : 24 OK, 0 échec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
b39a3a4735
commit
b5ca369ae7
3 changed files with 42 additions and 3 deletions
20
CHANGELOG.md
20
CHANGELOG.md
|
|
@ -1,5 +1,25 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-08-02 (suite 18) — la liaison des ACL n'existe pas sur une interface VLAN
|
||||
|
||||
`ip ?` sur une interface VLAN du Binardat n'offre **aucun `access-group`**, et la liste
|
||||
complète des commandes de ce mode n'en contient pas davantage. La ligne
|
||||
`ip access-group <NOM> in` que le devis pose sur les douze SVI n'existe donc pas sur cette
|
||||
plateforme.
|
||||
|
||||
**C'est la ligne qui rend l'isolation effective.** Sans elle, les ACL de la section 3 sont
|
||||
parfaitement définies et jamais liées : `show access-lists` afficherait « used 0 time(s) », et
|
||||
rien d'autre ne signalerait que l'isolation inter-tenant ne filtre rien. Même signature que le
|
||||
défaut du trunk — une configuration qui a l'air juste et n'agit pas.
|
||||
|
||||
Le `firewall disable` aperçu dans un `show running-config` prend rétrospectivement du sens :
|
||||
le filtrage semble conditionné globalement.
|
||||
|
||||
**Aucune forme de remplacement n'est devinée.** Le devis porte un avertissement à cet endroit,
|
||||
en dialecte `binardat` uniquement — après trois syntaxes supposées dont deux fausses, marquer
|
||||
l'incertitude vaut mieux qu'un quatrième pari. Reste à trancher sur une interface **physique**
|
||||
(`ip ?`, `access-group ?`) et sur le rôle de `firewall enable`.
|
||||
|
||||
## 2026-08-02 (suite 17) — spanning-tree vérifié : les six familles sont closes
|
||||
|
||||
`spanning-tree ?` en mode configuration tranche la dernière inconnue, **en faveur de la forme
|
||||
|
|
|
|||
|
|
@ -324,11 +324,20 @@ surtout les trunks, dont la forme `add` ne retranchait rien.
|
|||
| Ligne émise | Où | Risque |
|
||||
|---|---|---|
|
||||
| `spanning-tree portfast trunk` | interface | `trunk` est un mot-clé Cisco ; l'équivalent s'écrit souvent `spanning-tree portfast` seul, voire `edged-port` |
|
||||
| `ip access-group <NOM> in` | interface | c'est ce qui **lie** l'ACL au SVI — sans elle, l'ACL existe et ne filtre rien |
|
||||
| `ip access-group <NOM> in` | interface VLAN | **probablement invalide** : `ip ?` sur une interface VLAN n'offre aucun `access-group` (vérifié le 2026-08-02). Le filtrage semble aussi conditionné globalement par `firewall enable` |
|
||||
| `ip default-gateway <ip>` | global | forme des switches d'accès (partie B) |
|
||||
|
||||
L'aide de `spanning-tree ?` en mode configuration **globale** ne couvre pas les commandes
|
||||
d'interface : `(config-if)#spanning-tree ?` et `(config-if)#ip ?` les donneraient.
|
||||
Sur une **interface VLAN**, ni `spanning-tree` ni `ip access-group` n'existent (liste complète
|
||||
des commandes vérifiée). Pour `portfast` c'est attendu — il vise un port physique. Pour la
|
||||
liaison des ACL, non : c'est le mécanisme qui rend l'isolation effective.
|
||||
|
||||
**Conséquence, et elle est lourde** : appliqué tel quel, le devis produirait des ACL
|
||||
parfaitement définies et **jamais liées**. `show access-lists` afficherait « used 0 time(s) »,
|
||||
et rien d'autre ne signalerait que l'isolation inter-tenant ne filtre pas. Le devis porte
|
||||
désormais un avertissement à cet endroit, en dialecte `binardat` uniquement.
|
||||
|
||||
Reste à trancher sur une interface **physique** : `ip ?`, `access-group ?`, `spanning-tree ?`
|
||||
— et le rôle de `firewall enable`.
|
||||
- **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
|
||||
|
|
|
|||
|
|
@ -477,6 +477,16 @@ def generer(tenants: list[tuple[str, str, dict]], dialecte: str | None = None) -
|
|||
out.append(f"vlan {vlan_de(n['index'], zone)}")
|
||||
out.append(f" name {pfx}{n['index']}-{c['libelle']}")
|
||||
out += ["!", "! ----- 2. Interfaces de routage (SVI = passerelle des hotes) -----"]
|
||||
if dialecte == "binardat":
|
||||
out += [
|
||||
"! /!\\ LA LIGNE `ip access-group ... in` CI-DESSOUS EST DOUTEUSE SUR CETTE",
|
||||
"! PLATEFORME : `ip ?` sur une interface VLAN n'offre AUCUN `access-group`",
|
||||
"! (verifie le 2026-08-02). Appliquee telle quelle, elle serait refusee — ou pire,",
|
||||
"! ignoree : les ACL de la section 3 existeraient sans rien filtrer, exactement",
|
||||
"! comme un `show access-lists` affichant « used 0 time(s) ».",
|
||||
"! Le filtrage semble par ailleurs conditionne globalement (`firewall enable`).",
|
||||
"! A trancher par `ip ?` et `access-group ?` sur une interface PHYSIQUE.",
|
||||
]
|
||||
for nom, pfx, n in tenants:
|
||||
m = masque(int(n.get("cidr_hote", 24)))
|
||||
for zone in sorted(n["categories"]):
|
||||
|
|
|
|||
Loading…
Reference in a new issue