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

简介: 上一节完我们创建了外部网络 ext_net,接下来需要将其连接到 Neutron 的虚拟路由器,这样 instance 才能访问外网。 点击菜单 Project -> Network -> Routers 进入 router 列表。

上一节完我们创建了外部网络 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 实现。

目录
相关文章
|
关系型数据库 MySQL 数据库
NET连接MySQL数据库的CRUD
NET连接MySQL数据库的CRUD
130 0
NET连接MySQL数据库的CRUD
|
关系型数据库 MySQL Java
NET连接MySQL数据库
NET连接MySQL数据库
140 0
NET连接MySQL数据库
|
运维 安全 网络安全
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
688 0
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
|
开发框架 JavaScript 前端开发
ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作
ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作
329 0
ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作
|
JSON 监控 JavaScript
.NET Core 跨平台物联网开发:连接阿里云IOT(一)
.NET Core 跨平台物联网开发:连接阿里云IOT(一)
555 0
.NET Core 跨平台物联网开发:连接阿里云IOT(一)
阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:1. 连接阿里云物联网
1) 阿里云物联网 阿里云物联网支持多种通讯协议,CZGL.AliIoTClient 使用了 MQTT 通讯协议,通讯库为 M2MQTT 。阿里云物联网数据传输有两种数据传输方式,分别是 透传 和 Alink json,两种方式只在属性读/写、事件上报、服务调用这四种 Topic 上有差异, 其它连接通讯、普通 Topic、响应等,无差别。