Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン 初心者向け
#14,351 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@bhouse-nexthop がすでに取り組んでいます。

2026年10月8日 から。

  • #14352 @bhouse-nexthop による — オープン

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
82/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
linux, python
領域
networking

調査の方向性

ルーティングされた IPv4 ACL ルールが生成される systemvm/debian/opt/cloud/bin/configure.py の CsAcl.AclDevice.__process_routing_ip4() から始めます。IPv4 のマッチ条件を正しい IPv6 の経路と比較し、再現手順に従って生成されたルールを確認します。プロトコル 47 の ACL ルールを追加し、VR 上で nft list table ip ip4_acl を調べます。IPv4 ルールが ip protocol を使用し、ログに記録された nft エラーなしで ACL テーブルに表示されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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).

主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
10日 6時間
マージ済み PR(30日)
11

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/cloudstack のほかの issue

apache/cloudstack の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。