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

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

测试环境说明:

1)测试私网段:172.17.0.0/24

2)测试 vlan tag:100

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

1、安装dnsmasq:

  1. ◄► sudo apt-get install dnsmasq
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. The following NEW packages will be installed:
  6. dnsmasq
  7. upgraded, newly installed, to remove and not upgraded.
  8. Need to get 14.9 kB of archives.
  9. After this operation, kB of additional disk space will be used.
  10. Get: http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/universe dnsmasq all 2.68-1ubuntu0.1 [14.9 kB]
  11. Fetched 14.9 kB in 0s ( kB/s)
  12. Selecting previously unselected package dnsmasq.
  13. (Reading database ... files and directories currently installed.)
  14. Preparing to unpack .../dnsmasq_2.-1ubuntu0.1_all.deb ...
  15. Unpacking dnsmasq (2.68-1ubuntu0.) ...
  16. Processing triggers for ureadahead (0.100.-) ...
  17. ureadahead will be reprofiled on next reboot
  18. Setting up dnsmasq (2.68-1ubuntu0.) ...
  19. * Starting DNS forwarder and DHCP server dnsmasq [ OK ]
  20. Processing triggers for ureadahead (0.100.-) ...
  21. ◄► sudo ps -ea | grep dns
  22. ? :: dnsmasq

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

  1. ◄► sudo ovs-vsctl add-port br0 qdhcp tag=
  2. ◄► sudo ovs-vsctl set Interface qdhcp type=internal

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

  1. ◄► sudo ovs-vsctl show
  2. 1e6548a9-956e-4b86-b743-f8da0aa2b922
  3. Bridge "br0"
  4. Port "br0"
  5. Interface "br0"
  6. type: internal
  7. Port qdhcp
  8. tag:
  9. Interface qdhcp
  10. type: internal
  11. Port "eth0"
  12. Interface "eth0"
  13. ovs_version: "2.0.2"
  14. ◄► ifconfig
  15.  
  16. qdhcp Link encap:Ethernet HWaddr :6c:a8:c2::
  17. inet6 addr: fe80::706c:a8ff:fec2:/ Scope:Link
  18. UP BROADCAST RUNNING MTU: Metric:
  19. RX packets: errors: dropped: overruns: frame:
  20. TX packets: errors: dropped: overruns: carrier:
  21. collisions: txqueuelen:
  22. RX bytes: (0.0 B) TX bytes: (578.0 B)

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

  1. ◄► sudo ifconfig qdhcp 172.17.0.1 netmask 255.255.255.0 up
  2. ◄► ifconfig
  3.  
  4. qdhcp Link encap:Ethernet HWaddr :6c:a8:c2::
  5. inet addr:172.17.0.1 Bcast:172.17.0.255 Mask:255.255.255.0
  6. inet6 addr: fe80::706c:a8ff:fec2:/ Scope:Link
  7. UP BROADCAST RUNNING MTU: Metric:
  8. RX packets: errors: dropped: overruns: frame:
  9. TX packets: errors: dropped: overruns: carrier:
  10. collisions: txqueuelen:
  11. RX bytes: (0.0 B) TX bytes: (648.0 B)

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

  1. ◄► 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 进程:

  1. ◄► ps aux | grep dnsmasq
  2. nobody 0.0 0.0 ? S : : /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 这块配置项:

  1. VM1
  2. <interface type='bridge'>
  3. <source bridge='br0'/>
  4. <vlan>
  5. <tag id='100'/>
  6. </vlan>
  7. <virtualport type='openvswitch'/>
  8. <target dev='tap0'/>
  9. <model type='virtio'/>
  10. </interface>
  11.  
  12. VM2
  13. <interface type='bridge'>
  14. <source bridge='br0'/>
  15. <vlan>
  16. <tag id='100'/>
  17. </vlan>
  18. <virtualport type='openvswitch'/>
  19. <target dev='tap0'/>
  20. <model type='virtio'/>
  21. </interface>

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

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

  1. ◄► sudo ovs-vsctl show
  2. 1e6548a9-956e-4b86-b743-f8da0aa2b922
  3. Bridge "br0"
  4. Port "tap1"
  5. tag:
  6. Interface "tap1"
  7. Port "br0"
  8. Interface "br0"
  9. type: internal
  10. Port qdhcp
  11. tag:
  12. Interface qdhcp
  13. type: internal
  14. Port "eth0"
  15. Interface "eth0"
  16. Port "tap0"
  17. tag:
  18. Interface "tap0"
  19. ovs_version: "2.0.2"

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

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

VM1:

VM2:

11、从VM1 ping VM2:

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

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

  1. Neutron :默认通过 dnsmasq 实现 DHCP 功能----Namespace

    Neutron 提供 DHCP 服务的组件是 DHCP agent. DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能.   配置 DHCP agent DHCP ...

  2. VMWare虚拟机提供的桥接、nat和主机模式的区别

    虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 哪一种网络是适合自己的虚拟 ...

  3. ETL工具的功能和kettle如何来提供这些功能

    不多说,直接上干货! 大家会有一个疑惑,本系列博客是Kettle,那怎么扯上ETL呢? Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了 ...

  4. DNSmasq – 配置DNS和DHCP

    DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络.它提供了DNS功能和可选择的DHCP功能可以取代dhcpd(DHCPD服务配置)和bind等服务,配置起来更简单,更适用 ...

  5. 中国区Windows Azure 提供的功能以及与国外的差异

    当前中国服务提供的功能 目前,中国服务中包括以下 Azure 功能. 计算 - 虚拟机(用于 IaaS 服务) 计算 - 云服务(用于 PaaS 服务) 计算 - 网站 数据服务 - 存储(用于 Bl ...

  6. 适用于 Windows 的虚拟机扩展和功能

    Azure 虚拟机扩展是小型应用程序,可在Azure 虚拟机上提供部署后配置和自动化任务. 例如,如果虚拟机要求安装软件.防病毒保护或进行 Docker 配置,便可以使用 VM 扩展来完成这些任务. ...

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

     通常我们去大保健的时候,都会找姑娘问一下这里能提供什么服务,什么价格,这时候可能姑娘会跟你口述一些服务或者提供一份服务清单,这样的话大 家就可以做到童嫂无欺,这样一份活生生的例子,在wcf中同样是一 ...

  8. 安装virtualbox虚拟机的增强功能

    转自:http://wubangtu.com/714 最近有很多人问我这个问题,现在全部写在这里,免得到时候又啰嗦一遍了,哈哈.欢迎大家前来围观: 安装virtualbox虚拟机的增强功能可以实现如下 ...

  9. springdata 动态查询 是用来查询的 仅提供查询功能

    springdata 动态查询 是用来查询的 仅提供查询功能

随机推荐

  1. [整][转]Invoke和BeginInvoke的使用

    在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...

  2. php中文汉字截取函数

    public function substrgb($in,$num) { //$num=16; $pos=0; $bytenum=0; $out=""; while($num){ ...

  3. js使用正则表达式

    参考慕课网示例: 使用js对html输入框内容进行校验: 1. 只能输入5-20个字符,必须以“字母”开头 2. 可以带“数字" “_” “.”的字串 <!DOCTYPE html P ...

  4. Android窃取用户信息新思路

    0×01 我们能得到哪些android手机上的app敏感信息手机上的app敏感信息◦通讯录,通讯记录,短信◦各种app的帐号密码,输入信息资料等◦各种影音资料,照片资料◦等等0×02  我们有哪些方法 ...

  5. POJ 2253 Frogger 最短路 难度:0

    http://poj.org/problem?id=2253 #include <iostream> #include <queue> #include <cmath&g ...

  6. c# datagridview按条件搜索查询过滤

    DataView的RowFilter 实现过滤 根据文本框文字对datagridview的数据进行模糊查询, 其实也就是一个过滤 string qymc = textBox1.Text.ToStrin ...

  7. 如何在滚动报表时保持标题可见 (Reporting Services)

    From: https://msdn.microsoft.com/zh-cn/library/bb934257.aspx 对于跨多页的表或矩阵数据区域,可以控制滚动报表时是否始终显示包含列标题的初始行 ...

  8. CSSOM视图模式(CSSOM View Module)相关整理(转载)

    原文地址 http://www.zhangxinxu.com/wordpress/?p=1907 一.Window视图属性 这些属性可以hold住整个浏览器窗体大小.微软则将这些API称为“Scree ...

  9. [转] Android应用程序与SurfaceFlinger服务的关系概述和学习计划

    转自:Android应用程序与SurfaceFlinger服务的关系概述和学习计划 SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件 ...

  10. mybatis分页插件PageHelper的使用(转)

    Mybatis 的分页插件PageHelper-4.1.1的使用 Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_P ...