整合Open vSwitch与DNSmasq为虚拟机提供DHCP功能

继上文《Ubuntu14.04安装配置Open vSwitch》安装好Open vSwitch后,这里我们将要创建两个KVM虚拟机,并通过DNSmasq来为这两个虚拟机自动分配私网IP地址。

虚拟机与宿主机网络结构图大致如下所示:

测试环境说明:

1)测试私网段:172.17.0.0/24

2)测试 vlan tag:100

下面简要介绍下整个配置流程:

1、安装dnsmasq:

??  sudo apt-get install dnsmasq
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  dnsmasq
0 upgraded, 1 newly installed, 0 to remove and 37 not upgraded.
Need to get 14.9 kB of archives.
After this operation, 114 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/universe dnsmasq all 2.68-1ubuntu0.1 [14.9 kB]
Fetched 14.9 kB in 0s (138 kB/s)
Selecting previously unselected package dnsmasq.
(Reading database ... 231198 files and directories currently installed.)
Preparing to unpack .../dnsmasq_2.68-1ubuntu0.1_all.deb ...
Unpacking dnsmasq (2.68-1ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
Setting up dnsmasq (2.68-1ubuntu0.1) ...
 * Starting DNS forwarder and DHCP server dnsmasq                                                                                               [ OK ]
Processing triggers for ureadahead (0.100.0-16) ...
??  sudo ps -ea | grep dns
 3307 ?        00:00:00 dnsmasq

2、通过 ovs 创建一个 internal port,这里取名为 qdhcp,并设置 vlan id 为100,供下文的 dnsmasq 进程使用:

??  sudo ovs-vsctl add-port br0 qdhcp tag=100
??  sudo ovs-vsctl set Interface qdhcp type=internal

3、查看已经创建的 qdhcp port:

??  sudo ovs-vsctl show
1e6548a9-956e-4b86-b743-f8da0aa2b922
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port qdhcp
            tag: 100
            Interface qdhcp
                type: internal
        Port "eth0"
            Interface "eth0"
    ovs_version: "2.0.2"
??  ifconfig 

qdhcp     Link encap:Ethernet  HWaddr 72:6c:a8:c2:48:68
          inet6 addr: fe80::706c:a8ff:fec2:4868/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:578 (578.0 B)

4、给 qdhcp 虚拟网卡配置 IP 地址,这里IP地址必须为测试私网内的,这里我们就分配 172.17.0.1 给qdhcp:

??  sudo ifconfig qdhcp 172.17.0.1 netmask 255.255.255.0 up
??  ifconfig

qdhcp     Link encap:Ethernet  HWaddr 72:6c:a8:c2:48:68
          inet addr:172.17.0.1  Bcast:172.17.0.255  Mask:255.255.255.0
          inet6 addr: fe80::706c:a8ff:fec2:4868/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)

5、启动一个 dnsmasq 进程,监听 qdhcp 虚拟网卡:

??  sudo /usr/sbin/dnsmasq --strict-order --bind-interfaces --interface=qdhcp --except-interface=lo --pid-file=/var/run/dnsmasq/qdhcp.pid --leasefile-ro --dhcp-range=172.17.0.2,172.17.0.254,255.255.255.0,12h --conf-file=

6、查看已经启动的 dnsmasq 进程:

??  ps aux | grep dnsmasq
nobody    3471  0.0  0.0  35228  2412 ?        S    12:26   0:00 /usr/sbin/dnsmasq --strict-order --bind-interfaces --interface=qdhcp --except-interface=lo --pid-file=/var/run/dnsmasq/qdhcp.pid --leasefile-ro --dhcp-range=172.17.0.2,172.17.0.254,255.255.255.0,12h --conf-file=

7、下面就是整理两个虚拟机VM1、VM2的配置文件,这里仅展示 interface 这块配置项:

VM1:
    <interface type=‘bridge‘>
      <source bridge=‘br0‘/>
      <vlan>
        <tag id=‘100‘/>
      </vlan>
      <virtualport type=‘openvswitch‘/>
      <target dev=‘tap0‘/>
      <model type=‘virtio‘/>
    </interface>

VM2:
    <interface type=‘bridge‘>
      <source bridge=‘br0‘/>
      <vlan>
        <tag id=‘100‘/>
      </vlan>
      <virtualport type=‘openvswitch‘/>
      <target dev=‘tap0‘/>
      <model type=‘virtio‘/>
    </interface>

这里将两个虚拟机的虚拟网卡的 vlan id 都设为 100,即必须保证和 qdhcp port在同一个vlan中。

8、启动VM1、VM2,并查看 ovs 虚拟网卡 tap0、tap1 的情况:

??  sudo ovs-vsctl show
1e6548a9-956e-4b86-b743-f8da0aa2b922
    Bridge "br0"
        Port "tap1"
            tag: 100
            Interface "tap1"
        Port "br0"
            Interface "br0"
                type: internal
        Port qdhcp
            tag: 100
            Interface qdhcp
                type: internal
        Port "eth0"
            Interface "eth0"
        Port "tap0"
            tag: 100
            Interface "tap0"
    ovs_version: "2.0.2"

由此,我们已经将VM1、VM2和qdhcp port分在了同一个VLAN里了。

10、通过VNC登陆到VM1、VM2中,查看其是否获取到指定私网段IP地址:

VM1:

VM2:

11、从VM1 ping VM2:

至此,整合Open vSwitch与DNSmasq的功能就完成了,两个虚拟机之间就可以愉快地玩耍了。

时间: 2024-11-09 03:16:37

整合Open vSwitch与DNSmasq为虚拟机提供DHCP功能的相关文章

为虚拟机提供FT

在群集中启用vSphere FT功能之后,可以为各个虚拟机打开FT功能.在打开FT之前,需要在虚拟机上执行多项检查,包括必须在vCenter Server设置中启用SSL证书检查:主机必须位于vSphere HA群集或包含vSphere HA和DRS的混合群集内:虚拟机不得有多个CPU:虚拟机不得有快照:虚拟机不得是模板:对于虚拟机不得禁用vSphere HA:虚拟机不得有启用了3D的视频设备等. 在打开FT功能后,vCenter Server会取消虚拟机的内存限制设置,并将内存预留值设置为虚拟

Java千百问_08JDK详解(015)_JVMTI提供哪些功能

点击进入_更多_Java千百问 1.JVMTI提供哪些功能 了解JVMTI看这里:JVMTI是什么 编写JVMTI程序看这里:如何编写JVMTI agent程序 JVMTI 的功能非常丰富,包含了虚拟机中线程.内存堆/栈.类/方法/变量.事件/定时器处理.代码调试等多种功能,这里我们介绍一些常用的功能. 调试功能 调试功能是JVMTI的基本功能之一,这主要包括了设置断点.调试等,在JVMTI里面,设置断点的API本身很简单: jvmtiError SetBreakpoint(jvmtiEnv*

云测试平台通常都提供哪些功能和服务

  主流的云测试平台都支持对原生native,混合hybrid和Web app的测试,这些测试包括: 1. 兼容测试 通过在多种测试设备上安装/卸载和运行被测app,遍历app的每个界面,主要检查app是否会报错或者崩溃.有些云测试平台还会对每个页面进行截图并进行对比. 2. 脚本测试 通过运行云测试平台工具进行录制的或者使用自动化测试框架编写的自动化脚本,实现模拟用户操作的目的,并且减少手动测试时间. 3. 性能监控和分析 利用Android SDK提供的借口,云测试平台可以检测移动app的耗

Windows API所提供的功能可以归为七类

1.基础服务(Base Services),提供对Windows系统可用的基础资源的访问接口.比如象:文件系统(file system).外部设备(device).,进程(process).线程(thread)以及访问注册表(Windows registry)和错误处理机制(error handling).这些功能接口位于,16位Windows下的kernel.exe.krnl286.exe或krnl386.exe系统文档中:以及32位Windows下的 kernel32.dll和advapi3

创建一个提供搜索功能的搜索类(可运行)

/* * 这段代码的主要功能是对于创建索引的后的文件, * 创建一个提供搜索功能的搜索类. * */ package ch2.lucenedemo.process; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.Iterator; import jav

dnsmasq多物理网口dhcp配置

家里有一台pc安装了openwrt做成软路由,升级主板后.不知道什么原因openwrt无法运行,只好自己配置了. OS使用的是centos7.3mini版,DHCP使用的是dnsmasq2.77(最新版) 硬件:intel j1900主板 ,Intel e1000 pcie四口网卡 由于7.3自带的2.66在配置多网口dhcp时无法分配ip,不知道是什么问题造成的.2.77版本就没有这个问题. dnsmasq系统启动文件: [Unit] Description=DNS caching serve

十五天精通WCF——第三天 client如何知道server提供的功能清单

 通常我们去大保健的时候,都会找姑娘问一下这里能提供什么服务,什么价格,这时候可能姑娘会跟你口述一些服务或者提供一份服务清单,这样的话大 家就可以做到童嫂无欺,这样一份活生生的例子,在wcf中同样是一个道理,只有client了解service能提供哪些功能,client才可以根据server提供的功能进行 消费,那问题来了,service怎么把功能提供给client进行选择呢???这个就是我这一篇要聊的wsdl(web service description language)... 一:wsd

创建一个提供搜索功能来搜索类(可执行文件)

/* * 这段代码的主要功能是后创建文件的索引. * 创建一个提供搜索功能来搜索类. * */ package ch2.lucenedemo.process; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.Iterator; import java.u

6.17 实现大纲视图Outline,并且提供鹰眼功能(eagle eye)

1.创建outline 创建图形模型的 Outline 是通过 getAdapter 实现的,如果类型是 IContentOutlinePage,则返回一个大纲视图页面.因此要创建一个 MyContentOutlinePage 类.注意,这里的MyContentOutlinePage 类不是从 org.eclipse.ui.views.contentoutline.ContentOutlinePage 派生的,而是从 org.eclipse.gef.ui.parts.ContentOutline