Docker 自定义网络怎么配置加密的跨主机 overlay 通信链路

夜磊酱_8333

夜磊酱_8333

2026-10-23

866人浏览

原创

必须在 swarm 模式下创建 overlay 网络并指定 --opt encrypted 参数启用 ipsec 加密,依赖 docker ≥20.10、内核支持 xfrm/esp 及节点时间同步。

要在 docker 中配置带加密的跨主机 overlay 通信链路,核心是启用 ipsec 加密 —— 这是 docker 原生 overlay 网络唯一支持的链路层加密方式。它默认不开启,需在创建网络时显式指定 --opt encrypted 参数,且必须运行在 swarm mode 下。

确保 Swarm 集群已就绪并满足加密前提

加密 Overlay 网络不是独立功能,而是 Swarm Overlay 的可选增强。以下条件缺一不可:

  • Docker 版本 ≥ 20.10(推荐 24.0+),内核需启用 CONFIG_XFRM_USER 和 CONFIG_INET_ESP(主流发行版默认已开)
  • 所有节点时间同步误差 chronyd -q 或 timedatectl status 验证)
  • 防火墙放行:TCP 2377(Swarm 管理)、TCP/UDP 7946(控制面)、UDP 4789(VXLAN 数据面)——加密不新增端口
  • 节点间物理网络支持 UDP 分片重组(避免因 MTU 不匹配导致加密握手失败)

创建加密的 Overlay 网络

在任意 manager 节点执行以下命令:

docker network create -d overlay \
  --opt encrypted \
  --attachable \
  my-secure-overlay

关键说明:

docker-container-rerun-all
docker-container-rerun-all

顺序检查并可选更新所有已在长期记忆中记录了固定重建命令的 docker run 容器。使用场景:用户...

下载
  • --opt encrypted 是启用 IPsec 的唯一开关,底层使用 Linux Kernel 的 ESP(Encapsulating Security Payload)协议,自动协商密钥,无需手动管理证书或预共享密钥
  • --attachable 保留调试能力,允许后续用 docker run --network my-secure-overlay 启动临时容器验证
  • 网络创建后,Docker 自动在各节点部署 IPsec SA(Security Association),可通过 ip xfrm state 查看加密通道

验证加密是否生效

不能只测连通性,要确认流量实际被加密:

  • 在 client 容器中执行:ping -c 3 <server></server>,然后在 server 主机上抓包:tcpdump -i any port 4789 -nn
  • 若看到 UDP 负载为乱码(非明文 ICMP 报文),说明 VXLAN 封包已被 IPsec 加密;若能看到 ICMP echo request 明文,则加密未启用或被绕过
  • 检查加密状态:docker network inspect my-secure-overlay | grep encrypted 应返回 "Options": {"encrypted": "true"}

注意事项与常见问题

加密带来确定性开销,但无需额外运维:

  • 性能影响:实测吞吐量下降约 15–20%,延迟增加 30–50μs,对大多数业务无感知,但高频低延时场景(如实时金融交易)建议压测评估
  • 不兼容 host 网络模式:加密仅作用于 Overlay 网络内的容器通信,host 模式容器无法加入加密 Overlay
  • 无法与非 Swarm 方案混用:Consul/Etcd 驱动的旧式 Overlay 不支持 --opt encrypted,必须基于 Swarm Raft 内置 KV
  • 日志无显式提示:Docker 不输出“IPsec 已启用”类日志,验证依赖抓包或 ip xfrm 输出

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

745

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5739

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6777

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2633

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

279

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

451

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

420

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

305

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

465

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习