原因见上去,阿里云不支持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. Spring事务失效的原因

    http://blog.csdn.net/paincupid/article/details/51822599 Spring事务失效的原因 5种大的原因 如使用mysql且引擎是MyISAM,则事务会 ...

  2. CH3B16 魔法珠

    题意 3B16 魔法珠 0x3B「数学知识」练习 描述 Freda和rainbow是超自然之界学校(Preternatural Kingdom University,简称PKU)魔法学院的学生.为了展 ...

  3. root用户登录mysql后新建用户提示1045错误

    执行以下命令查看root权限 show grants for 'root'@'localhost'; 如果没有显示with grant option,说明是root没有拥有新建授权用户的权限(为什么会 ...

  4. software download

    Develop Sourceinsight 3.50.0066 http://pan.baidu.com 这个版本支持输入文件名的一部分来查找文件,而不像3.50.0029必须输入完整的文件名 VFP ...

  5. elasticsearch技术解析与实战(一) 入门和索引

    GET _cat/nodes GET _cat/health GET _cat/shards GET http://10.37.84.124:9200/secisland?pretty { " ...

  6. SUPERSOCKET 客户端

    SUPERSOCKET.CLIENTENGINE 简单使用 2015年5月27日 HYJIACAN 发表回复 阅读 11,105 次 江大没有给ClientEngine的Demo,一直没有找到其它的. ...

  7. ubuntu 16.04卸载不必要的默认安装软件

    两个办法,一个在ubuntu软件里一个一个删,明显的windows下做法. 还有一个通过终端来删除.ctrl+alt+t打开终端. 1.卸载libreoffices(要删一起删了,然后去装office ...

  8. C# string 转 bool

    bool _b = Convert.ToBoolean("False"); "_b => false" // // 摘要: //     将逻辑值的指定字 ...

  9. 并发运算lib

    最近对类似于erlang或者golang的并发运算很感兴趣.以下是看到的相关资料. libgo c++,技术:协程,多线程.这是俺发现的用法最漂亮的c++库,用法参考golang CAF 全称c++ ...

  10. [转]MySQL中乐观锁、悲观锁(共享锁、排他锁)简介

    InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB. MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高 ...