VPC網絡規劃最佳實踐(四):跨VPC子網路由控制
當云上業務系統網絡足夠復雜,通過對等連接打通VPC后,需要有靈活的子網跨VPC的流量轉發的能力。
以華為云為例,VPC提供了默認路由表和自定義路由表的能力,其中自定義路由表需要提工單申請配額才能開通。我們來看一下這兩種路由表的能力。
默認路由表
1、在沒有開通自定義路由表的情況下,VPC內創建的子網均自動與默認路由表關聯;也就是說,VPC內無論創建多少子網,均與一個默認路由表關聯。
2、采用對等連接打通VPC后,在本端和對端配置Sub_A、Sub_B、Sub_X、Sub_Y子網路由策略(如圖所示),則:
Sub_A出流量與Sub_X、Sub_Y路由可達
Sub_B出流量與Sub_X、Sub_Y路由可達
Sub_X出流量與Sub_A、Sub_B路由可達
Sub_Y出流量與Sub_A、Sub_B路由可達
圖:默認路由表
自定義路由表
1、使用自定義路由表,可與VPC創建的多個子網關聯,但每個子網只能隸屬于一個路由表。
2、采用對等連接打通VPC后,可在自定義路由表配置本端和對端配置的路由策略,通過自定義路由表能夠實現任意子網之間跨VPC的路由轉發。
3、如下圖所示,可以實現以下子網跨VPC的路由轉發:
Sub_A出流量與Sub_X、Sub_Y路由可達,Sub_X&Sub_Y出流量與Sub_A路由可達,且與其它跨VPC子網路由不可達。
Sub_B出流量與Sub_Z出流量雙向路由可達,且與其它跨VPC子網路由不可達。
圖:自定義路由表
采用默認路由表的方式,無法像自定義路由表那樣實現靈活的子網跨VPC的流量轉發,但我們可以借助ACL來實現子網跨VPC的流量訪問控制。
有VPC_1和VPC_2,通過對等連接打通,并在本端和對端配置Sub_A、Sub_B、Sub_X、Sub_Y子網路由策略后,考慮以下場景需求:
場景一:要求Sub_A? Sub_X , Sub_B? Sub_Y,且Sub_A與Sub_Y不通 , Sub_B與 Sub_X不通
解決方案:采用子網之間ACL訪問控制實現,可在Sub_X的ACL實例上設置放通Sub_A , Sub_Y的ACL實例上設置放通Sub_Y( Sub_X& Sub_Y設置ACL放通規則后,默認拒絕其它的子網的訪問)
圖:場景一
場景二:Sub_A?Sub_X&Sub_Y,Sub_B? Sub_Y ,但Sub_B與Sub_X不通
解決方案:采用子網之間ACL訪問控制實現,為簡化配置規則,只需要在Sub_X的ACL實例上,放通與Sub_A的規則即可。(此時只有Sub_X創建了ACL實例后,默認拒絕所有子網的訪問,也即實現了與Sub_B不通)
圖:場景二
緣由
之所以寫這篇關于子網跨VPC的路由訪問控制的文章,是因為在某省會城市的衛健委的項目中,客戶強烈要求提供自定義路由表的能力,當時屬地資源池節點只有默認路由表的能力,建議采用ACL的方式實現。雖然采用ACL方案也可以滿足需求,但如果業務系統足夠復雜,管理維護上確實不如自定義路由表直觀靈活。