vxlan 络的唯一标识vni占用24个比特,所以它能虚拟的 络接近17万个,远高于vlan的4096个。另外因为vxlan是三层 络之上的覆盖 络,通过将二层的链路桢封装成UDP数据 进行传输,因此vxlan具备更好的可扩展性。同时因为将原本位于交换机中的转发表条目转移到了终端主机上,有效的减小了交换机的负担,使整个 络的负载更均衡。vxlan是有转发表的,只是关键字由原来的mac地址变成vni,当然也有自学习功能,实际上可以通过bridge命令手动增加、删除vxlan的转发表。
1.实验环境
用VirtualBox创建两台虚拟机ubuntu-01与ubuntu-02,使用ubuntu-16.04.3-server-amd64.iso镜像,选装镜像自带的Virtual Machine功能以便于创建KVM虚拟机。另外手动安装桌面环境及virt-manager软件。
ubuntu-01与ubuntu-02 卡设置如下表1:
卡名称 | 络类型 | 作用 |
enp0s3 | nat 络 | 连接外部 络,主要用于安装软件包 |
enp0s8 | 仅主机(Host-Only) 络 | 连接ubuntu-01与ubuntu-01的三层 络。vxlan 络就构筑在此三层 络之上。 |
表1
2.组 图
本例计划搭建 络的基本说明:vni为1000、覆盖ubuntu-01与ubuntu-02两台主机、 络带有DHCP功能、能连接外部 络。组 图如下图1:

图1
上图中的橙色部分表示在ubuntu-01中用dnsmasq为整个vxlan 络提供DHCP功能。绿色部分表示在ubuntu-01为整个vxlan 络提供三层路由、连接外 的功能。红色部分则表示们于vxlan之下的三层 络,由VirtualBox的仅主机(Host-Only) 络提供。
3.vxlan IP地址规划
络名称 | vni | 关 | DHCP地址 | IP地址范围 |
test-br-01 | 1000 | 172.16.0.1 | 172.16.0.2 | 172.16.0.3/24~172.16.0.50/24 |
4.创建vxlan 络
- 登录ubuntu-01,配置dnsmas1,创建文件/etc/test-dnsmasq.conf,添加如下内容:
- 在 卡enp0s8上创建vxlan从设备enp0s8vx.1000,有两种方法:
方法一:
解释:因我本次创建的vxlan 络只覆盖ubuntu-01与ubuntu-02两台主机,那么在两台主机之间创建一个点对点的隧道就可以保证vxlan所依赖的三层互通。但是,如果所覆盖的 络大于2台,那么就需要创建一个组播组,来模拟二层广播域,用来广播arp、dhcp请求,在这种情况下,请看方法二。
方法二:
- 创建 桥test-br-01,并挂接enp0s8vx.1000:
- 启动dnsmasq
- 配置ubuntu-02
因为dhcp及三层 络是在ubuntu-01中配置的,所以ubuntu-02的配置要简单一些,root登录ubuntu-02执行如下指令:
至此vxlan的二层 络已经搭建完成。
5.配置三层 络
按图1中的规划,需要在ubunt-01上为整个vlan 络提供三层服务。步骤如下。
- 用root账户登录ubuntu-01
- 为test-br-01设置IP地址,使它可以向ubuntu-01的 络栈注入数据
- 设置iptables的转发及nat规则
至此,vlan 络的二层及三层全部搭建完成。
6.测试 络
在ubuntu-01上创建KVM虚拟机test01,并连接到vlan 络test-br-01上。在ubuntu-02上执行同样的操作。登录所创建的虚拟机查看ip分配情况,及测试连接性。
通过ifconfig命令可以看到,两台虚拟机都正确分配到了test-br-01 络上的IP地址。运行ping命令,是可以互通的。另外在两台虚拟机中ping外 地址也是可以通过的。如果正确设备了DNS服务器地址,就可以解析域名了。
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24910 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!