本操作介紹如何將自建SNAT Gateway無縫地遷移到NAT Gateway。

背景信息

如果您已經在VPC中基於ECS搭建了SNAT Gateway,又想將架構切換為基於NAT Gateway實現的SNAT,您可以將原有自建SNAT Gateway拆除,再進行NAT Gateway的建立和配置。但該操作會導致SNAT功能中斷一段時間。

本文提供一種操作方法,利用路由表的一些特性(主要是“最長相符原則”),實現從自建SNAT Gateway到阿里雲NAT Gateway的無縫切換。切換過程中,不會出現SNAT功能不可用,僅在切換的一瞬間發生已有TCP串連的斷開,只需應用進行重連即可。

本操作中作為樣本的VPC和ECS配置如下:
  • VPC中有兩個ECS執行個體:

    • i-9410jxxxx配置了自建的SNAT Gateway。這台ECS上綁定了一個EIP,並且開啟了轉寄服務、配置了iptables規則以實現SNAT轉寄。
    • i-94kjwxxxx為需要SNAT功能來訪問互連網的伺服器。
  • VPC的路由器上,添加了一條自訂路由(目標網段為0.0.0.0/0),將公網訪問請求轉寄給i-9410jxxxx。

操作步骤

  1. 在VPC中添加8條路由條目,對原有路由進行覆蓋。

    路由條目的目標網段分別為1.0.0.0/8、2.0.0.0/7、4.0.0.0/6、8.0.0.0/5、16.0.0.0/4、32.0.0.0/3、64.0.0.0/2、128.0.0.0/1,下一跳均為i-9410jxxxx。

    由於路由表按照最長相符原則,會優先匹配子網路遮罩最長的路由條目;而去往任意IP地址的資料包,都會匹配到這8條中的一條;因此,0.0.0.0/0這條路由實際上已經不再有用了。



  2. 刪除目標網段為0.0.0.0/0的路由條目。
  3. 建立NAT Gateway。

    建立NAT Gateway後,系統會自動添加一條0.0.0.0/0的路由,指向NAT Gateway。



  4. 綁定Elastic IP Address。
    注意 確保EIP的頻寬和自建NAT的頻寬一致。因為只要在NAT Gateway添加了SNAT規則,SNAT規則中的ECS的出公網方向的流量就會受EIP頻寬的限速。
  5. 配置SNAT規則。
  6. 刪除VPC中添加的8條路由路由條目,使路由器把公網訪問請求不再轉寄給自建SNAT,而是轉寄給NAT Gateway。

    至此,已經完成了從自建SNAT Gateway到使用官方NAT Gateway的SNAT功能的全部切換流程。