Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Routed network ACL rules with a protocol number are not applied on the VR (ip nexthdr instead of ip protocol)

Ouverte Adaptée aux débutants
#14,351 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@bhouse-nexthop y travaille déjà.

Depuis le 8/10/2026.

  • #14352 par @bhouse-nexthop — ouverte

É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

component:virtual-router
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
  1. Create a VPC in routed mode with an IPv4 tier. (Network ACLs only exist on VPC tiers.)
  2. Add an ACL rule to the tier's ACL list: protocol number 47, CIDR 0.0.0.0/0, action Allow.
  3. On the VR, run nft list table ip ip4_acl. The rule is missing from ethX_ingress_policy.
  4. grep "ip nexthdr" /var/log/cloud.log shows the failed nft 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

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/cloudstack

Toutes les issues de apache/cloudstack

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.