上一节完我们创建了外部网络 ext_net,接下来需要将其连接到 Neutron 的虚拟路由器,这样 instance 才能访问外网。

点击菜单 Project -> Network -> Routers 进入 router 列表。

点击 router_100_101 的 “Set Gateway” 按钮。

在 “External Network” 下拉列表中选择 ext_net,点击 “Set Gateway”。

外网设置成功。我们需要看看 router 发生了什么变化。

点击 “router_100_101” 链接,打开 “Interfaces” 标签页。

router 多了一个新 interface,IP 为 10.10.10.2。

该 interface 用于连接外网 ext_net,对应的 br-ex 的 port “qg-cf54d3ea-6a”。

在 router 的 namespace 中查可以看到 qg-cf54d3ea-6a 已经配置了 IP 10.10.10.2。

router interface 的命名规则如下:

1. 如果 interface 用于连接租户网络,命名格式为 qr-xxx。

2. 如果 interface 用于连接外部网络,命名格式为 qg-xxx。

查看 router 的路由表信息:

可以看到默认网关为 10.10.10.1。

意味着对于访问 vlan100 和 vlan101 租户网络以外的所有流量,router_100_101 都将转发给 ext_net 的网关 10.10.10.1。

现在 router_100_101 已经同时连接了 vlan100, vlan101 和 ext_net 三个网络,如下图所示:

我们在 cirros-vm3 上测试一下。

cirros-vm3 位于计算节点,现在已经可以 Ping 到 ext_net 网关 10.10.10.1 了。

通过 traceroute 查看一下 cirros-vm3 到 10.10.10.1 的路径:

数据包经过两跳到达 10.10.10.1 网关。

1. 数据包首先发送到 router_100_101 连接 vlan101 的 interface(172.16.101.1)。 
2. 然后通过连接 ext_net 的 interface(10.10.10.2) 转发出去,最后到达 10.10.10.1。

当数据包从 router 连接外网的接口 qg-cf54d3ea-6a 发出的时候,会做一次 Source NAT,将包的源地址修改为 router 的接口地址 10.10.10.2,这样就能够保证目的端能够将应答的包发回给 router,然后再转发回源端 instance。

有关 Source NAT 的详细分析可以参考 Linux Bridge 中 router 的相关章节。

floating IP

通过 SNAT 使得 instance 能够直接访问外网,但外网还不能直接访问 instance。

直接访问 instance 指的是通信连接由外网发起,例如从外网 SSH instance。

如果需要从外网直接访问 instance,可以利用 floating IP。

Open vSwitch driver 环境中 floating IP 的实现与 Linux Bridge driver 完全一样:

都是通过在 router 提供网关的外网 interface 上配置 iptables NAT 规则实现。

有关 floating IP 的详细分析可以参考 Linux Bridge 中 floating IP 的相关章节。

至此,OVS 的路由服务就讨论完了,下一节我们将开始学习 Neutron VxLAN 的 OVS 实现。

将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)相关推荐

  1. 将 instance 连接到 first_local_net - 每天5分钟玩转 OpenStack(82)

    上一节 first_local_net 已经就绪,下面创建 instance 并将其连接到该网络. 将 instance 连接到 first_local_net launch 一个 instance, ...

  2. 创建外网 ext_net - 每天5分钟玩转 OpenStack(104)

    虽然外部网络是已经存在的网络,但我们还是需要在 Neutron 中定义外部网络的对象,这样 router 才知道如何将租户网络和外部网络连接起来. 上一节我们已经为创建外部网络配置了ML2,本节将通过 ...

  3. 部署 DevStack - 每天5分钟玩转 OpenStack(17)

    http://www.cnblogs.com/CloudMan6/p/5357273.html 部署 DevStack - 每天5分钟玩转 OpenStack(17) 本节按照以下步骤部署 DevSt ...

  4. LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)

    http://www.cnblogs.com/CloudMan6/p/5277927.html LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8) LVM 类型的 ...

  5. 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)

    http://www.cnblogs.com/CloudMan6/p/5402490.html 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22) 本节首先讨论 p_ ...

  6. Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)

    Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...

  7. Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)

    Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...

  8. 每天5分钟玩转openstack跟学(一)预备知识

    前言:对于openstack我是一名小白,打算跟着CloudMan的<每天5分钟玩转openstack>进行学习,有兴趣的小伙伴可以跟着我一起,相互探讨,互相进步,该系列博文基本不涉及原理 ...

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

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

最新文章

  1. 面试碰到这个算法:字母异位词分组
  2. MAC终端配色Solarized
  3. ec6110刷linux系统,华为EC6110-T优盘强刷固件升级包及刷机教程
  4. 软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?
  5. python online json editor_JSON Editor 中文文档
  6. iOS之友盟简单分享(第三方)及sso授权问题
  7. 备忘--简单比较SPSS、RapidMiner、KNIME以及Kettle四款数据分析工具
  8. 简单的excel上传解析和错误反馈信息下载
  9. Machine Learning——Homework1
  10. android的listview单项中包含RadioButton,实现RadioButton的单选显示效果
  11. 支持x86/aarch/mips/loongarch的jogamp-2.3.2源码开源
  12. absolute之后居中宽度自适应
  13. 客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
  14. ​​​​浏览器中添加Json解析工具
  15. 服务器显示器指示灯不亮,电脑显示器指示灯不亮怎么办
  16. matlab实时处理数据,Matlab下实现的实时数据采集和处理
  17. Laravel框架简介与环境搭建
  18. 诺贝文学奖对莫言获奖评价
  19. mysql 登录失败18456_Sqlserver 2005 登录用户提示“sa'登录失败。错误18456“的解决方案...
  20. 计算机等级图片背景蓝色怎么调,如何给证件照换背景色/把背景底色为蓝色的证件照换为白色底 - 狸窝...

热门文章

  1. linux磁盘和文件系统管理
  2. HDU 2993 MAX Average Problem(斜率优化DP)
  3. Asp.net MVC 仿照博客园的简单网站首页 列表设计
  4. PowerDesigner(1)----转载
  5. 一个月按多少天计算日工资合理
  6. 7大最重要的管理方法
  7. python操作access数据库未发现数据源名称_ASP连接ACCESS数据库失败,提示“未发现数据源名称并且未指定默认驱动程序”...
  8. 机械制图符号_《机械制图》试卷
  9. JSTL的错误“attribute test does not accept any expressions”解决方法
  10. java json对象 输出_拼json字符串输出java对象