为什么隧道封装是Docker多数网络项目的共同选择

简介:

为什么隧道封装是Docker多数网络项目的共同选择

背景

在我之前weave的运行原理的文章中,介绍到 weave在跨主机的容器通信过程中,会使用pcap截获容器发送和接收的 网络包,然后按照自定义的格式将这些包重新封装为UDP报文再次注入到bridge上的接口发送出去。实际上这不是weave独有的选择,CoreOS的 fannel网络项目也是一样的方法。最近被docker公司收购的初创项目socketplane,采用基于openvswitch的vxlan的隧道技术来实现相同的过程。那么,就有一个疑问:实际上只要使用主机port mapping或是将docker原生网桥docker0的上行链路连通网卡,容器的流量都可以从主机发送出去,为什么这么多的docker网络项目都不约而同地选择使用隧道技术将网络负载再次封装发送,接收的时候再解封装呢?

解析原因

隧道封装是目前最简单的穿透docker容器复杂网络环境安全设置的方法

实际上这个问题最重要的原因是与docker容器运行环境的多样复杂性是直接相关的。我们都知道docker容器可以运行在公有云、私有云、虚拟化以及裸机上。为了网络的安全,这些环境上都应该有严格的安全组和防火墙设置来保障只有合法流量能够通过端口。这些带来了网络安全的同时,也给docker 容器的部署和可移动性带来了麻烦。每次部署启动一个容器,就要将其相应使用的端口上的安全设置更新为开放。尤其是混合云场景下这个问题就更为麻烦了。我举一个具体的例子:当前很多的PaaS服务提供商都没有自己的数据中心,他们直接从公有云的IaaS提供商那里获得虚拟机,那么这个时候就需要PaaS提供方调用公有云IaaS提供方的网络安全设置的API来打开端口。PaaS提供商是不会把自己绑定死的,会选择多家公有云的 IaaS(AWS,GCE,Azure等),这些IaaS提供商的API全都不一样,这得多麻烦啊。这还没有考虑私有云,自己数据中心的虚拟化和裸机环境的端口ACL设置的复杂。

网络安全的设置还不仅仅只有这些,比如最常见的ip与mac绑定,这是openstack的默认设置,要修改可以,同样也要调用openstack neutron的API增加端口允许的ip-mac pair。这里额外提一下,docker主机的port mapping方式由于限制了容器移动后的可访问性,不被大多数跨主机docker网络项目采用,多数项目还是希望能给每个容器一个ip,容器间访问使用这个ip,而不是docker容器所在主机的ip。

结论

通过上面的解析,可以想象,如果是在混合云场景下,使用隧道封装技术后,从虚拟机流出的流量ip和mac都是唯一的,且只使用固定的端口,那docker容器运行环境的安全设置就可以固定下来,简便多了。

其实,docker网络中使用隧道封装技术还可以有利于一些其他问题的解决:

1. 容器相较于虚拟机在一台主机上的密度大大增加,至少多出一个量级,要说两个量级我也信。在这样的情况下机架上的接入交换机的port-mac表容量是否足够呢,这里使用了隧道封装了负载后,就不用担心这个问题了。

2. 此外,就如同虚拟机使用了vxlan后一样,有利于打破ip地址网段对二层网络规模的限制,打造出一个大二层的网络。


本文作者:佚名

来源:51CTO

相关文章
|
1月前
|
Java Spring
【编程笔记】在 Spring 项目中使用 RestTemplate 发送网络请求
【编程笔记】在 Spring 项目中使用 RestTemplate 发送网络请求
94 0
|
1月前
|
应用服务中间件 nginx Docker
Docker网络管理
Docker网络管理
29 1
|
24天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
99 0
|
1天前
【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)
【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)
|
3天前
|
SQL 安全 测试技术
2021年职业院校技能大赛“网络安全”项目 江西省比赛任务书—B模块
B模块涵盖安全事件响应和网络数据取证,涉及多项应用安全挑战。任务包括使用nmap扫描靶机、弱口令登录、生成反弹木马、权限验证、系统内核版本检查、漏洞源码利用、文件名和内容提取等。此外,还有Linux渗透测试,要求访问特定目录下的文件并提取内容。应用服务漏洞扫描涉及服务版本探测、敏感文件发现、私钥解密、权限提升等。SQL注入测试需利用Nmap扫描端口,进行SQL注入并获取敏感信息。应急响应任务包括处理木马、删除恶意用户、修复启动项和清除服务器上的木马。流量分析涉及Wireshark数据包分析,查找黑客IP、枚举测试、服务破解等。渗透测试任务涵盖系统服务扫描、数据库管理、漏洞利用模块搜索等。
11 0
|
5天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
NoSQL Java Redis
利用Docker部署一个简单的springboot项目
利用Docker部署一个简单的springboot项目
70 2
|
1月前
|
JavaScript Java jenkins
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
86 0
|
1月前
|
负载均衡 算法 应用服务中间件
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
113 0
|
1月前
|
关系型数据库 MySQL 数据库
虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令
虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令
45 0