《跟唐老师学习云网络》 - 网络命名空间 Network Namespace

举报
tsjsdbd 发表于 2020/02/17 17:03:42 2020/02/17
【摘要】 通过本课,我们首先了解网络命名空间(network namespace)的概念,然后通过虚拟网线连通这个虚拟空间和主机空间。最后分别“站在”这2个不同世界中,观察这2个空间,并以此判断报文的收发方向。

这一节整体比较简单,通篇只是灌输一个概念:“虚拟空间”。所以在讲网络命名空间的时候,也强烈建议大家去看一看《骇客帝国》这部电影,看里面虚拟空间和现实空间的概念。虚拟空间这玩意不占地,但是你钻到里面去之后,发现里面又是完整的。

 

1      网络命名空间

好了,我们先来看下普通的Host主机长什么样:(不记得的人去看唐老师的第一课)。

image.png

大概如上图这样,你在家里收发着各类包(bao)裹(wen)。

 

有一天你用神奇的方式,创造了一个“虚拟空间”(什么?你想知道怎么创建的?好吧,这个咱们下一章节再讲,这里你需要先理解概念),这个空间是独立的,里面关于网络相关的东西一应俱全,你有的它都有。(即它拥有完整的Linux网络协议栈)

image.png

这个时候,你需要找到一个“通道”,使得我们可以与这个独立空间进行交互。

方法呢,就是创建一根“网线”把2个世间给连起来。“网线”加引号是因为这个网线也是虚拟出来的,目前主要有TUN/TAP牌和Veth牌两种。(顺便提一下,目前市面上看到的虚拟机都用Tap/Tun这个牌子的网线,而容器都用Veth这个牌子的网线)。

 

好了,现在我们手里有一根虚拟网线(关于2种网线的介绍,会单独写,这里再次先略过网线本身的介绍),于是我们通过它,就可以将2个独立的世界连接起来。如下图

image.png

注意了,在通过网线连通2个世界后,你(作为Host主机)要很公平的看待这个“虚拟世间”,一定要把它当做一个真实存在的实体。

 

为了更好理解:现在假设你蹲到下图“我”的位置上,然后站在Host“我”的视角看。往左看,有一个网卡;往右看也有一个网卡。

image.png

所以你看到的世界,可以跟下面这个是一样的。

即通过一根网线,通往了其他节点。

image.png

  

2      报文的方向

为什么我们一定要认真的对待这个“虚拟世间”,并把它看做一个实际存在的实体呢。因为这个涉及报文方向的问题。(从我自己的经验来看,很多时候,容易搞混报文方向。)

 

2.1      Host主机视角

好了,首先让我们先站住主机Host角度看世界,它长成这个样子:

image.png

从“虚拟空间”发出的报文,经过网卡2到我这里,对我来说,是收到了新报文。 跟通过网卡1收到的报文,没有什么区别。

即:经过安全iptables规则,也是“入”方向的。

 

2.2      网络空间视角

好了,现在让我们进入到这个“虚拟空间”,站在里面看世界,它应该长成什么样?

嗯,应该和本文的第一张图片一样,因为它是独立的实例。

image.png

 

当然,从“上帝”角度来看,整体大概如下图:

image.png

记住了:

站在“虚拟空间”角度看,主机Host发给我的报文,对我来说是入方向(是新收到的报文)。而我发给主机的报文,对我来说,是出方向(是发出去的报文)。

 

3      总结

今天我们首先了解网络命名空间(network namespace)的概念。然后知道通过虚拟网线,使之与主机Host世界连通。最后,我们分别“站在”这2个不同世界中,观察这个空间。

1)在主机Host上,我们发现自己多了一个网卡,这个新网卡连接到另一个独立节点(把新创建的虚拟空间看做实体)。

2)而在虚拟空间里面,我们就好比待在一个新的主机里面一样。

ps,这个“位置”很重要,因为这个会影响我们判断报文的“接收”还是“发送”的方向。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。