继上文《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
upgraded, newly installed, to remove and not upgraded.
Need to get 14.9 kB of archives.
After this operation, kB of additional disk space will be used.
Get: http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/universe dnsmasq all 2.68-1ubuntu0.1 [14.9 kB]
Fetched 14.9 kB in 0s ( kB/s)
Selecting previously unselected package dnsmasq.
(Reading database ... files and directories currently installed.)
Preparing to unpack .../dnsmasq_2.-1ubuntu0.1_all.deb ...
Unpacking dnsmasq (2.68-1ubuntu0.) ...
Processing triggers for ureadahead (0.100.-) ...
ureadahead will be reprofiled on next reboot
Setting up dnsmasq (2.68-1ubuntu0.) ...
* Starting DNS forwarder and DHCP server dnsmasq [ OK ]
Processing triggers for ureadahead (0.100.-) ...
◄► sudo ps -ea | grep dns
? :: dnsmasq

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

◄►  sudo ovs-vsctl add-port br0 qdhcp tag=
◄► 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:
Interface qdhcp
type: internal
Port "eth0"
Interface "eth0"
ovs_version: "2.0.2"
◄► ifconfig qdhcp Link encap:Ethernet HWaddr :6c:a8:c2::
inet6 addr: fe80::706c:a8ff:fec2:/ Scope:Link
UP BROADCAST RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (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 :6c:a8:c2::
inet addr:172.17.0.1 Bcast:172.17.0.255 Mask:255.255.255.0
inet6 addr: fe80::706c:a8ff:fec2:/ Scope:Link
UP BROADCAST RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 B) TX bytes: (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 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 这块配置项:

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:
Interface "tap1"
Port "br0"
Interface "br0"
type: internal
Port qdhcp
tag:
Interface qdhcp
type: internal
Port "eth0"
Interface "eth0"
Port "tap0"
tag:
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的功能就完成了,两个虚拟机之间就可以愉快地玩耍了。

整合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. LoadRunner 文本检查点使用

    在测试时,我们可以根据文本检查点判断事务是否执行正确.   我们在启动流程时,成功返回:   我们检查这个响应结果是否有. int i=0; i=web_reg_find("Text=\&q ...

  2. HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置

    答案:在将WebDataHelper升级到VS2013是出现的这个错误,这个程序使用了URL重写的技术, 解决方法是:需要将重写的配置,迁移到system.webServer配置节中

  3. ext afteredit

    ext afteredit详解 grid.on("afteredit",afterEidt,grid); function(obj) { obj.row;;//修改过的行从0开始 ...

  4. CentOS下编译安装MySQL 5.6.21

    一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake:http://www.cnblog ...

  5. convert2Mp4 code snippet

    #pragma mark - helper - (NSURL *)convert2Mp4:(NSURL *)movUrl { NSURL *mp4Url = nil; AVURLAsset *avAs ...

  6. 线程系列3---ThreadLocal类研究

    2013-12-23 17:44:44 Java为线程安全提供了一些工具类,如ThreadLocal类,它代表一个线程局部变量,通过把数据放在ThreadLocal中就可以让每个线程创建一个该变量的副 ...

  7. include指令和<jsp:include>标准动作

    利用JSP的包含机制,可以有效的避免重复,把可重用的部分独立出去,使用include把它们包含到当前文件.JSP有两种包含机制:include指令和<jsp:include>标准动作. 1 ...

  8. 使用Myeclipse创建自定义签名debug keystore

    1.在已经创建后的android项目上右击鼠标,如图所示 2.选择next下一步 3.选择create new keystore 注意  这里密码要输入android 4.点击next,录入基本信息 ...

  9. javaweb之Cookie篇

    Cookie是在浏览器访问某个Web资源时,由Web服务器在Http响应消息头中通过Set-Cookie字段发送给浏览器的一组数据. 一个Cookie只能表示一个信息对,这个信息对有一个信息名(Nam ...

  10. DotNetBar v14.0.0.3 Fully Cracked

    更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=14.0.0.3 如果遇到破解问题可以与我 ...