OVS使用VLAN隔离VM流量

本文描述如何使用Open vSwitch的VLAN隔离VM流量。

在这里插入图片描述

Setup 建立

本指南假设如下的配置环境

两个物理网络

  • 数据网络

    VM数据流量的以太网络,用于承载VM之间的VLAN流量。你的物理交换机必须支持转发带有VLAN标签的流量,并且物理交换机接口应工作在VLAN Trunk模式。(通常情况下,这是默认的行为。配置物理交换机硬件超出了本文的讨论范围)。

  • 管理网络

    严格意义上来说,此网络并不必须,但是,这是一种非常简单的方式给与物理主机可远程访问的IP地址,因为eth0端口不能直接赋予IP地址(马上讲述这一点)。

两个物理主机

此环境假设使用两个主机: host1 and host2. 他们都运行Open vSwitch软件。每个主机两个网卡NIC:eth0 和 eth1, 配置如下:

  • eth0 连接到数据网络. 无IP地址分配到 eth0.

  • eth1 连接到管理网络 (如果需要). eth1 拥有IP地址,可用于管理此物理机.

四个虚拟机

每个主机运行两个虚拟机(VM)。vm1vm2 运行在host1, 而 vm3vm4 运行在 host2.

每个虚拟机有一个端口,在物理主机中显示为一个Linux设备(例如, tap0)。

注意:
对于 Xen/XenServer, VM虚拟机的接口显示为名称类似vif1.0的Linux设备。其它的Linux系统也许将其端口显示为 vnet0,
vnet1, 等待.

配置步骤

在主机host1上执行以下的配置:

#. 创建 OVS 网桥:

 $ ovs-vsctl add-br br0

#. 添加 eth0 端口到网桥:

 $ ovs-vsctl add-port br0 eth0

注意:

  默认情况下,所有的OVS端口都是VLAN Trunk模式,所以eth0运行所有VLAN标签通过。

注意:

当你将eth0添加到OVS网桥后,任何分配给eth0的IP地址将停止工作。eth0的IP地址应在将其添加到OVS网桥前迁移到一个不同的端口上。这就是通过eth1实现分离的管理连接的原因。

  1. vm1 作为VLAN 100的"Access端口"添加到网桥. 这意味着由VM1进入OVS的流量将没有VLAN tag,并被假设为VLAN 100的一部分:

    $ ovs-vsctl add-port br0 tap0 tag=100

    在VLAN 200上添加 VM2:

    $ ovs-vsctl add-port br0 tap1 tag=200

在主机 host2重复以上的操作:

  1. 建立将eth0作为VLAN trunk的网桥:

    $ ovs-vsctl add-br br0
    $ ovs-vsctl add-port br0 eth0

  2. 添加 VM3 到 VLAN 100::

    $ ovs-vsctl add-port br0 tap0 tag=100

  3. 添加 VM4 到 VLAN 200::

    $ ovs-vsctl add-port br0 tap1 tag=200

验证

vm1 PING vm3应该成功,因为这两个虚拟机在相同的VLAN中(100)。

vm2 ping vm4也应当成功,因为这两个虚拟机也在相同的VLAN中(200)。

vm1vm3 ping vm2vm4都不应成功,因为这些虚拟机不在同一个VLAN中。如果你有一个路由器,配置为在VLAN间转发流量,ping可成功工作。但是,到的vm3的报文的源MAC地址应为路由器的MAC地址,而不是 vm1的MAC地址.

猜你喜欢

转载自blog.csdn.net/sinat_20184565/article/details/94481735
ovs