让 macvlan 容器拿到 IPv6:endpoint sysctls + SLAAC

macvlan(ipvlan 同理)容器默认没有 IPv6:只有 link-local 地址,没有默认路由。原因不是网络不通,而是 Docker 在网络的 EnableIPv6 为 false 时,会主动把容器接口的 disable_ipv6 置 1。 下面是家庭宽带(前缀由运营商动态下发)场景下的正确配置。 先确认是这个问题 $ docker exec <容器> ip -6 addr show eth0 inet6 fe80::ef5:b3ae:a64e:e782/64 scope link # 只有 link-local $ docker exec <容器> cat /proc/sys/net/ipv6/conf/eth0/disable_ipv6 1 # 被管理性关闭 不要给 docker 网络声明 v6 子网 看着「正规」的写法是这样,但对家庭宽带是错的: networks: macvlan_net: enable_ipv6: true ipam: config: - subnet: 2408:xxxx:xxxx:xxx::/64 # ← 别这么写 这个 /64 是运营商通过 DHCPv6-PD 下发的,它会变。前缀一换,容器还抱着旧前缀里切出来的地址,而那个前缀已经不再路由到你家了——表现是 IPv6 静默失效,配置文件里却白纸黑字写着一个看起来没问题的地址。 ...

2026年8月26日 · 2 分钟 · Vinkey