posted

0 Comments

作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與SD-WAN方案的介紹與推廣。

NAT喔…就是NAT啊…好像沒什麼特別好說的(無精打采貌)

嗯沒有啦NAT (Network Address Translation) 功能很重要啦,還是要和大家說明一下。NSX-T內完整支援各種在資料中心內需要使用到的NAT功能,我們把幾個重點條列如下:

NAT可以啟用於Tier-0或是Tier-1 Logical Router上

NAT服務在Tier-0或是Tier-1路由器上面都可以運作。當然如同我們前面的討論,在這兩種路由器上面運作的意義並不一樣:

  • 於Tier-0路由器上面配置的NAT服務代表由NSX管理者配置,於T0 Router之後的資料中心邏輯網路都會藉由此NAT服務進行網路地址置換及隱藏。
  • Tier-1路由器上配置的NAT服務由單一租戶 / 應用或自動化系統配置,僅就此Tier-1路由器後的邏輯網段提供位置轉換功能

Tier-0路由器的NAT配置:僅能夠可以啟用於Tier-0 LR的Uplink Port上

也就是說,在Tier-0對實體網路的Uplink介面上可以啟用NAT,但是在往Tier-1路由器的Linked Port或是這個Tier-0路由器本身接取邏輯交換器的Downlink or Centralized Port,是不能跑NAT的。

下圖內可以看到,於Tier-0路由器上我們可以配置NAT的地方是在往實體路由器的Uplink介面。往T1路由器的Linked-Port是不能配置的。

 

 

在上圖內的環境,舉例來說我們可以做SNAT的配置如下:把內部172.16.114.0/24網段的所有IP要連往外部實體網路時,轉換為一個外部IP為10.114.215.106,如下圖:

 

 

這個配置本身沒有任何問題,但如果只做這個設定,可能會發現在172.16.114.0/24網段的應用系統往外連接時會無法連通。大家可能注意到,這邊SNAT轉換出的IP並非T0路由器與外部實體環境接取的直連網段,因此外部路由器需要知道轉換後的IP: 10.114.215.106是在哪邊(當它看到這個IP時,要知道得往Tier-0路由器丟)。兩個方法:一個是在外部路由器上面對應這個NAT IP寫一筆靜態路由。但更好的方式是如果在T0 Router與外部路由器間有跑BGP,此時T0 Router可以自動地把這個NAT IP透過BGP轉送出去讓外部知道,像下面的配置:

 

 

到目前應該很直接吧。但有可能,NAT的配置希望是由自動化系統在Tier-1路由器上面做,或是我們要做的NAT是在兩組不同的Tier-1環境之間。此時要如何運作呢?

Tier-1路由器的NAT配置:必定啟用於Tier-1 LR往T0的LinkedPort上

當管理者或自動化系統在Tier-1路由器上面啟用NAT服務時,不用指定NAT是運作在哪個介面上,因為只能在一個地方:與上層Tier-0路由器相連的LinkedPort。如下圖:

 

 

前兩條優先權較高的配置內,利用SNAT / DNAT各一筆做10.31.1.1110.114.215.106這兩個內部與外部IP的轉換。而後面兩條規則則定義兩個內部網段對外的SNAT轉換。
同樣地,當我們在T1路由器上面做了這樣的配置,首先必須要讓連接的Tier-0路由器知道這些NAT轉換後外部IP的存在。因此在T1路由器上面,需要於Route Advertisement內宣告要發布NAT Routes:
而當Tier-0路由器知道了這些來自所屬Tier-1路由器的NAT IP,也可以將其透過BGP Route Redistribution往外部的實體路由器送出。通常我們不希望每次T1路由器有任何更動,管理者還得到T0路由器上面做對應的調整;因此在建立Tier-0路由器配置時,通常預設我們就會把Route Redistribution內的Tier-1 NAT功能打開。

那NSX-T內的NAT服務與NSX for vSphere內的NAT服務有什麼差別呢?

有的,其實有以下三點重要的更新,我個人認為在加上這幾個優化的功能後,目前NSX-T的NAT服務完全可說是已經達到了Enterprise等級:

  • 如前面網誌所述,目前Tier-0 / Tier-1路由器的HA切換速度達到秒級,因此即使NSX-T內的Edge構件出現硬體失效等狀況,用戶應用需求的NAT服務不會受到影響
  • NSX-T內的NAT服務有支援No_NAT功能,也就是說,管理者可以更細部地配置比如說用戶預設環境對外要做NAT,但如果要連往某些特殊目的地時,則不要跑NAT
  • NSX-T內的NAT服務有支援Reflexive NAT,進行一個內部網段與外部網段的IP 1:1對應。這邊使用的情境在Tier-0路由器進行Active-Active ECMP的對外模式,因為是Active / Active網路流可能會左去右回,無法提供Stateful的服務。但Reflexive NAT是Stateless的一對一IP轉換,允許在這樣的環境運作。通常在Openstack / 大型Private Cloud配置的環境內,我們可以採用這樣的機制來提供內部虛機同時一個內部Private IP與對應的外部Public IP。

大致上是這樣子。下一篇我們來看NSX-T內的負載平衡服務。