利用Linux操作系统提供的 络虚拟化功能,创建一个跨主机覆盖的vlan 络。vlan id占用12比特的数字,可表示的范围是4096,最多可以创建4096个vlan 络。为什么是这么小呢vlan构筑在大二层 络之上,二层 络是局域 ,规模是有限的。在有限的二层 络上创建虚拟 ,4096应该是足够大的了。
1.准备实现环境
用VirtualBox创建两台虚拟机ubuntu-01与ubuntu-02,使用ubuntu-16.04.3-server-amd64.iso镜像,选装镜像自带的Virtual Machine功能以便于创建KVM虚拟机。另外手动安装桌面环境及virt-manager软件。
ubuntu-01与ubuntu-02 卡设置如下表:
卡名称 | 络类型 | 作用 |
enp0s3 | nat 络 | 连接外部 络,主要用于安装软件包 |
enp0s9 | 内部 络 | 为分别位于ubuntu-01与ubuntu-02中的虚拟机互通提供物理连接 |
2.组 图

图1
上图是将要实现 络的连接示意图,创建一个vlan id为100的跨ubuntu-01与ubuntu-02的vlan 络。在ubuntu-01中用dnsmasq为整个vlan 络提供DHCP功能,如图中的橙色部分。同时在ubuntu-01中利用iptables为整个 络提供三层 络服务,使新创建的VLAN 络具备连接外 的能力。图中红色部分为VirtualBox的内部 络,用来模拟现实中的物理交换机。最终目的是实现ubuntu-01中的虚拟机test01与ubuntu-02的虚拟机test02能同时接入VLAN 络并能连接外 。
下表是所创建vlan 络的IP地址规划表
络名称 | VLAN ID | 关 | DHCP地址 | IP地址范围 |
test-br-01 | 100 | 172.16.0.1 | 172.16.0.2 | 172.16.0.3/24~172.16.0.50/24 |
表1
3.创建二层vlan 络
- 首先用root账户登录ubuntu-01,根据图1及表1的规划配置dnsmasq。创建文件/etc/test-dnsmasq.conf,增加如下内容:
- 在 卡enp0s9上创建vlan从设备enp0s9.100,vlan id为100,运行如下命令:
- 创建 桥test-br-01,并挂接enp0s9.100,命令如下:
启动dnsmasq服务。为了隔离dnsmasq,使它只为本次创建的 络服务,而不是ubuntu-01连接的所有 络,需要创建 络名称空间test-ns-01实现隔离,并用veth pair设备连接test-ns-01名称空间与系统名称空间。其中veth pair中的test-veth-02放入名称空间,并手动l设置IP地址172.16.0.2,作为DHCP服务的监听地址。另一端test-veth-01挂接到 桥test-br-01上。启动设备后,在名称空间test-ns-01下启动dnsmasq,具体命令如下:
用root账户登录ubuntu-02。同样,在enp0s9上创建VLAN从设备enp0s9.100,vlan id为100。创建 桥test-br-01并将enp0s9.100挂接上,然后启动所有创建的设备。在ubuntu-02中无需配置dnsmasq相关的内容。命令如下:
至此,vlan 络的二层相关部分已经搭建完成,可以创建虚拟机并能互通了。但是还不能连接外 。
4.为vlan 络设置三层服务。
按图1中的规划,需要在ubunt-01上为整个vlan 络提供三层服务。步骤如下。
- 用root账户登录ubuntu-01
- 为test-br-01设置IP地址,使它可以向ubuntu-01的 络栈注入数据
- 设置iptables的转发及nat规则
至此,vlan 络的二层及三层全部搭建完成。
5.测试 络
在ubuntu-01上创建KVM虚拟机test01,并连接到vlan 络test-br-01上。在ubuntu-02上执行同样的操作。登录所创建的虚拟机查看ip分配情况,及测试连接性。
通过ifconfig命令可以看到,两台虚拟机都正确分配到了test-br-01 络上的IP地址。运行ping命令,是可以互通的。另外在两台虚拟机中ping外 地址也是可以通过的。如果正确设备了DNS服务器地址,就可以解析域名了。
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树交换VLAN22400 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!