關於HCS彈性IP路由轉發梳理
在梳理以前,先說明一下,彈性IP是用來讓外網訪問內網的,內網訪問外網是不需要彈性IP的。因此彈性IP一定是一個外部網路,這裡的外部網路可以使網際網路地址,也可以是一個和企業內網相對的地址,總之就是不需要在企業核心交換機上提現的一個網段,因此,彈性IP網段是不需要在HCSD LLD中規劃的,而是當HCS完成後,單獨在Service OM上以外部網路形式建立的,並在運營面分配給對應的VDC的。
想一下,在非雲的環境中,我們是如何實現外部網路訪問內部網路的?一般會在邊界防火牆上做NAT,將網際網路地址的一個埠,對映成一個內網地址業務埠,當防火牆上收到訪問網際網路地址的請求時,使用NAT規則將其轉發給內網的地址,因此在防火牆上一定有一條目的地址是網際網路地址,下一條是內網地址的路由。
在HCS當中,也是一樣的,同樣需要做NAT,不過不再是在防火牆上,而是在網路節點上的軟NAT上,因此在LLD表中,需要關注host_ip_mapping這個引數,它就是用來做軟NAT這個操作的伺服器,我們叫它NAT-Server,一般是要規劃兩個。換句話說,地址轉換這個事情,現在由NAT-Server來執行,彈性IP如果要被轉換成內部地址,第一件事就是要找到這兩個地址,因此需要在核心交換機上有彈性IP網段到host_ip_mapping的路由,並且由於有兩臺NAT-Server,所以會存在兩條等價路由,分別指向兩臺NAT-Server。
NAT-Server收到請求後,根據具體的彈性IP地址,根據NAT規則,將其轉換成對應的ECS、FIP或者ELB的地址,這裡你可能會問,NAT-Server的規則哪裡來的?當我們在頁面上進行繫結的時候,NAT-Server就會形成對應的規則。
這就完了嗎? NO NO NO,因為在核心交換機上,並沒有ECS所獲取的IP地址的網段和NAT-Server所用網段之間的路由,那麼,就算到了NAT-Server,它依然找不到ECS的IP地址,網路還是不通的。(測試方法:將cascaded_external_relay_network對應的網段閘道器手動shut掉,EIP就不通了)
這時候就用到了內大網,內大網可以打通NAT-Server到ECS之間的網路,只是這些處理都是內部進行的,我們看不到,同時內大網也是需要配在核心交換機上的,這樣內大網和NAT-Server就通了,有一點需要注意,內大網和NAT-Server地址通,並不是依賴全部host_ip_mapping,而是使用OUT_fip_vlan網段測試方法:將out_fip_vlan對應的網段閘道器手動shut掉,EIP就不通了),出方向的流量應該是:
EIP------> (host_ip_mapping)NAT-Server(OUT_fip_vlan)--------->內大網---------->ECS
在LLD表中,還有一個引數——vtep_ip_range,該網段並沒有參與本次的資料轉發。
以上是EIP入方向的流量走向。
出方向呢?我們在非雲的環境中,也是在防火牆上做了一次NAT,而且NAT規則很簡單,把所有內網地址轉換成了NAT地址池了的地址,然後加一條預設路由,指向NAT地址池中地址的閘道器就出去了。
在HCS當中,同樣也是一樣的,出的時候就不需要軟NAT了,只要ECS的IP能訪問到彈性IP網段的地址就可以出去了,可以直接通過內大網,然後走核心交換的路由就OK了,因此,在官方的最佳實踐及整合設計指導書中,流量都沒有走軟NAT。
出方向的流量走向沒有經過驗證,只是通過tracert觀察,具體如下:
入方向路由:
[6.5-S5700]tracert 10.0.0.99
traceroute to 10.0.0.99(10.0.0.99), max hops: 30 ,packet length: 40,press CTRL_C to break
1 192.168.2.254 13 ms 2 ms 2 ms
2 192.168.117.254 8 ms 3 ms 4 ms
3 10.0.0.99 1 ms 2 ms 2 ms
其中192.168.117.254為OUT_fip_vlan網段的閘道器,說明其經過了NAT-Server
出方向路由:
其中10.64.0.1為內大網地址閘道器,並沒有進過OUT_fip_vlan,因此可以初步判斷,出的時候並不需要經過NAT-Server,而是直接由內大網轉向了外網。