Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở Phù hợp với người mới
#14,351 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@bhouse-nexthop đang làm issue này rồi.

Từ ngày 8/10/2026.

  • #14352 của @bhouse-nexthop — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
82/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
linux, python
Lĩnh vực
networking

Hướng nghiên cứu

Bắt đầu tại systemvm/debian/opt/cloud/bin/configure.py, ở CsAcl.AclDevice.__process_routing_ip4(), nơi các quy tắc ACL IPv4 được định tuyến được tạo. So sánh điều kiện khớp IPv4 với đường xử lý IPv6 chính xác và xác nhận quy tắc được tạo theo các bước tái hiện: thêm một quy tắc ACL cho giao thức 47, sau đó kiểm tra nft list table ip ip4_acl trên VR. Hoàn tất khi quy tắc IPv4 sử dụng ip protocol và xuất hiện trong bảng ACL mà không có lỗi nft được ghi lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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

Ngôn ngữ chính
Java
Star
3.1k
Fork
1.4k
Merge trung bình
10 ngày 6 giờ
Pull request đã merge (30 ngày)
11

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/cloudstack

Tất cả issue của apache/cloudstack

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.