Microsoft Azure 虛擬網絡服務

Microsoft Azure 虛擬網絡服務 是 Microsoft Azure 所提供的網絡通訊服務,並運行於 Azure 數據中心內,供應運算資源所需要的網絡通訊能力以及必需的資源,例如 IP 地址。

虛擬網絡服務是一種軟件定義網絡的實作,它完全使用軟件設置自動建置,無須人力介入。

Azure 平台內可使用虛擬網絡的服務有:虛擬機器雲端服務應用服務內的 Web App

網絡組態 編輯

Azure 虛擬網絡利用軟件的方式操作 Azure 數據中心內的網絡建設,它本身就是一個大型的軟件定義網絡解決方案,網絡管理人員可在 Azure 虛擬網絡內自由劃分需要的子網絡與IP地址空間。Azure 虛擬網絡提供了三種基本地址空間供選擇 (都是 IP 地址中已定義的私人網絡範圍):

  • 10.0.0.0
  • 172.16.0.0
  • 192.168.0.0

網絡管理人員可利用 CIDR 的網絡劃分法來定義主地址空間 (例如 10.0.0.0/8 或 10.0.0.0/16),並在地址空間內劃分出子網絡 (例如 10.0.1.0/24, 10.0.2.0/24) 供虛擬機器配給 IP 之用,每個子網絡都有自己的 DHCP 伺服器,當虛擬機器加入到子網絡時,就會自動分派 IP 地址給它,一個子網絡可用的地址為該子網絡劃分出的地址數量-3,Azure會保留每個子網絡的前三個 IP (.1~.3) 供 Azure 服務使用 [1],因此可用地址均是由 .4 開始。

雖然子網絡可以動態分配 IP 地址給虛擬機器,不過網絡管理人員或服務也可以自訂要使用的 IP 地址。

IP 地址 編輯

虛擬網絡中的 IP 地址,視可聯外與否而區分,但是在新的資源管理模式 (Resource Management) 問世後,IP 地址被簡化成內部 IP 與公用 IP 兩種 [2]

公用 IP 編輯

公用 IP (Public IP) 負責對 Internet 的連線,虛擬網絡內的資源若要能連到 Internet,就必須設置一個或多個公用 IP,公用 IP 的配給方式由 Azure 管理,網絡管理人員可利用 Portal 或是 PowerShell 指令等方式向 Azure 索取 IP 地址,不過 IP 地址會視可重覆使用的類型分成動態 (dynamic) 與靜態 (static),動態係指當運算資源上線時才會分派 IP 地址,適合用在一般性的對外運算資源,但由於 IP 不固定,無法適用於常態性的 Internet 服務 (如 DNS 或 SSL),若需要 IP 固定,則要使用靜態公用 IP,它自配發開始就固定 (視為永久上線狀態),直到它被刪除為止。

公用 IP 地址在舊的服務管理模式下,和服務有緊密的結合,因此會有下列幾種類型:

  • 執行個體層級公用 IP (Instance-Level Public IP, ILPIP),繫結在虛擬機器的公用 IP,為動態的公用 IP,。
  • 保留 IP (Reserved IP, VIP),繫結在雲端服務上的 IP,為靜態的公用 IP,但不能繫結在虛擬機器,虛擬機器要使用通訊埠對應才能使用保留 IP 連線 [3]

在資源管理模式下屬於獨立資源,它可以與網絡卡、負載平衡器、網絡閘道器 (Network Gateway) 與應用程式閘道器 (Application Gateway) 四種資源繫結 (Binding),當 IP 不需繫結時可單獨存在,動態模式的公用 IP 在未繫結時不會配發 IP,靜態 IP 則有繫結的資源限制 (它不可以和網絡閘道器或應用程式閘道器繫結)。

內部 IP 編輯

內部 IP (Private IP) 則是虛擬網絡內運算資源之間通訊的基礎,每個組態到虛擬網絡內的運算資源都會配給內部 IP,通常是由 DHCP 依子網絡的地址空間進行配發,但網絡管理人員也可以使用靜態的內部 IP (Static VNet IP),當運算資源註冊了靜態內部 IP 時,除非運算資源被刪除或是解除靜態內部 IP 的繫結,否則不論運算資源啟動與否,該靜態內部 IP 都會存在且固定。靜態內部 IP 可組態在網絡卡、負載平衡器與應用程式閘道器 (Application Gateway)。然而靜態內部 IP 與公用 IP 不同,它不會獨立存在,而是依附於子網絡的設置內,因此各網絡資源都要使用靜態內部 IP 要個別設置無法共用。

DNS 編輯

Azure 虛擬網絡內預設使用由 Azure 提供的名稱解析服務 (Name Resolution Services),當虛擬機器組態到虛擬網絡內時,其 DNS 設置會指向 Azure 的名稱解析服務,負責 Azure 本身相關服務的名稱對應,在早期以雲端服務為主的運算服務,若沒有它,則無法解析如 cloudapp.net 的名稱對應,不過在資源管理員模式匯入後,它不再是必備的條件,只是若公用的 IP 地址設置了 DNS 名稱時,仍然會以 Azure 的 DNS 來處理名稱解析 [4]

網絡管理人員若需要自己的名稱解析方案 (如在虛擬網絡內佈建 Active Directory 網域控制站) 時,仍然可以在虛擬網絡內架設 DNS 伺服器,以供應自訂的名稱解析解決方案。

2015 年時,Azure 推出了自己的網域名稱寄存服務 (DNS Hosting Service),對外使用 Azure DNS 的名稱,但為避免與原有的 Azure 名稱解析服務 (其原本在檔案內的名稱也是 Azure DNS),目前在 Azure 官方技術檔案上看到的 Azure DNS 都是指網域名稱寄存服務,而原本的 Azure DNS 則改為名稱解析服務 (Azure-provided name resolution)。

負載平衡器 編輯

Azure 的網絡服務中提供了兩種類型的負載平衡器,以處理面對大量運算時的工作負載分流機制,一種是 Azure 管理的負載平衡器 (Azure Load Balancer),這也是早期以雲端服務為主的負載平衡器,由 Azure 管理,對外只能使用連接埠區分並用存取控制表來控制存取權限;另一種是內部負載平衡器 (Internal Load Balancer),由網絡管理人員自行管理,供虛擬網絡內的負載分流工作。在資源管理員模式內,不論是何種負載平衡器,都視為一個獨立元件,只差在負載平衡器對外的 IP 地址的設置類型不同而已。

類型 編輯

面對 Internet 的負載平衡器 (Internet-facing Load Balancer) 在早期以雲端服務為主的管理模式下,它統一分派 *.cloudapp.net 的網址,負責 Internet 連入 Azure 服務的流量調節,但它並不決定開放的通訊埠、通訊埠對應 (Port Mapping) 與存取控制,這些設置是由掛到同一個雲端服務下的運算資源來決定 (如虛擬機器),運算資源都有兩種通訊設置,一種是給運算資源本身的,另一種是給負載平衡器的,這導致網絡管理員在設置通訊埠上的困難與不便 (等於同一個 Policy 要設兩邊,而且每一個運算資源都要設)。在資源管理員模式下,負載平衡器上的通訊埠對應被改稱為連入網絡地址轉換 (Inbound NAT),網絡管理人員可以決定負載平衡器的地址連入到哪一個運算資源,同樣的,內部到外部也有一個來源網絡地址轉換 (Source NAT),由負載平衡器自動管理,以加速資料經負載平衡器回傳的速度。此類負載平衡器的來源是公用 IP,且不論是動態或靜態皆可。

內部負載平衡器則是組態在虛擬網絡內,其來源由虛擬網絡內的子網絡決定 (也可設置固定的靜態內部 IP),其通訊埠對應機制與面對 Internet 的負載平衡器相同,但它的運用更多元,除了可輔助面對 Internet 的負載平衡器實作出多層次的應用負載平衡 (如對外是 Web Application 的負載平衡,對內則是 Database 的負載平衡),也可以讓企業的地端網絡透過 VPN 直接存取內部負載平衡器以分散內部的流量。

分流演算法 編輯

Azure 的負載平衡器採用分散式雜湊表處理來源連入的分流工作,依照負載平衡器對來源與(或)目標的參數進行雜湊演算,產生要分派的目標伺服器資訊。

負載平衡器早期只支援 5-tuple 的演算法,分配連入的來源到不同的資源,在 2014 年時,微軟宣佈加入新的演算法[5],以支援如遠端桌面服務 (Remote Desktop Service) 這類需要持久且固定的用戶端-伺服器端機器的對應,因此目前負載平衡器支援三種分流演算法 (Distribution Modes):

  • 2-tuple 演算法 (Source IP Affinity 演算法):使用來源IP與目標IP為參考資料。
  • 3-tuple 演算法 (Source IP Affinity 演算法):使用來源IP、目標IP與通訊協定為參考資料。
  • 5-tuple 演算法 (預設的演算法): 使用來源IP、來源通訊埠、目標IP、目標通訊埠與通訊協定為參考資料。

存取控制 編輯

Azure 虛擬網絡早期並沒有存取控制機制,全部依賴雲端服務內的虛擬機器的存取控制表 (ACL),但設置上相當不便 (有幾台機器就要設幾次),因此在資源管理模式下,Azure 提供了網絡安全群組 (Network Security Group) 供網絡管理人員組態網絡存取控制之用,網絡安全群組也是一個獨立元件。

網絡安全群組支援流入 (inbound) 與流出 (outbound) 的 ACL 機制 (稱為 ACL 規則),ACL 使用五種資料進行雜湊 [6],分別是通訊協定、來源 IP 地址範圍、來源連接埠範圍、目的地 IP 地址範圍和目的連接埠範圍,並且在雜湊對應成功時以其設置的優先權 (Priority) 排序 (數字愈小優先權愈高),最後再評估其存取權限 (Allow/Deny) 決定是否允許存取。網絡管理員可以針對自己的網絡安全需求組態許多個 ACL 規則並組合應用。

ACL 可以套用到特定的地址範圍 (例如一個 IP 或一組 IP),或是由 Azure 定義的地址類型:

  • Internet: 來自 Internet 的 IP。
  • Azure Load Balancer: 來自於 Azure 基礎建設的負載平衡器,它會以 Azure Datacenter 的 IP 範圍為主,亦即套用於所有的 Azure 服務的 IP。
  • Virtual Network: 來自於虛擬網絡的 IP。

網絡安全群組可套用於網絡卡 (只有資源管理模式支援)、虛擬機器 (只有傳統模式支援,且只能使用指令) 以及子網絡組態,負載平衡器則是透過網絡卡來支援網絡安全群組的設置。

VPN 編輯

Azure 虛擬網絡為了與外界互連,因此提供了VPN的連線能力,早期虛擬網絡只支援站對站(Site-to-Site VPN, S2S VPN),且要求使用 IKEv1 的原則模式 (Policy-based Mode),但 2014 年起匯入了 IKEv2 的路由模式 (Route-based Mode) 後,VPN的應用範圍大幅提升,目前可支援站對站、點對站 (Point-To-Site, P2S VPN)、虛擬網絡間對接 (VNet-to-VNet VPN)、多站式對接 (Multi-site VPN) 以及與 Microsoft Azure ExpressRoute 對接的 VPN。

VPN 需要使用網絡閘道器 (Network Gateway)[7],這會決定 VPN 使用的模式是 Policy-based 或是 Route-based,並且依流量不同分成 Basic、Standard 與 Premium 三種計費模式。閘道器要求虛擬網絡內必須組態一個子網絡,名稱固定為 "GatewaySubnet",地址空間限制在 /26~/29 之間,要用多大則視要對接的閘道數有多少決定,因為大型虛擬網絡可能要和不同的網絡對接,而每一個網絡使用的可能不是同一個閘道。

各類 VPN 的支援如下表。

Policy-based Basic Route-based Basic Route-based Standard Route-based Premium
站對站 VPN Policy-based VPN 組態 Route-based VPN 組態 Route-based VPN 組態 Route-based VPN 組態
點對站 VPN 不支援 支援,且可與站對站VPN共存 支援,且可與站對站VPN共存 支援,且可與站對站VPN共存
驗證方法 預先共用金鑰 S2S: 預先共用金鑰
P2S: 以證書為主
S2S: 預先共用金鑰
P2S: 以證書為主
S2S: 預先共用金鑰
P2S: 以證書為主
最大站對站連接數 1 10 10 30
最大點對站連接數 不支援 128 128 128
主動式路由支援 (BGP) 不支援 不支援 不支援 不支援

參考 編輯

  1. ^ Virtual Network FAQ. [2016-03-19]. (原始內容存檔於2016-08-22). 
  2. ^ IP Addresses in Azure. [2016-03-19]. (原始內容存檔於2019-10-18). 
  3. ^ 保留的 IP 概觀. [2016-03-19]. (原始內容存檔於2019-10-18). 
  4. ^ Name Resolution for VMs and Role Instances. [2016-03-19]. (原始內容存檔於2015-09-05). 
  5. ^ Azure Load Balancer new distribution mode. [2016-03-19]. (原始內容存檔於2019-08-04). 
  6. ^ What is a Network Security Group (NSG). [2016-03-19]. (原始內容存檔於2016-10-30). 
  7. ^ About VPN gateways. [2016-03-19]. (原始內容存檔於2016-10-24).