Docker的技术依赖于Linux内核的虚拟化技术的发展,Docker使用到的网络技术有Network Namespace、Veth设备对、Iptables/Netfilter、网桥、路由等。接下来,我将以Docker容器网络实现的基础技术来分别阐述,在到真正的容器篇章节之前,能形成一个稳固的基础知识网。
当向外界主机发送数据时,在它从网卡流入后需要对它做路由决策,根据其目标决定是流入本机数据还是转发给其他主机,如果是流入本机的数据,则数据会从内核空间进入用户空间(被应用程序接收、处理)。当用户空间响应(应用程序生成新的数据包)时,响应数据包是本机产生的新数据,在响应包流出之前,需要做路由决策,根据目标决定从哪个网卡流出。
原文链接:https://blog.csdn.net/dog250/article/details/46666029
容器是一种新的虚拟化技术,每一个容器都是一个逻辑上独立的网络环境。Linux 上提供了软件虚拟出来的二层交换机 Bridge 可以解决同一个宿主机上多个容器之间互连的问题,但这是不够的。二层交换无法解决容器和宿主机外部网络的互通。
在日常运维作业中,经常会碰到路由表的操作。下面就linux运维中的路由操作做一梳理: ------------------------------------------------------------------------------ 先说一些关于路由的基础知识: 1)路由概念 路由: 跨越从源主机到目标主机的一个互联网络来转发数据包的过程 路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备 路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择 直连路由:当在路由器
在前面的几篇文章里我们介绍了基于flannel的underlay网络和overlay网络,包括host-gw模式的underlay网络,基于vxlan的overlay网络,基于udp的overlay网络。这里我们做一下回顾总结和对比,相关文章可以参考如下:
如今服务器虚拟化技术已经发展到了深水区。现在业界已经有很多公司都迁移到容器上了。我们的开发写出来的代码大概率是要运行在容器上的。因此深刻理解容器网络的工作原理非常的重要。只有这样将来遇到问题的时候才知道该如何下手处理。
Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的、扁平的网络空间中。所以不管它们是否运行在同一个Node(宿主机)中,都要求它们可以直接通过对方的IP进行访问。设计这个原则的原因是,用户不需要额外考虑如何建立Pod之间的连接,也不需要考虑如何将容器端口映射到主机端口等问题。
基于诱捕节点,蜜罐可以实现攻击欺骗转移和资产隔离防护。但是现有诱捕节点的实现技术存在IP地址资源的分配和冲突的风险,日常维护要求高,需要配备专业的网管人员,增加人力成本。
今天我们接着上节课介绍的 Linux 网络知识,继续来学习它们在虚拟化网络方面的应用,从而为后续学习容器编排系统、理解各个容器是如何通过虚拟化网络来协同工作打好基础。
这个参数通常需要在高负载的访问服务器上增加。比如繁忙的网络(或网关/防火墙 Linux 服务器),再比如集群规模大,node 和 pod 数量超多,往往需要增加内核的内部 ARP 缓存大小。
在上一篇文章里我们介绍了k8s集群中flannel udp overlay网络的创建,这在里我们基于上一篇文章中的例子,来介绍在flannel udp overlay网络中pod到pod的通讯。
(2)可以用在路由器接口使用,只是用于限速,配置接口速率百分比,必须结合队列使用才能生效;
在上一篇文章里我们介绍了k8s集群中flannel vxlan overlay网络的创建,这在里我们基于上一篇文章中的例子,来介绍在flannel vxlan overlay网络中pod到pod的通讯。
Kubernetes中解决网络跨主机通信的一个经典插件就是Flannel。Flannel实质上只是一个框架,真正为我们提供网络功能的是后端的Flannel实现,目前Flannel后端实现的方式有三种:
有这么一个需求:需要远程访问内网的nas。然后现成的解决方案有蒲公英这个方案,但是个人版的话限了只能3个设备,因此找了半天,最后选择了功能类似的zerotier.
在上一篇文章中我们以nginx-ingress-controller-service为例子,主要介绍了集群中node port类型的cluster ip实现原理,当然是基于iptable的nat的模式,也就是说利用OS的网络内核来完成负载均衡。在这里我们主要介绍集群中的网络通讯,在以前文章中介绍过,对于容器之间的网络通讯基本分为两种,underlay方式和overlay方式。underlay方式在通讯过程中没有额外的封包,通常将容器的宿主作为路由来实现数据包的转发。overlay方式在通讯过程中有额外的封包,当然这里只是学习,具体生产环境中使用哪种方式要根据自己的实际情况和需求来。
本文档描述了在 Linux bridge 上 iptables 和 ebtables filter 表如何进行交互操作的。
# route -n // 显示路由表,哪条在前就用哪条,都没有就用default
在上期,我们介绍了CNI所需要实现的命令字和接口。常见的开源CNI实现有flannel和calico。
该文介绍了如何利用Linux路由功能实现内网环境跨网段进行通讯的需求,总结了整体配置部署步骤,并分析了异常问题及解决方案,同时介绍了Linux路由部署项目在技术社区中的重要性。
生产环境:CentOS Linux release 7.9.2009 (Core) \
UCloud外网网关是为了承载外网IP、负载均衡等产品的外网出入向流量,当前基于Linux内核的OVS/GRE tunnel/netns/iptables等实现,很好地支撑了现有业务。同时,我们也在不断跟踪开源社区的新技术发展,并将之用于下一代外网网关的设计。这些新特性可将系统性能和管理能力再提上一档,满足未来几年的需求。在方案设计研发过程中发现,新特性存在不少缺陷和Bug,为此我们向开源社区回馈了10多个patch,并融入到kernel 5.0版本中,帮助完善kernel功能并提升稳定性。
本章将介绍路由的通信原理,主旨是让大家理解路由的过程,而实验是次要的。在实际生产环境中,都使用的是企业级路由器,不会使用windows或Linux主机做路由用,所以读者应该把握好学习重点,更多的去思考通信原理。
以下是 ff_ipfw 工具在实际使用 F-Stack 应用中的 2 则配置策略路由的示例,分别为透明代理应答包和多 vlan vip 应答包的场景,可以供使用者参考。 透明代理策略路由设置 因为透明代理的源 IP 是实际客户的 IP,在实际服务接受处理完响应包返回时会返回给实际的客户 IP,所以需要配置将回包发到 Nginx 进行处理,这里的上游服务分别为本机和其他服务器上。 路由配置 F-Stack(FreeBSD) 上游回包的策略路由设置参考 # upst
网络路由协议分为两大类:内部网关协议和外部网关协议。路由器使用内部网关协议在单个自治系统内共享信息。如果你用的是 Linux,则可以通过开源(GPLv2)路由协议栈 Quagga 使其表现得像一台路由器。
UPG基于3GPP TS 23.214和3GPP TS 29.244 Release 15实现GTP-U用户平面。它是作为FD.io VPP的树外插件实现的。UPG的可能用途有: 1、5G网络的UPF (User Plane Function)功能。 2、分组数据网络网关用户平面(PGW-U)。 3、用户平面流量检测功能(TDF-U)--基于报文五元组的回话管理。 在上家单位参考这个开源项目实现了一套基于报文五元组做key,使用bihash+timewhile实现一套无锁化的(tcp、stcp报文)回话管理模块。项目地址:https://github.com/travelping/upg-vpp,编译可以参考:基于vpp的开源upf-vpp编译。
现在 iptables 这个工具的应用似乎是越来越广了。不仅仅是在传统的防火墙、NAT 等功能出现,在今天流行的的 Docker、Kubernets、Istio 项目中也经常能见着对它的身影。正因为如此,所以深入理解 iptables 工作原理是非常有价值的事情。
为了实现,主机A和主机B的跨网段访问,我们需要通过路由把各个网段连接起来。并利用Linux Kernel的内部机制实现转发,以下为具体实现:
(1)双桶双速是有两个速度的(cir和pir),系统使用cir(承诺信息速率)朝着cbs(承诺突发尺寸)注入令牌;使用pir(峰值信息速率)朝pbs(峰值突发尺寸),当有数据经过这两个桶时,先检查pbs再检查cbs:
哟!亲们好久不见,今天为大家带来的文章是如何利用一台联网电脑来突破局域网封锁,一起来看一下吧!
Calico 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。
在 Linux 系统中,路由是网络通信的关键组件之一。通过添加路由,您可以指定数据包在网络中的传输路径,从而实现网络连接和数据转发。本文将详细介绍如何在 Linux 上添加路由,以便您可以根据需要配置网络路由并实现灵活的网络连接。
什么? linux? 内核?! 也许你会说,“拜托,这种一看就让人头大的字眼, 我真的需要了解吗?” 有句流行语说得好,没有买卖,就没有杀害. 如果在日常中需要和流量打交道,那么为了不让 自己在面对来
Network Namespace 是 Linux 内核提供的功能,是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己都在独立的网络中。而且不同Network Namespace的资源相互不可见,彼此之间无法通信。
本文主要参考intel发布的vpp-sswan白皮书的内容搭建环境验证strongswan和vpp集成环境。
在上一博客Linux-iptables命令中,我们知道了一些iptable的nat表中几个链的区别,这里单独讲其中两个链拿出来详细说明。
frp frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议
ECMP(Equal Cost Multi Path),中文名叫等价多路径,是路由里的一项技术,作用是,在IP交换网络中存在到达同一目的地址的多条不同的路径,而且每条路径消耗的资源(Cost)一样的情况下,启用了ECMP功能的路由器就会根据配置策略,将它认定的“等价的IP报文”通过不同的路径均衡地转发出去,使转发达到负载均衡的目的。
这是100个 Linux 命令的第10篇文章,主要介绍如何在 Linux 主机中管理网络,包括网络接口配置、主机名配置等。
Linux系统中防火墙功能的两大角色:iptables和netfilter。iptables是Linux系统下应用层内置控制防火墙的工具,netfilter则是防火墙功能的具体实现,是内核空间的功能模块。所谓的iptables“控制”防火墙,就是用户利用iptables将防火墙规则设置给内核的netfilter功能模块,这中间涉及“四表五链”
路由的过程意味着IP包在网络上从一点传输到另一点。当你向某人发送电子邮件时,你实际上是在将一系列IP数据包或数据报从你的系统传输到另一个人的计算机上。从计算机发送的数据包通过几个网关或路由器到达目标计算机系统。同样的方法适用于所有internet协议,如HTTP、IRC和FTP等。
calico提供的网络解决方案,基本和flannel的host-gw模式相同,不同的地方在flannel通过etcd和宿主机上的flanneld维护路由信息,而calico是使用bgp(border gateway protocol 边界网关协议)自动的在集群中维护路由信息。如:
目前个人认为配置和使用上是最方便的内网穿透工具,已经用了快两年了,拿来穿透进没有公网的位于学校宿舍的路由器,蹭蹭百度文库企业账号和知网之类的23333
今天来聊聊 Flannel,Flannel 是 Kubernetes 默认网络组件,再聊 Flannel 时,我们得先明白一个叫 CNI 东东,CNI 是什么?能有什么用?下文会做出解释。
一、背景 使用seafile搞了一个私有云盘,性能还是很优秀的(下载的话到50M/s,上传10M/s),不过不需要的时候开着电脑好像有点浪费,所以就开始了通过公网开机的道路
大部分公司内部测试服务器是放在公司内网,一般来说,由于NAT的原因,这种访问是单向的。例如,我们借助电脑,手机登设备,可以访问百度的服务器,但是百度服务器是没法主动访问我们终端。由于只能通过公司内网访问,员工回家之后就无法访问了,安全是安全了,但是万一有个需求需要从公司外部访问呢?
领取专属 10元无门槛券
手把手带您无忧上云