《跟唐老师学习云网络》 - 网络命名空间 Network Namespace
这一节整体比较简单,通篇只是灌输一个概念:“虚拟空间”。所以在讲网络命名空间的时候,也强烈建议大家去看一看《骇客帝国》这部电影,看里面虚拟空间和现实空间的概念。虚拟空间这玩意不占地,但是你钻到里面去之后,发现里面又是完整的。
1 网络命名空间
好了,我们先来看下普通的Host主机长什么样:(不记得的人去看唐老师的第一课)。
大概如上图这样,你在家里收发着各类包(bao)裹(wen)。
有一天你用神奇的方式,创造了一个“虚拟空间”(什么?你想知道怎么创建的?好吧,这个咱们下一章节再讲,这里你需要先理解概念),这个空间是独立的,里面关于网络相关的东西一应俱全,你有的它都有。(即它拥有完整的Linux网络协议栈)
这个时候,你需要找到一个“通道”,使得我们可以与这个独立空间进行交互。
方法呢,就是创建一根“网线”把2个世间给连起来。“网线”加引号是因为这个网线也是虚拟出来的,目前主要有TUN/TAP牌和Veth牌两种。(顺便提一下,目前市面上看到的虚拟机都用Tap/Tun这个牌子的网线,而容器都用Veth这个牌子的网线)。
好了,现在我们手里有一根虚拟网线(关于2种网线的介绍,会单独写,这里再次先略过网线本身的介绍),于是我们通过它,就可以将2个独立的世界连接起来。如下图
注意了,在通过网线连通2个世界后,你(作为Host主机)要很公平的看待这个“虚拟世间”,一定要把它当做一个真实存在的实体。
为了更好理解:现在假设你蹲到下图“我”的位置上,然后站在Host“我”的视角看。往左看,有一个网卡;往右看也有一个网卡。
所以你看到的世界,可以跟下面这个是一样的。
即通过一根网线,通往了其他节点。
2 报文的方向
为什么我们一定要认真的对待这个“虚拟世间”,并把它看做一个实际存在的实体呢。因为这个涉及报文方向的问题。(从我自己的经验来看,很多时候,容易搞混报文方向。)
2.1 Host主机视角
好了,首先让我们先站住主机Host角度看世界,它长成这个样子:
从“虚拟空间”发出的报文,经过网卡2到我这里,对我来说,是收到了新报文。 跟通过网卡1收到的报文,没有什么区别。
即:经过安全iptables规则,也是“入”方向的。
2.2 网络空间视角
好了,现在让我们进入到这个“虚拟空间”,站在里面看世界,它应该长成什么样?
嗯,应该和本文的第一张图片一样,因为它是独立的实例。
当然,从“上帝”角度来看,整体大概如下图:
记住了:
站在“虚拟空间”角度看,主机Host发给我的报文,对我来说是入方向(是新收到的报文)。而我发给主机的报文,对我来说,是出方向(是发出去的报文)。
3 总结
今天我们首先了解网络命名空间(network namespace)的概念。然后知道通过虚拟网线,使之与主机Host世界连通。最后,我们分别“站在”这2个不同世界中,观察这个空间。
(1)在主机Host上,我们发现自己多了一个网卡,这个新网卡连接到另一个独立节点(把新创建的虚拟空间看做实体)。
(2)而在虚拟空间里面,我们就好比待在一个新的主机里面一样。
ps,这个“位置”很重要,因为这个会影响我们判断报文的“接收”还是“发送”的方向。
- 点赞
- 收藏
- 关注作者
评论(0)