
原因見上去,阿里雲不支持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互通或者使用雲企業網才可以的,謝謝
都是要錢滴。。。。。。不在乎錢的主,可以忽略這篇文章。
