起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 职业教育 > 如何才能学好linux网络虚拟化技术

如何才能学好linux网络虚拟化技术

时间:2019-07-24 13:15:47来源:职业教育网 作者:IT培训网 已有: 名学员访问该课程

前言:TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:

详解:Linux网络虚拟化技术,linux技术知识点很多,想要完全掌握不容易,那么怎么样学习linux网络虚拟化技术呢?

Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等,这里使用LXC的网络虚拟化来模拟多个网络环境。

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

本文从基本的网络设备讲起,到具体实验环节,希望能对 Linux 本身的虚拟网络环境有一个宏观的了解。

TUN 设备

TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:

 

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序。下面看看 TUN 的工作方式:

 

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

普通的网卡通过网线收发数据包,但是 TUN 设备通过一个文件收发数据包(http://qh.itpxw.cn)。所有对这个文件的写操作会通过 TUN 设备转换成一个数据包送给内核;当内核发送一个包给 TUN 设备时,通过读这个文件可以拿到包的内容。

如果我们使用 TUN 设备搭建一个基于 UDP VPN,那么整个处理过程就是这样:

 

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

数据包会通过内核网络栈两次。但是经过 App 的处理后,数据包可能已经加密,并且原有的 ip 头被封装在 udp 内部,所以第二次通过网络栈内核看到的是截然不同的网络包。

TAP 设备

TAP 设备与 TUN 设备工作方式完全相同,区别在于:

TUN 设备的 /dev/tunX 文件收发的是 IP 层数据包,只能工作在 IP 层,无法与物理网卡做 bridge,但是可以通过三层交换(如 ip_forward)与物理网卡连通。

TAP 设备的 /dev/tapX 文件收发的是 MAC 层数据包,拥有 MAC 层功能,可以与物理网卡做 bridge,支持 MAC 层广播

MACVLAN

有时我们可能需要一块物理网卡绑定多个 IP 以及多个 MAC 地址,虽然绑定多个 IP 很容易,但是这些 IP 会共享物理网卡的 MAC 地址,可能无法满足我们的设计需求,所以有了 MACVLAN 设备,其工作方式如下:

 

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

MACVLAN 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡。单独使用 MACVLAN 好像毫无意义,但是配合之前介绍的 network namespace 使用,我们可以构建这样的网络:

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

由于 macvlan 与 eth0 处于不同的 namespace,拥有不同的 network stack,这样使用可以不需要建立 bridge 在 virtual namespace 里面使用网络。

MACVTAP

MACVTAP 是对 MACVLAN的改进,把 MACVLAN 与 TAP 设备的特点综合一下,使用 MACVLAN 的方式收发数据包,但是收到的包不交给 network stack 处理,而是生成一个 /dev/tapX 文件,交给这个文件:

 

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

由于 MACVLAN 是工作在 MAC 层的,所以 MACVTAP 也只能工作在 MAC 层,不会有 MACVTUN 这样的设备。

创建虚拟网络环境

使用命令


  1. $ ip netns add net0 

可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables,等等。总之,与网络有关的组件都是独立的。

使用命令


  1. $ ip netns list 
  2. net0 

可以看到我们刚才创建的网络环境

进入虚拟网络环境

使用命令


  1. $ ip netns exec net0  
  2. `command` 

我们可以在 net0 虚拟环境中运行任何命令

 

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

这样我们可以在新的网络环境中打开一个shell,可以看到,新的网络环境里面只有一个lo设备,并且这个lo设备与外面的lo设备是不同的,之间不能互相通讯。

连接两个网络环境

新的网络环境里面没有任何网络设备,并且也无法和外部通讯,就是一个孤岛,通过下面介绍的这个方法可以把两个网络环境连起来,简单的说,就是在两个网络环境之间拉一根网线。


  1. $ ip netns add net1 

先创建另一个网络环境net1,我们的目标是把net0与net1连起来。

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

这里创建连一对veth虚拟网卡,类似pipe,发给veth0的数据包veth1那边会收到,发给veth1的数据包veth0会收到。就相当于给机器安装了两个网卡,并且之间用网线连接起来了。


  1. $ ip link set veth0 netns net0 
  2. $ ip link set veth1 netns net1 

这两条命令的意思就是把veth0移动到net0环境里面,把veth1移动到net1环境里面,我们看看结果。

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

veth0 veth1已经在我们的环境里面消失了,并且分别出现在net0与net1里面。下面我们简单测试一下net0与net1的联通性。

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

分别配置好两个设备,然后用ping测试一下联通性:

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

一个稍微复杂的网络环境

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

创建虚拟网络环境并且连接网线。


  1. ip netns add net0 
  2. ip netns add net1 
  3. ip netns add bridge 
  4. ip link add type veth 
  5. ip link set dev veth0 name net0-bridge netns net0 
  6. ip link set dev veth1 name bridge-net0 netns bridge 
  7. ip link add type veth 
  8. ip link set dev veth0 name net1-bridge netns net1 
  9. ip link set dev veth1 name bridge-net1 netns bridge 

在bridge中创建并且设置br设备:


  1. ip netns exec bridge brctl addbr br 
  2. ip netns exec bridge ip link set dev br up 
  3. ip netns exec bridge ip link set dev bridge-net0 up 
  4. ip netns exec bridge ip link set dev bridge-net1 up 
  5. ip netns exec bridge brctl addif br bridge-net0 
  6. ip netns exec bridge brctl addif br bridge-net1 

然后配置两个虚拟环境的网卡:

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

测试:

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

OK,以上便是今天的内容。

最后

NDK基础开发流程—Linux流程大纲

 

如何才能学好linux网络虚拟化技术_qh.itpxw.cn

文章出自:http://qh.itpxw.cn/qgtk/201949260.html

文章标题:如何才能学好linux网络虚拟化技术



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

(责任编辑:IT培训网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02