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