整合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
- 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功能的更多相关文章
- Neutron :默认通过 dnsmasq 实现 DHCP 功能----Namespace
Neutron 提供 DHCP 服务的组件是 DHCP agent. DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能. 配置 DHCP agent DHCP ...
- VMWare虚拟机提供的桥接、nat和主机模式的区别
虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 哪一种网络是适合自己的虚拟 ...
- ETL工具的功能和kettle如何来提供这些功能
不多说,直接上干货! 大家会有一个疑惑,本系列博客是Kettle,那怎么扯上ETL呢? Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了 ...
- DNSmasq – 配置DNS和DHCP
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络.它提供了DNS功能和可选择的DHCP功能可以取代dhcpd(DHCPD服务配置)和bind等服务,配置起来更简单,更适用 ...
- 中国区Windows Azure 提供的功能以及与国外的差异
当前中国服务提供的功能 目前,中国服务中包括以下 Azure 功能. 计算 - 虚拟机(用于 IaaS 服务) 计算 - 云服务(用于 PaaS 服务) 计算 - 网站 数据服务 - 存储(用于 Bl ...
- 适用于 Windows 的虚拟机扩展和功能
Azure 虚拟机扩展是小型应用程序,可在Azure 虚拟机上提供部署后配置和自动化任务. 例如,如果虚拟机要求安装软件.防病毒保护或进行 Docker 配置,便可以使用 VM 扩展来完成这些任务. ...
- 十五天精通WCF——第三天 client如何知道server提供的功能清单
通常我们去大保健的时候,都会找姑娘问一下这里能提供什么服务,什么价格,这时候可能姑娘会跟你口述一些服务或者提供一份服务清单,这样的话大 家就可以做到童嫂无欺,这样一份活生生的例子,在wcf中同样是一 ...
- 安装virtualbox虚拟机的增强功能
转自:http://wubangtu.com/714 最近有很多人问我这个问题,现在全部写在这里,免得到时候又啰嗦一遍了,哈哈.欢迎大家前来围观: 安装virtualbox虚拟机的增强功能可以实现如下 ...
- springdata 动态查询 是用来查询的 仅提供查询功能
springdata 动态查询 是用来查询的 仅提供查询功能
随机推荐
- [整][转]Invoke和BeginInvoke的使用
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...
- php中文汉字截取函数
public function substrgb($in,$num) { //$num=16; $pos=0; $bytenum=0; $out=""; while($num){ ...
- js使用正则表达式
参考慕课网示例: 使用js对html输入框内容进行校验: 1. 只能输入5-20个字符,必须以“字母”开头 2. 可以带“数字" “_” “.”的字串 <!DOCTYPE html P ...
- Android窃取用户信息新思路
0×01 我们能得到哪些android手机上的app敏感信息手机上的app敏感信息◦通讯录,通讯记录,短信◦各种app的帐号密码,输入信息资料等◦各种影音资料,照片资料◦等等0×02 我们有哪些方法 ...
- POJ 2253 Frogger 最短路 难度:0
http://poj.org/problem?id=2253 #include <iostream> #include <queue> #include <cmath&g ...
- c# datagridview按条件搜索查询过滤
DataView的RowFilter 实现过滤 根据文本框文字对datagridview的数据进行模糊查询, 其实也就是一个过滤 string qymc = textBox1.Text.ToStrin ...
- 如何在滚动报表时保持标题可见 (Reporting Services)
From: https://msdn.microsoft.com/zh-cn/library/bb934257.aspx 对于跨多页的表或矩阵数据区域,可以控制滚动报表时是否始终显示包含列标题的初始行 ...
- CSSOM视图模式(CSSOM View Module)相关整理(转载)
原文地址 http://www.zhangxinxu.com/wordpress/?p=1907 一.Window视图属性 这些属性可以hold住整个浏览器窗体大小.微软则将这些API称为“Scree ...
- [转] Android应用程序与SurfaceFlinger服务的关系概述和学习计划
转自:Android应用程序与SurfaceFlinger服务的关系概述和学习计划 SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件 ...
- mybatis分页插件PageHelper的使用(转)
Mybatis 的分页插件PageHelper-4.1.1的使用 Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_P ...