Weave Net 多子网自动分配(Multi-Subnet IPAM):用 WEAVE_CIDR 与 --ipalloc-default-subnet 实现跨子网寻址与隔离
网络云原生【免费下载链接】weaveSimple, resilient multi-host containers networking and more.项目地址https://gitcode.com/gh_mirrors/weave4/weave点击查看免费下载本文聚焦 Weave Net当前仓库weave4/weave的 IPAM 核心能力之一——自动地址分配跨越多个子网。默认情况下 Weave Net 会把所有容器放入覆盖整个分配范围的单一子网而通过WEAVE_CIDR环境变量、--ipalloc-default-subnet启动参数你可以让容器按需落在不同子网实现基于子网的网络隔离并在同一分配范围内混合使用自动分配与手工指定地址。读完本文你将掌握多子网分配的完整配置语法、默认子网约束技巧以及底层weave脚本与weaver主程序的实现逻辑。为什么需要多子网分配IP 子网subnet在 Weave Net 中用来定义或限制路由范围。默认情况下Weave Net 将全部容器放入一个横跨整个分配范围universe的子网使得每一个接入 Weave 的容器都能与其它容器互通。这一点在 Allocating IP AddressesIPAM 总览 中也有说明默认分配范围为10.32.0.0/12。当你需要应用隔离时可以让不同应用的容器运行在不同的子网上同一应用内的容器互通不同应用的容器彼此隔离。这正是“isolation-through-subnets”策略的基础——把传统物理网络的子网隔离手法原样搬到容器网络上。用 WEAVE_CIDR 指定容器所属子网要在创建容器时请求某个特定子网中的地址只需在docker run时设置环境变量WEAVE_CIDR取值形如net:subnethost1$ docker run -e WEAVE_CIDRnet:10.2.7.0/24 -ti weaveworks/ubuntu这里net:前缀告诉 Weave Net请从10.2.7.0/24这个子网里自动分配一个地址地址仍由 IPAM 自动挑选只是限定在指定子网内。一次请求多个子网地址 手工地址WEAVE_CIDR可以一次给出多个以空格分隔的地址请求支持net:subnet从指定子网自动分配一个地址ip:cidr手工指定一个具体地址该地址必须在自动分配范围之外或在自动分配范围中由你预留的部分net:default从默认子网自动分配地址详见下文。例如下面的命令让容器同时获得10.2.7.0/24、10.2.8.0/24两个子网中各一个自动分配的地址再手工挂上一个10.3.9.1/24的地址host1$ docker run -e WEAVE_CIDRnet:10.2.7.0/24 net:10.2.8.0/24 ip:10.3.9.1/24 -ti weaveworks/ubuntu注意每个子网的.0网络地址与.-1广播地址不会被分配使用这符合 RFC 1122 对主机寻址的要求。从脚本源码看 WEAVE_CIDR 的解析路径仓库根目录的 weave 脚本是weave命令的实际入口多子网参数在collect_cidr_args()weave 脚本 L875-L883中解析collect_cidr_args() { CIDR_ARGS CIDR_ARG_COUNT0 while [ $1 net:default ] || is_cidr $1 || is_cidr ${1#ip:} || is_cidr ${1#net:} ; do CIDR_ARGS$CIDR_ARGS ${1#ip:} CIDR_ARG_COUNT$((CIDR_ARG_COUNT 1)) shift 1 done }可以看到脚本接受三种参数形态裸 CIDR如10.3.9.1/24、ip:前缀、net:前缀以及特殊的net:default。随后ipam_cidrs()weave 脚本 L900-L952分派它们带net:前缀的参数走IPAM 自动分配net:default映射到POST /ip/container_id即默认子网net:subnet映射到POST /ip/container_id/subnet裸地址 /ip:参数走手工指定执行PUT /ip/container_id/cidr若与已有地址冲突会告警但继续执行若完全没有传入地址脚本默认退化为net:defaultweave 脚本 L925即“不指定子网就分配默认子网地址”。需要说明的是WEAVE_CIDR机制依赖 Weave 的 Docker proxy/plugin 拦截容器创建流程将环境变量中的 CIDR 参数注入上述分配逻辑若使用 CNI 插件则请参考 手动指定 IP 地址 中的 static allocator 方案。约束默认子网--ipalloc-range 与 --ipalloc-default-subnet当网络里有多个子网时通常需要约束默认子网——即不提供WEAVE_CIDR时分配器挑选的子网——使其不与其它子网重叠。这通过--ipalloc-default-subnet完成host1$ weave launch --ipalloc-range 10.2.0.0/16 --ipalloc-default-subnet 10.2.3.0/24这里--ipalloc-range 10.2.0.0/16声明整个分配范围universe即将来所有自动分配都发生在10.2.0.0/16内且该值必须与网络内所有主机一致参考 Choosing an Allocation Range--ipalloc-default-subnet 10.2.3.0/24当没有显式指定子网时分配器默认从10.2.3.0/24里挑地址。于是你可以放心地把其它子网如10.2.7.0/24、10.2.8.0/24留给需要隔离的应用默认容器都落在10.2.3.0/24互不干扰。符号写法 net:default在指定地址时默认子网可以用net:default符号表示。例如下面这条命令会让容器同时获得默认子网与10.2.2.0/24子网中的地址host1$ docker run -e WEAVE_CIDRnet:default net:10.2.2.0/24 -ti weaveworks/ubuntu这在 Isolating Applications on a Weave Network 中也被用于“多子网 默认子网”的组合分配。源码级约束检查--ipalloc-default-subnet与--ipalloc-range的强耦合关系在 prog/weaver/main.go 中有清晰的校验逻辑参数定义main.go L195-L197--ipalloc-range为 “IP address range reserved for automatic allocation, in CIDR notation”--ipalloc-default-subnet为 “subnet to allocate within by default, in CIDR notation”前置条件main.go L62-L83若设置了--ipalloc-default-subnet却没有--ipalloc-rangeEnabled()直接Log.Fatal(--ipalloc-default-subnet specified without --ipalloc-range.)——两者必须成对出现重叠校验main.go L643-L653在createAllocator中默认子网经ipam.ParseCIDRSubnet解析后必须与分配范围Overlaps否则直接退出IP address allocation default subnet %s does not overlap with allocation range %s。也就是说默认子网必须是分配范围的子集不能越界——这从实现层面保证了“默认子网一定落在 universe 内”。混合自动分配与手工分配用范围差预留地址段容器可以在同一范围内混合使用“自动分配的地址”和“手工挑选的地址”。不过你会遇到一个实际问题自动分配器可能已经把你想要的具体地址占用了。解决办法是让--ipalloc-range小于--ipalloc-default-subnet从而在默认子网中留出一段“自动分配器永远不会碰”的地址空间。官方示例host1$ weave launch --ipalloc-range 10.9.0.0/17 --ipalloc-default-subnet 10.9.0.0/16配合这一配置所有容器都在10.9.0.0/16子网内运行但自动分配只使用10.9.0.0/16的低半段10.9.0.0/17即分配范围 universe 所覆盖的部分上半段10.9.128.0/17位于默认子网内但在分配范围外留给手工分配自动分配器绝不会踏足。随后你既可以直接docker run自动拿到低半段地址也可以docker run -e WEAVE_CIDRip:10.9.200.1/16 ...手工指定上半段地址。注意ip:手工指定走的是PUT /ip/container_id/cidr路径且脚本会对冲突地址给出告警weave 脚本 L943-L949。多子网分配的实践要点同一分配范围、多个默认子网要隔离应用先在每个主机上用相同参数启动weave launch --ipalloc-range 10.2.0.0/16 --ipalloc-default-subnet 10.2.1.0/24然后不同应用分别用WEAVE_CIDRnet:子网启动完整 ping 验证示例见 Isolating Applications on a Weave Network默认子网必须在分配范围内这是weaver启动时的硬性校验规划网段时务必让--ipalloc-default-subnet⊆--ipalloc-rangenet:依赖 IPAM 开启从脚本实现看若 IPAM 未启用却使用net:请求分配会返回错误提示 “IP address allocation must be enabled to use net:”weave 脚本 L935-L938地址保留每个子网的网络地址.0与广播地址.255等.-1不会被分配不要与 AWS VPC 模式混用脚本在 AWSVPC 模式下禁止为容器指定具体 IP 或子网weave 脚本 L910-L913。延伸阅读Allocating IP AddressesIPAM 总览初始化策略seed/consensus/observer、quorum 机制、分配范围选择与数据持久化Isolating Applications on a Weave Network基于多子网的完整应用隔离实操含 ping 验证输出Manually Specifying the IP Address of a Containerip:手工指定地址在 proxy / plugin / CNI 三种接入方式下的用法IP addresses and routesCIDR 记法与路由基础Starting, Stopping and Removing Peers多主机网络扩容与维护。赞分享网络云原生【免费下载链接】weaveSimple, resilient multi-host containers networking and more.项目地址https://gitcode.com/gh_mirrors/weave4/weave点击查看免费下载相关推荐Podman 网络子网配置完全指南--subnet 选项与 Quadlet Subnet 深度解析Podman 网络子网配置完全指南 subnet 选项与 Quadlet Subnet 深度解析 导读 在 Podman 中 subnet Quadle容器运行时云原生CLIreact-native-meteor性能优化指南提升实时应用响应速度的10个技巧react native meteor性能优化指南提升实时应用响应速度的10个技巧 react native meteor是一款为React Native应用k3d IPAM管理网络地址分配与子网配置完整教程k3d IPAM管理网络地址分配与子网配置完整教程 k3d作为轻量级的Kubernetes发行版其网络配置能力对于开发者来说至关重要。本文将详细介绍k3d的云原生容器编排上一篇RPG Maker MV/MZ插件生态从性能优化到动态系统的技术实践下一篇如何用llama-cpp-python轻松部署本地AI大语言模型创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

汽车嵌入式与机器人嵌入式开发差异:FOC、RTOS与CAN通信实战解析

汽车嵌入式与机器人嵌入式开发差异:FOC、RTOS与CAN通信实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:47:03 阅读更多 →
游戏引擎基础架构拆解:分层设计、主循环与核心子系统深度解析

游戏引擎基础架构拆解:分层设计、主循环与核心子系统深度解析

做引擎这些年,我最大的感受是:一套好的基础架构,比堆十个炫酷功能更值钱。很多刚入行的朋友一上来就盯着渲染、物理这些“面子”技术,等真把一个玩法塞进引擎里跑起来,才发现底层架构支撑不住,动不动就是重…

2026/10/12 13:57:57 阅读更多 →
video-shotcraft 镜头卡 hatch-depth 解析:用 Remotion 把斜纹占位条“原位换皮“成真数据条形图

video-shotcraft 镜头卡 hatch-depth 解析:用 Remotion 把斜纹占位条“原位换皮“成真数据条形图

AI 技能媒体生成视频 【免费下载链接】video-shotcraft AI video skill for Claude Code & Codex — cinematic product videos with Remotion: 152 shot recipe cards, 209 motion previews, a production-ready template 项目地址: https://gitcode.com/gh_mi…

2026/10/12 5:57:41 阅读更多 →

最新新闻

从grep到rea:命令行日志分析工具的字段提取实践

从grep到rea:命令行日志分析工具的字段提取实践

半夜两点,我对着一个 1.8GB 的访问日志发呆。我要在几十万条请求里,把某次超时链路涉及的所有记录捞出来,按请求 ID 拼成完整时间线,再看哪个环节耗时异常。第一反应是 grep,grep 也确实把行筛出来了,但筛完…

2026/10/13 16:35:03 阅读更多 →
知识工作插件全解析:从需求到落地的效率提升指南

知识工作插件全解析:从需求到落地的效率提升指南

1. 为什么我盯上了"knowledge-work-plugins"这组关键词先坦白一下我的习惯:平时逛代码仓库、刷技术社区时,我不太喜欢追那种名字特别花哨的项目,反而会对那种一眼看上去就是个"生产力工具集合"的仓库格外来劲。前几天看到…

2026/10/13 16:35:03 阅读更多 →
Element UI 单选/多选框样式修改:scoped 穿透与自定义图标实战

Element UI 单选/多选框样式修改:scoped 穿透与自定义图标实战

前端群里隔三差五就有人问:Element UI 的单选框/多选框怎么改选中样式?默认那个蓝色主题色跟设计稿对不上,圆点大小、边框颜色、选中时的小勾都太“默认”了。其实这类问题不是改不了,而是没搞懂 Element UI 的 radio 和 checkbox…

2026/10/13 16:35:03 阅读更多 →
Codex Token 优化攻略:10 个技巧降低 AI 编程成本

Codex Token 优化攻略:10 个技巧降低 AI 编程成本

1. 为什么 token 消耗值得认真对待1.1 一个被大多数人忽略的成本黑洞用 Codex 这类 AI 编程助手做开发,很多人一开始只关注“能不能跑通”“生成得对不对”,等到月底一看账单或者额度消耗记录,才发现 token 烧得比想象中快得多。我刚开始用的…

2026/10/13 16:35:03 阅读更多 →
5G+北斗高精度定位赋能V2X:从uRLLC到边缘计算的全链路方案解析

5G+北斗高精度定位赋能V2X:从uRLLC到边缘计算的全链路方案解析

简介:这是《5G北斗精准定位赋能V2X安全辅助驾驶服务》完整PPT课件,面向智能网联汽车、自动驾驶、车路协同等领域的研发人员与高校研究者。资源包内含1个pptx演示文稿,整体21.45MB,借助丰富图表系统梳理5G三大能力(eMBB…

2026/10/13 16:35:03 阅读更多 →
TeeChart源码版实战:从编译安装到坐标轴深度定制

TeeChart源码版实战:从编译安装到坐标轴深度定制

简介:Steema TeeChart Pro VCL与FMX源代码包,是专为使用Delphi或CBuilder的开发者准备的专业图表组件源码,覆盖Windows、macOS、iOS和Android等主流的桌面与移动平台。它解决的是跨平台应用中数据可视化集成难的问题,尤其适合需要…

2026/10/13 16:33:54 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →