Skip to content

[Bug] IPv6 forwarding falsely blocked by Docker veth interfaces #13915

Description

@ZeonXr

Contact Information

No response

1Panel Version

v2.3.2 (stable)

Problem Description

在 1Panel v2.3.2 的“防火墙 → 端口转发”页面添加 IPv6 转发规则时,RA 安全检查阻止操作,并将多个 Docker veth* 列为 accept_ra=1、可能依赖 RA/SLAAC 的网卡。

实际接收 RA 的上联网卡 eth0 已设置 accept_ra=2,有全局 IPv6 地址和 RA 默认路由,宿主机 IPv6 通信正常。告警中的 veth* 全部连接到 Docker bridge,只有 fe80:: 链路本地地址,没有全局 IPv6 地址或 RA 路由;对应的 Docker 网络均为 IPv4-only(EnableIPv6=false)。

初步定位:IPv6RAInterfaces() 会把“没有全局 IPv6 地址”的网卡也加入 RA 候选,再因 accept_ra=1 阻止操作,从而误判这些临时 veth:https://github.com/1Panel-dev/1Panel/blob/v2.3.2/agent/utils/firewall/forwarding/sysctl.go#L100-L123

这与 #13876 中启用转发后实际 IPv6 断网的现象不同:当前上联网卡的 RA 工作正常,是保护检查对 Docker veth 的误判。

Steps to Reproduce

  1. 在 1Panel v2.3.2 主机上运行多个连接 Docker bridge 网络的容器,使宿主机出现 veth*;这些 Docker 网络未启用 IPv6。
  2. 确认 net.ipv6.conf.all.forwarding=1、实际上联网卡 eth0.accept_ra=2,且 eth0 有 RA 默认路由。
  3. 在“防火墙 → 端口转发”页面添加 IPv6 转发规则。
  4. 1Panel 提示多个 veth* 的 accept_ra=1 可能依赖 RA/SLAAC,并阻止操作。
Image

The expected correct result

RA 安全检查应识别实际依赖 RA 的网卡;仅有链路本地地址、连接到 IPv4-only Docker bridge 且没有 RA 路由的临时 veth,不应因默认的 accept_ra=1 阻止 IPv6 转发。实际上联网卡已设置 accept_ra=2 时,应允许创建规则。

Related log output

Additional Information

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions