原因见上去,阿里云不支持VPC中转流量,VPC1和VPC2都在国内,VPC3在香港,如果按阿里云的做法,必须付费2次国际隧道的钱,才可以实现三个VPC互通。明显很浪费钱。

所以我们只能在三个VPC,各创建一个ROS,分别建立隧道,并起OSPF,这三个ROS的设置有几个要点:

以下所有的设置,前提三个VPC已经在阿里云上创建好VPC高速通道,同时在各自的路由表已经把对端的IP,发送到到VPC路由器的端口上去(这句话大家好好体会下,在阿里云实施高速通道的时候)

1、R1:到R2的局域网IP,默认路由器必须强制指到自己的默认网关,一般是x.x.x.253,否则后面OSPF无法实施,会一会起一会断;

2、R2:到R1和R3的局域网IP,默认路由器必须强制指到自己的默认网关,一般是x.x.x.253,否则后面OSPF无法实施,会一会起一会断;

3、R3:到R2局域网IP,默认路由器必须强制指到自己的默认网关,一般是x.x.x.253,否则后面OSPF无法实施,会一会起一会断;

4、R1和R2之间起隧道IP,R2和R3之间也起隧道IP,两两互联

5、宣告R1,R2,R3的局域网IP以及隧道IP进OSPF

6、R1,R2,R3都必须设置nat,伪装为 ether1的出口IP,否则无法访问ROS下面的其他ECS服务器。

现在引入一个新的问题,我这个时候在VPC1的R1局域网下,再创建一个ROS,R0,要求使用静态路由表的方式去访问,R1,R2,R3。

所以我们在R0上添加路由表,设定目的地址为R3的局域网IP段172.31.47.225/20,下一跳为R1的IP 10.100.0.146。

这个时候出现问题了!从R0上去ping 172.31.47.225,发现在R1的接口上抓包,死活看不到icmp的包过来!!!

说明了一个问题!!!

虽然在阿里云上,是同一个IP段,在同一个安全组,但是你的数据包,发送的目的地址172.31.47.225并不属于VPC1也不属于VPC2,那么阿里云认为你传递的不是阿里云ECS范围的IP包,阿里云会检查你数据包的目的地址,而直接丢弃!!!!

所以,你在R1的接口,根本抓不到任何icmp的包文过来。而是被阿里云直接丢弃了,或者是直接发给默认网关了(因为tracert出来全是*,我也不知道阿里云把数据发到哪去了),根本不会按照你的ROS的静态路由表的下一跳走!!!

所以,唯一的解决方案就是:

1、在R0和R1之间建立一个IP隧道,让发往172.31.47.225的包,下一跳发送到R1的隧道IP去;

2、一定要做nat伪装,所有的数据,必须伪装成R0的隧道IP去访问,OSPF的网络!否则,数据回包无法回到R0来!

3、在R1的OSPF宣告一定要把新加的隧道IP加进去,否则R2,R3的数据回不到R0来,想想为什么?因为没有R0和R1之间的隧道路由!

我提了工单,阿里云的工单回复,其实还有花大钱解决的方案:

工程师 69361 号 : 您好,根据您的场景,这边联系后端核实了,是不支持vpc传递互通的,您还需要在账号1 杭州和账号2的香港做跨账号vpc互通或者使用云企业网才可以的,谢谢

都是要钱滴。。。。。。不在乎钱的主,可以忽略这篇文章。

阿里云线上ROS静态路由转发,有大坑。的更多相关文章

  1. 关于 tp5.0 阿里云 oss 上传文件操作

    tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题  应该是移动后的路劲(相对于服 ...

  2. 在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

    在阿里云服务器上配置CentOS+Nginx+Python+Flask环境 项目运行环境 阿里云(单核CPU, 1G内存, Ubuntu 14.04 x64 带宽1Mbps), 具体购买和ssh连接阿 ...

  3. 阿里云主机上安装jdk

    今天继续安装jdk到阿里云服务上,大家要看一下阿里云是32位还是64位的,如果是32位下载32位的包,如果是64位的下载64位的包 我的就是64位的,开始我还不知道是怎么区分32/64位的,原来X64 ...

  4. 阿里云vps上mysql挂掉的解决办法

    阿里云vps上mysql挂掉的解决办法 4条回复 用阿里云的vps用作blog服务器,系统很稳定,已经100多天一直运行正常,大概从上个月开始发现blog的mysql会有时挂掉,会收到短信通知.之前没 ...

  5. 阿里云服务器上安装mysql的心路历程(博友们进来看看哦)

    在阿里云花了100买了一台云服务器,配置如下: CPU: 1核 内存: 512MB 数据盘: 0G 带宽: 1Mbps 阿里云服务器安装mysql搞得我想吐血,搞了一个多星期,现在才搞好,而且,还有许 ...

  6. 阿里云容器服务--配置自定义路由服务应对DDOS攻击

    阿里云容器服务--配置自定义路由服务应对DDOS攻击 摘要: 容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDO ...

  7. 关于阿里云ESC上go语言项目编译6l: running gcc failed: Cannot allocate memory

    (1)前段时间将自己的阿里云服务器上的系统由centos 6.5换为了ubuntu 14,其他的硬件配置都没有发生改变,将服务器上的数据恢复并且重新安装了golang的编译环境后,发现使用go bui ...

  8. 在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问--解决办法

    在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问的原因是阿里云平台为了安全设置了安全组策略,必须我们授权的端口,其他计算机才能通过http访问 解决办法:(这里以阿里轻量应用服务器为 ...

  9. jdbc连接阿里云服务器上的MySQL数据库 及 数据库IP限制

    问题1:Jdbc 如何连接阿里云服务器上的MySQL数据库? 解决: 上截图: 其中IP是阿里云服务器的公网IP地址. 问题2:   刚开始接手开发的时候,使用Navicat连接阿里云服务器上的数据后 ...

随机推荐

  1. pycharm远程调试配置

    目录: 安装pycharm 配置pycharm远程调试 使用测试 一.安装pycharm(略) 二.配置pycharm远程调试 1.菜单--->Tools--->Deployment--- ...

  2. mysql之commit,transaction事物控制

    简单来说,transaction就是用来恢复为以前的数据. 举个例子,我想把今天输入到数据库里的数据在晚上的时候全部删除,那么我们就可以在今天早上的时候开始transaction事物,令autocom ...

  3. 有用的proc文件系统文件

    1. /proc/iomem I/O内存映射 2. /proc/meminfo 系统内存信息

  4. Android 工具视频学习笔记_WDS

    1. 由于Android源码过于庞大,SourceInsight会经常卡死,不适合了.适合的是Android Studio, 非常好用.使用手册上有介绍如何安装. 编译安卓的过程说明手册中也有. 3. ...

  5. Distributed Phoenix Chat with PubSub PG2 adapter

    转自:https://www.poeticoding.com/distributed-phoenix-chat-with-pubsub-pg2-adapter/ In this article we’ ...

  6. curl常用传参方式

    1.传header参数curl --header 'Token:40d7c342c110414888cc2a0e1284c636' "127.0.0.1/api/user/baseInfo& ...

  7. Go语言编程 (许式伟 等 著)

    第1章 初识Go语言 1.1 语言简史 1.2 语言特性 1.2.1 自动垃圾回收 1.2.2 更丰富的内置类型 1.2.3 函数多返回值 1.2.4 错误处理 1.2.5 匿名函数和闭包 1.2.6 ...

  8. notify和notifyAll的区别

    转自:http://www.importnew.com/16453.html 如果某些线程在等待某些条件触发,那当那些条件为真时,你可以用 notify 和 notifyAll 来通知那些等待中的线程 ...

  9. Revit 开发将自己的窗口设置为Revit窗口

    在Revit开发中如果使用modeless的对话框,经常容易被Revit窗体覆盖,但是如果将窗体设为Topmost的话,当Revit失去焦点后,它又会遮住其他程序的界面,比如将Revit最小化后,To ...

  10. 艰苦的编译boost python (失败)

    1.下载 boost_1_67_0 2.在目录下执行 bootstrap 3.将python36添加到path环境变量 4.执行 b2 --with-python,将会声场如下dll 2018/04/ ...