原标题:理解linux虚拟网络设备bridge

上一节我们介绍了Linux veth设备,了解了如何把多个独立网络命名空间(下面开始简称NS)与主机互通,并且多个NS间也能相互通信,在这一节我们将介绍另一种方式,用linux bridge。

linux bridge

Linux bridge即linux虚拟网桥,工作方式类似于物理的网络交换机,工作在二层时,能够转发以太网报文,能够学习MAC地址与端口的映射关系,下面通过一些示例来了解一下。

我们将通过linux bridge连接两个NS,通过下面的命令可以创建一个linux bridge并启动:

接下来我们创建两个新的NS和两对linux veth网卡:

接下来就是把主机这边的两个端都插到bridge上:

就这样两个NS就可以相互PING通了,因为是相同网段,所以暂不需要默认网关,又因为linux bridge会广播ARP请求,NS1的协议栈能通过ARP广播拿到NS2中网卡的MAC地址。

但是此时在主机上ping两个ns反而是ping不通的,因为主机不知道怎么去192.168.10.0/24网段,所以先给主机加条路由:

注意主机的这条路由针对的是整个网段192.168.10.0/24,就是说后面如果继续加新的NS,只要IP还在这个段内,就不用再增加主机路由了。

来看一下现状:

主机加了路由后,从主机ping ns1还是不行,应该是ns1缺默认网关,所以不知道怎么回这个包,看一下当前NS1中的路由信息:

这条路由是我们在给veth0设置ip的时候由系统自动生成的。

我们给ns1和ns2都加个默认路由,然后打开br0的arp代答:

这时候应该就ping得通了。

为什么给ns1和ns2设置的默认网关是169.2.2.2?这个在上一章有解释过了,想了解的话请看回上一章的内容

区别

到目前为止我们介绍了两种在同个主机连接多个ns的方法,现在来介绍一下两种方法异同点:如果只是用veth连接,就是单纯地把主机当成路由器,两个ns之间的通信数据包都是要走主机协议栈的三层转发流程的,如图1所示:

(图1)

而用bridge的方式,则在二层直接把数据包就从ns1转到了ns2,没有再走主机协议栈的三层,如图2所示:

(图2)

这个我们可以用如下方式求证,用bridge的情况下,关掉主机的路由转发功能:

然后你会发现ns1中ping ns2其实还是可以ping通的。

那这样一来,主机的防火墙策略岂不是没用了?k8s的网络策略就是在主机的iptables规则中来控制的,为了让这个规则生效,还是有办法的,可以让经过linux bridge的数据包也过一遍iptabls规则:

开启了这个参数,数据包还是没有经过主机的协议栈的三层处理,只是linux bridge的__br_forward方法中显式地调用了NF_HOOK(NFPROTO_BRIDGE, NF_BR_FORWARD,net, NULL, skb, indev, skb->dev,br_forward_finish)代码在:/net/bridge/br_forward.c

这时候在主机的iptables防火墙里增加一个过滤规则,把数据包全拦截掉:

然后ns1就ping不通ns2了。

总结

前面介绍的linux veth和linux bridge主要是用于完成同主机容器的相互通信,下一章我们来介绍一下如何配置跨主机的容器通信。

linux bridge 不能跨网络命名空间,所以不要尝试把br0转到ns1中,下面的命令会报错ip link set br0 netns ns1RTNETLINK answers: Invalid argument凡是netns-local为on的设备都不能跨网络命名空间,像loopback/vxlan/bridge,用下面的命名可以查看eth0的netns-local的值ethtool -k eth0|grep netns-local

更多信息欢迎关注滴普科技官网 http://datasink-sensors.deepexi.top/t/ua

end

责任编辑:

linux 多块网卡 bridge,理解linux虚拟网络设备bridge相关推荐

  1. 理解linux虚拟网络设备bridge

    上一节我们介绍了Linux veth设备,知道了如何把多个彼此隔离的网络命名空间(下面开始简称NS)与主机通过VETH连接起来,并且多个NS间也能相互通信,在这一节我们将介绍另一种方式,用linux ...

  2. Linux - 虚拟网络设备 - bridge,veth,namespace

    引用 轻松理解 Docker 网络虚拟化基础之网络 namespace! 轻松理解 Docker 网络虚拟化基础之 veth 设备! 深入理解 Linux 上软件实现的"交换机" ...

  3. linux两块网卡不通,由安装两块网卡的linux系统中引起网络不通想到的

    由安装两块网卡的linux系统中引起网络不通想到的 由安装两块网卡的linux系统中引起网络不通想到的 一天,小王突然急匆匆的来找我,他说:"我在机子上刚装的redhat怎么老也ping不通 ...

  4. linux单块网卡绑定多个ip及网卡聚合绑定多个ip方法

    单块网卡绑定多个ip,网上介绍的太多了.方法如下 1.复制虚拟网卡配置文件 cp /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/n ...

  5. linux查看双网卡绑定模式,Linux中双网卡绑定实现的各种模式

    一.Linux中双网卡绑定实现的原理 Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡;linux设置bond网卡绑定---有些用. Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡, ...

  6. linux启动某个网卡命令行,linux下启动和关闭网卡命令及DHCP上网

    ifup.ifdown:如果在 /etc/sysconfig/network-scripts里面的ifcfg-ethx等文件存在的话,就可以通过ifdown或ifup来实现网卡的开和关,例如:ifup ...

  7. Linux/Centos7系统管理之深入理解Linux文件系统与日志分析

    前言:inode(文件节点)与block(数据块)硬链接与软连接恢复误删除的文件 (即rm-rf 的操作,可以先进行备份的操作,然后可以进行恢复ext4和xfs文件系统皆可)日志文件的分类用户日志与程 ...

  8. linux文件i节点,深入理解linux中i节点(inode)

    对于Unix系列的操作系统,大多都有v节点.但是对于linux来说,只有通用的i节点,却没有v节点. 下面来探讨一下,linux下的i节点. linux中,文件查找不是通过文件名称来查找的.实际上是通 ...

  9. Linux设置一个网卡IP地址,linux下一块网卡设置多个ip地址(示例代码)

    无论是在实际的生产坏境中,还是平时的练习中, 一个网卡设置多个ip地址是非常常见的,也是非常有用的. 我们以centos6.8系统为列, 在一块网卡上设置多个ip地址. 1>. 给一块网卡设置多 ...

  10. 云计算底层技术-虚拟网络设备(Bridge,VLAN)

    openstack底层技术-各种虚拟网络设备一(Bridge,VLAN)  openstack底层技术-各种虚拟网络设备二(tun/tap,veth) Linux Bridge Bridge与netf ...

最新文章

  1. 计算机二级公共基础知识2017,2017年计算机二级公共基础知识基础试题
  2. 网络推广——网络推广专员从多角度分析网站关键词排名受影响因素
  3. LeetCode Insert Delete GetRandom O(1)
  4. 读了几篇boosting文献的收获
  5. 大数据 清华 覃征_2021年清华(清华大学)大数据工程考研难度解析、考研经验分享...
  6. 微信公众平台开发——问题篇
  7. MySQL_DBA整理
  8. HTTP服务器项目详解
  9. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_05-vuejs研究-vuejs基础-v-text指令...
  10. 苹果电脑win10蓝牙音响卡顿_Macbook Pro 2017安装win10以后蓝牙鼠标卡顿
  11. C++ 自定义String类
  12. 背包客旅行札记-html
  13. TortoiseSVN安装使用教程(超详细)
  14. 高项 案例分析重点知识 进度成本质量
  15. 手机数据线种类有哪些
  16. Codeforces Round #829E 1753E. N Machines
  17. 原腾讯QQ空间负责人,T13专家,黄希彤被爆近期被裁员,裁员原因令人唏嘘。。...
  18. 关于SQL 与 NoSQL的区别
  19. ipad部分截屏方法
  20. 共享的快捷方式会经常突然不见_突然爆红的共享自习室,会是一个新风口吗?...

热门文章

  1. java 观察者模式类图_设计模式——观察者模式
  2. Android为页面添加水印
  3. PB12下geturl获取汉字乱码的解决
  4. Java——JButton按钮
  5. ios12越狱自签需要联网_从越狱的iOS切换到Android? 这是你需要知道的
  6. 这个开源高仿某易云音乐项目,太酷了
  7. HBase 官方文档中文版
  8. npm 安装yarn
  9. FL studio 20简易入门教程 -- 第五篇 -- 乐器调制界面
  10. 高等数学-函数在线绘图工具推荐(精选好用)