Routed network ACL rules with a protocol number are not applied on the VR (ip nexthdr instead of ip protocol)
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- linux, python
- Domaine
- networking
Piste de recherche
Commencez dans systemvm/debian/opt/cloud/bin/configure.py, à CsAcl.AclDevice.__process_routing_ip4(), où les règles ACL IPv4 routées sont générées. Comparez la correspondance IPv4 avec le chemin IPv6 correct et vérifiez la règle générée en suivant les étapes de reproduction : ajoutez une règle ACL pour le protocole 47, puis inspectez nft list table ip ip4_acl sur la VR. Le travail est terminé lorsque la règle IPv4 utilise ip protocol et apparaît dans la table ACL sans l’échec nft consigné dans les journaux.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
problem
On a VPC in routed mode (IPv4 routing, introduced in 4.20 with #9470), a network ACL rule that uses a protocol number (e.g. 47 for GRE) is never applied on the VR.
CsAcl.AclDevice.__process_routing_ip4() in systemvm/debian/opt/cloud/bin/configure.py renders it as:
ip saddr 1.2.3.4/32 ip nexthdr 47 accept
nexthdr is an IPv6 header field. The IPv4 equivalent is ip protocol, so nft rejects the rule:
$ nft add rule ip ip4_acl eth3_ingress_policy ip saddr 1.2.3.4/32 ip nexthdr 47 accept
Error: syntax error, unexpected string
add rule ip ip4_acl eth3_ingress_policy ip saddr 1.2.3.4/32 ip nexthdr 47 accept
^^^^^^^
The rules are added one nft add rule at a time and the failure is only logged (/var/log/cloud.log records the non-zero exit status; nft's message goes to stderr), so the rule is silently missing from ip4_acl while the rest of the ACL loads. An allow rule for that protocol therefore never matches. A deny rule for it is also lost, so that traffic falls through to whatever later rule matches it.
The IPv6 path (__process_ip6, ip6 nexthdr) is correct. Non-routed VPCs use iptables and are not affected.
versions
CloudStack 4.20 onward (still present on 4.22).
The steps to reproduce the bug
- Create a VPC in routed mode with an IPv4 tier. (Network ACLs only exist on VPC tiers.)
- Add an ACL rule to the tier's ACL list: protocol number
47, CIDR0.0.0.0/0, action Allow. - On the VR, run
nft list table ip ip4_acl. The rule is missing fromethX_ingress_policy. grep "ip nexthdr" /var/log/cloud.logshows the failednft add rule(returned non-zero exit status 1).
What to do about it?
Render the IPv4 match as ip protocol <n>, which nft accepts (it lists it as ip protocol gre).
- Langage dominant
- Java
- Étoiles
- 3.1k
- Forks
- 1.4k
- Merge moyen
- 10 j 13 h
- PR mergées (30 j)
- 10
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/cloudstack
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
apache/cloudstack#14381 ·
Les mainteneurs répondent en général sous 1 jour
-
listPublicIpAddresses NullPointerException on shared networks with a VR (4.22)Peut-être pris @MitchDrage l’a pris il y a 16 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
apache/cloudstack#14248 ·
Les mainteneurs répondent en général sous 1 jour
-
CKS: upgradeKubernetesCluster fails on control node when binaries ISO ships headlamp.yaml instead of dashboard.yamlPeut-être pris @mw-0 l’a pris il y a 17 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
apache/cloudstack#14244 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Resize volume API validation errors are not displayed in the UIPeut-être pris @sathvikaragi l’a pris il y a 19 jours. Ouvertebug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
apache/cloudstack#14222 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
create-kubernetes-binaries-iso.sh builds the ISO without setting a volume ID on EL8 based os'sOuvertebug component:kubernetes
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
apache/cloudstack#14180 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de apache/cloudstack
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
openhab/openhab-addons#21921 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
jellyfin/jellyfin-androidtv#5885 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
objectionary/eo-graphs#85 ·
-
XtYaml throws a bare ClassCastException when sheets or asserts is a scalar or holds a non-stringOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
objectionary/xax#246 ·
Les mainteneurs répondent en général sous 1 jour