virbr0 是 KVM 默认创建的一个 Bridge,其作用是为连接其上的虚机网卡提供 NAT 访问外网的功能。

virbr0 默认分配了一个IP 192.168.122.1,并为连接其上的其他虚拟网卡提供 DHCP 服务。

下面我们演示如何使用 virbr0。

在 virt-manager 打开 VM1 的配置界面,网卡 Source device 选择 “default”,将 VM1 的网卡挂在 virbr0 上。

启动 VM1,brctl show 可以查看到 vnet0 已经挂在了 virbr0 上。

# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c298decbe       no                    eth0
virbr0          8000.fe540075dd1a       yes                   vnet0

用 virsh 命令确认 vnet 就是 VM1 的虚拟网卡。

# virsh domiflist VM1
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      network    default    rtl8139     52:54:00:75:dd:1a

virbr0 使用 dnsmasq 提供 DHCP 服务,可以在宿主机中查看该进程信息

# ps -elf|grep dnsmasq

5 S libvirt+  2422     1  0  80   0 -  7054 poll_s 11:26 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf

在 /var/lib/libvirt/dnsmasq/ 目录下有一个 default.leases 文件,当 VM1 成功获得 DHCP 的 IP 后,可以在该文件中查看到相应的信息

# cat /var/lib/libvirt/dnsmasq/default.leases
1441525677 52:54:00:75:dd:1a 192.168.122.6 ubuntu *

上面显示 192.168.122.6 已经分配给 MAC 地址为 52:54:00:75:dd:1a 的网卡,这正是 vnet0 的 MAC。之后就可以使用该 IP 访问 VM1 了。

# ssh 192.168.122.6
root@192.168.122.6's password:
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic x86_64)
Last login: Sun Sep  6 01:30:23 2015
root@VM1:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 52:54:00:75:dd:1a
         inet addr:192.168.122.6  Bcast:192.168.122.255  Mask:255.255.255.0
         inet6 addr: fe80::5054:ff:fe75:dd1a/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:61 errors:0 dropped:0 overruns:0 frame:0
         TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:7453 (7.4 KB)  TX bytes:8649 (8.6 KB)

Ping一下外网。

root@VM1:~# ping www.baidu.com
PING www.a.shifen.com (180.97.33.107) 56(84) bytes of data.
64 bytes from 180.97.33.107: icmp_seq=1 ttl=52 time=36.9 ms
64 bytes from 180.97.33.107: icmp_seq=2 ttl=52 time=119 ms
64 bytes from 180.97.33.107: icmp_seq=3 ttl=52 time=88.5 ms
64 bytes from 180.97.33.107: icmp_seq=4 ttl=52 time=38.0 ms
64 bytes from 180.97.33.107: icmp_seq=5 ttl=52 time=122 ms

没有问题,可以访问外网,说明 NAT 起作用了。

需要说明的是,使用 NAT 的虚机 VM1 可以访问外网,但外网无法直接访问 VM1。
因为 VM1 发出的网络包源地址并不是 192.168.122.6,而是被 NAT 替换为宿主机的 IP 地址了。

这个与使用 br0 不一样,在 br0 的情况下,VM1 通过自己的 IP 直接与外网通信,不会经过 NAT 地址转换。

下节我们讨论 vlan 在 linux bridge 中的实现

理解 virbr0 - 每天5分钟玩转 OpenStack(11)的更多相关文章

  1. 理解 Glance - 每天5分钟玩转 OpenStack(20)

    OpenStack 由 Glance 提供 Image 服务. 理解 Image 要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image? 在传统 IT 环境下, ...

  2. 每天5分钟 玩转OpenStack 目录列表

    最近在学习 OpenStack 的相关知识,一直苦于 OpenStack 的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在 51CTO 上发现了一个热点的专题关于 OpenStack 的,题 ...

  3. 写在最前面 - 每天5分钟玩转 OpenStack(1)

    <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重 ...

  4. 学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)

    作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder ...

  5. cloud-init 典型应用 - 每天5分钟玩转 OpenStack(174)

    本节介绍几个 cloud-init 的典型应用:设置 hostanme,设置用户初始密码,安装软件. 设置 hostname cloud-init 默认会将 instance 的名字设置为 hostn ...

  6. OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)

    API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 ...

  7. 理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)

    作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情: 管理用户及其权限 维护 OpenStack Services 的 Endpoint Authentication(认证) ...

  8. 理解 Cinder 架构 - 每天5分钟玩转 OpenStack(45)

    从本节开始我们学习 OpenStack 的 Block Storage Service,Cinder 理解 Block Storage 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,S ...

  9. 理解 Neutorn LBaaS - 每天5分钟玩转 OpenStack(120)

    Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务.LBaaS 允许租户在自己的网络中创建和管理 load balancer. load bal ...

随机推荐

  1. js构建ui的统一异常处理方案(二)

    上一篇文章,我分析了同步代码做异常处理是基于责任链模式,而通过try.catch等语句可以很容易地实现这种责任链模式.但是如果是异步调用,我们无法直接通过try.catch语句实现责任链模式,并且通过 ...

  2. 打造Orm经典,创CRUD新时代,Orm的反攻战

    让我们开启数据库无Linq.零sql时代(续) 第一部分 MQL qq群:225656797 demo下载: 点此下载(既然下载,就支持该文,关注我的博客) Moon.Orm 5.0 (MQL版) 版 ...

  3. .net程序部署(mono方式)

    某一次 我同事用了这个词 ,说这样才显得够专业 擦.把某某项目 部署到服务器上 .擦 不就是拷个文件过去运行么.月亮 还是绵羊  我搞不清楚了 咱英文不好,绵羊叫的声音?.你就叫我山寨程序猿 随意 一 ...

  4. ASP.NET MVC自定义验证Authorize Attribute

    前几天Insus.NET有在数据库实现过对某一字段进行加密码与解密<使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和 ...

  5. @Html.Raw显示一张图片

    在ASP.NET MVC中,显示一张图片,是很方便的事情,完全可以在控制器中组合html代码,并传给视图. 下面一个简单的例子: public ActionResult HtmlRawImage() ...

  6. jquery.uploadify上传文件配置详解(asp.net mvc)

    页面源码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  7. string转byte[]

    static byte[] GetBytes(string str) { byte[] bytes = new byte[str.Length * sizeof(char)]; System.Buff ...

  8. 【Win10开发】Toast通知——前台激活

    上篇文章我们将了大体的Toast通知的模板及实例展示,那么,这篇文章就来讲讲Toast的前台激活. 首先是xaml界面,很简单,我们放一个Button和TextBlock,TextBlock用来显示T ...

  9. xp IP安全策略 ipseccmd

    ///下载 ipseccmd.exe //禁止 xp 连接 public static void BannedXPRunCmd() { string str = Console.ReadLine(); ...

  10. Oracle学习总结_day01_day02_表的创建_增删改查_约束

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 更新: SELECT * FROM (SELECT R ...