外网访问原理分析

本节我们会将上节创建的 ext_net 连接到 router,并验证内外网的连通性。

更重要的,我们会分析隐藏在表象之下的原理。

将外网连接到 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。

查看控制节点的网络结构,外网 bridge 上已经连接了 router 的 tap 设备 tapb8b32a88-03。

在 router 的 namespace 中查看 tapb8b32a88-03 的 veth pair 设备。

该 veth pair 命名为 qg-b8b32a88-03,上面配置了 IP 10.10.10.2。

router 的每个 interface 在 namespace 中都有对应的 veth。 如果 veth 用于连接租户网络,命名格式为 qr-xxx,比如 qr-d568ba1a-74 和 qr-e17162c5-00。 如果 veth 用于连接外部网络,命名格式为 qg-xxx,比如 qg-b8b32a88-03。

查看 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-b8b32a88-03 发出的时候,会做一次 Source NAT,即将包的源地址修改为 router 的接口地址 10.10.10.2,这样就能够保证目的端能够将应答的包发回给 router,然后再转发回源端 instance。

可以通过 iptables 命令查看 SNAT 的规则。

当 cirros-vm3(172.16.101.3) Ping 10.10.10.1 时,可用通过 tcpdump 分别观察 router 两个 interface 的 icmp 数据包来验证 SNAT 的行为。

vlan101 interface qr-e17162c5-00 的 tcpdump 输出:

ext_net interface qg-b8b32a88-03 的 tcpdump 输出:

SNAT 让 instance 能够直接访问外网,但外网还不能直接访问 instance。
因为 instance 没有外网 IP。 这里 “直接访问 instance” 是指通信连接由外网发起,例如从外网 SSH cirros-vm3。

这个问题可以通过 floating IP 解决,下一节我们将讨论浮动 IP。

 

blob.png

转载于:https://www.cnblogs.com/zhaohongtian/p/6811588.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

URAL1519 Formula 1 —— 插头DP

题目链接:https://vjudge.net/problem/URAL-1519 1519. Formula 1 Time limit: 1.0 secondMemory limit: 64 MBBackground Regardless of the fact, that Vologda could not get rights to hold the Winter Olympic games of 20**, it is well-known, that the city…

电子透雾与光学透雾监控摄像机区别

当你在疯狂购物时也目前已知的透雾算法大致可以分为两大类:一种是非模型的图像增强方法,通过增强图像的对比度,满足主观视觉的要求来达到清晰化的目的;另一种是基于模型的图像复原方法,它考查图像退化的原因&#xff0…

sshfs的挂载与卸载

在CentOS中 sshfs的使用依赖EPEL(只安装sshfs不会出错,但是却无法使用) 挂载 安装EPEL rpm -i https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 如果这个链接失效,可访问官网http://fedoraproject.org/wiki/EPEL 安装sshfs…

2018年中国视频监控行业发展空间巨大 AI技术赋能发展乃是未来必然趋势

https://bg.qianzhan.com/report/detail/459/190131-c2610ca0.html2019-2024年中国视频监控设备行业市场需求预测与投资战略规划分析报告2019-2024年中国安防行业市场前瞻与投资战略规划分析报告2019-2024年中国智能安防行业市场前瞻与投资战略规划分析报告2019-2024年中国智能…

FTP下载文件

今天公司有需求,需要从远程FTP服务器上下载文件到本地代码。然后看了一下,顺便做个记录 什么是FTP呢? 详细百度百科 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用…

tomcat启动报错The JRE could not be found.Edit the server and change the JRE location

解决: 在Windows->Preferences->Server->Runtime Environments 选择Tomcat->Edit,在jre中选择相应的jdk版本,完事。转载于:https://www.cnblogs.com/Alwaysbecoding/p/10172752.html

tortoisegit推送ssh-key需要输入用户信息

修改了测试代码,却在提交代码时候又跳出来请输入用户名和密码, 后来发现,github push有两种方式,ssh方式和https方式。而https方式是不同的,具体来说,就是url信息的不同,实际的验证机制也是不同的。当建立了…

2018年中国视频监控行业现状及行业发展趋势分析预测【图】

一、中国视频监控行业现状 中国 2013-2018 年模拟标清视频监控摄像机和模拟高清视频监控摄像机的复合增长率分别为-15.2%、 29.6%。 模拟标清视频监控摄像机需求量不断下降, 预计 2018 年同比下降 13%, 将下降到 0.38 亿台。 模拟高清视频监控摄像机需求…

周总结02

周一周二周三周四周五周六 所花时间 {包括上课} 16:50- 17:50 8:00-9:50 15:00-16:00 15:00- 16:30 0 10:10- 12:00 8&#xff…

C#中控制线程池的执行顺序

在使用线程池时,当用线程池执行多个任务时,由于执行的任务时间过长,会导制两个任务互相执行,如果两个任务具有一定的操作顺序,可能会导制不同的操作结果,这时,就要将线程池按顺序操作。下面先给…

MySQL触发器 trigger学习

触发器:一类特殊的事物。可监视某种数据操作,并触发相关操作(insert/update/delete)。表中的某些数据改变,希望同一时候能够引起其他相关数据改变的需求。 作用:变化自己主动完毕某些语句查询,加…

如何分析企业未来发展趋势——以海康威视为例

财务分析主要基于历史数据,但投资还需要看到企业未来的发展。 在前一篇的财务分析的文章中已经提到过:财务分析只是手段,最终还是要从中发现企业的竞争优势以及行业的发展趋势,并以此为基础,分析企业未来的竞争优势及…

java与C++的区别

java与C的区别 来源 https://www.cnblogs.com/Allen-rg/p/6692043.html “作为一名C程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C衍生出来的。”  然而,C和Java之…

js调试笔记

js调试方法很多,今天总结一下最实用的的断点方法: debugger断点 这个很常见,但许多人不知道其实可以添加条件判断 if(something){debugger;} source断点 这个最为常见,不做过多解释,具体说一下几个重要图标: 恢复脚本执行至下一个…

JAVA Spring 事物 ( 已转账为例 ) 基于 AOP 注解

<一> 配置为文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springf…

全球视频监控设备市场规模分析

权威电子行业研究机构IHS Research发布《中国CCTV与视频监控设备市场研究报告》显示&#xff0c;2014年全球视频监控设备市场143亿美元&#xff0c;同比增长14.2%。欧洲、美洲、亚洲都增长低于预期;中国增长高于预期&#xff0c;市场总量达57.1亿美元;美国市场虽然出货量在增加…

vue 新窗口打开外链接

背景&#xff1a;vue-router 打开外链接 如果使用 a 标签&#xff0c;会默认加上根路由&#xff0c;导致跳转失效。那么如何让 a 标签点击跳转到新窗口&#xff1f;解决方法&#xff1a;html 代码<a class"a-style" click"linkDownload(https://www.baidu.co…

EasyWeChat微信开放平台第三方平台接入

目录实例化微信服务器推送事件预授权获取预授权 Code获取预授权 URLAPI 列表使用授权码换取公众号的接口调用凭据和授权信息获取授权方的公众号帐号基本信息获取授权方的选项设置信息设置授权方的选项信息调用授权方 API实例化<?phpuse EasyWeChat\Foundation\Application;…

201521145048《Java程序设计》第11周学习总结

1. 本周学习总结 1.1 以你喜欢的方式&#xff08;思维导图或其他&#xff09;归纳总结多线程相关内容。 2. 书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问&#xff0c;还有什…

修改chrome记住密码后自动填充表单的背景

2019独角兽企业重金招聘Python工程师标准>>> input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {background-color: rgb(250, 255, 189); /* #FAFFBD; */background-image: none;color: rgb(0, 0, 0); } 转载于:https://my.oschina.net…