Azure ARM 網(wǎng)絡注意事項

魏衡,微軟云資深架構師,國內(nèi)Azure最早的架構師之一。

虛擬網(wǎng)絡的配置是所有公有云中非常重要的環(huán)節(jié)。把虛擬網(wǎng)絡配置好,對整個系統(tǒng)的管理、維護,以及安全性都非常重要。

本文將介紹Azure在ARM模式下VNet配置中需要特別注意的幾點。

一 、Azure的VNet架構

Azure的虛擬網(wǎng)絡叫做VNet,VNet內(nèi)部有多個Subnet和一個Gateway Subnet。

Subnet是VM所在的子網(wǎng),類似于企業(yè)網(wǎng)絡中的VLAN;Gateway Subnet是VPN網(wǎng)關和ER網(wǎng)關所在的網(wǎng)段。

只有Internet接入時VNet的架構

對于一般的企業(yè)應用,如下的架構就可以滿足需求:



在這種拓撲結構中,有多個生產(chǎn)網(wǎng)段:Web、APP和DB,以及一個管理網(wǎng)段Mgmt。這四個網(wǎng)段都可以通過Internet Gateway連接到Internet。

有IPSec VPN接入的架構



在這種架構中,有4個Subnet外,還有一個Gateway Subnet。在這個Subnet中,有兩臺VPN Gateway(Azure的Gateway總是成對出現(xiàn)的)。這個VPN GW負責和企業(yè)內(nèi)部的VPN GW打通IPSec VPN。此時,企業(yè)的內(nèi)部網(wǎng)絡和Azure的VNet就打通了。兩邊可以通過內(nèi)部網(wǎng)絡互相訪問。但由于IPSec VPN是通過Internet連接的。企業(yè)重要的應用,IPSec VPN在可靠性和安全性上都滿足不了企業(yè)的需求。

有ER接入的架構



這種架構有些類似于上種架構,只是連接企業(yè)的方式改成了MSTP的Express Route模式。由于MSTP是基于SDH的網(wǎng)絡,可靠性和安全性都有了大大的提升。

IPSec VPN作為ER的備份



Azure的Express Route是兩根鏈路接入到Azure的,所以ER是有99.9%的SLA。但有些客戶還是希望有IPSec VPN作為ER的備份。如上的拓撲結構就是IPSec VPN作為Express Route的備份的架構。這種架構下,VNet的Subnet Gateway中有兩組Gateway,一組是VPN GW,另外一組是ER Gateway。此時需要VPN GW和ER GW都是Standard以上類型,且VPN GW要求支持BGP。也就是說,VNet和企業(yè)間的路由是通過BGP打通的。但這種情況下,目前IPSec VPN只能作為Express Route的備份。Express Route出現(xiàn)故障時,只能手動把流量導到IPSec VPN,還不能實現(xiàn)自動的IPSec VPN自動切換。

二 、VNet中的地址問題

在如上的架構中有一個需要解決的問題,就是企業(yè)一般會要求APP、DB等內(nèi)部網(wǎng)絡不能連接Internet。而對生產(chǎn)網(wǎng)段,即Web、APP和DB網(wǎng)段的SSH、RDP等管理協(xié)議的端口都不能對外網(wǎng)開放,而應該通過管理網(wǎng)段中的堡壘機或跳板機接入這些網(wǎng)段中的VM。

為滿足這些需求,我們先來討論一下Azure VM的地址,比如對Web Subnet中的兩臺VM:



每臺VM都有三種地址:

在VM內(nèi)部能夠看到的DIP地址

每個VM對應的PIP地址(這個地址就是ASM模式中的Public IP地址)

每個VM對應負載均衡(SLB)的地址VIP(這個地址在ASM模式中是cloud service的地址)

DIP地址是VM在NAT之前的地址,PIP和VIP都是VM在NAT之后的地址。但這兩個地址有如下一些不同:

PIP地址只能給一臺機器使用;而VIP地址可以給一臺,也可以給多臺使用,實現(xiàn)負載均衡

PIP地址不需要做NAT的規(guī)則,PIP地址和DIP地址之間NAT是全開的,從外網(wǎng)可以通過PIP地址對VM進行掃描;VIP地址需要做NAT規(guī)則,需要開放的端口才做NAT規(guī)則,不需要開放的端口不開放,從外網(wǎng)掃描不到。比如,VM1開放了SSH的TCP 22端口和WEB的TCP 80兩個端口,如果VM1配置了PIP地址和VIP地址,同時VIP地址開放了HTTP的負載均衡。此時,通過PIP地址可以看到VM1開放的TCP 22和80端口,而通過VIP地址只能看到VM1開放的TCP 80端口

PIP地址在做了與DIP地址1:1的NAT外,還開放了ICMP協(xié)議,所以,如果VM配置了PIP地址,這臺VM是可以ping的;而VIP地址沒有開放ICMP協(xié)議,是不能ping的。

VIP地址除了做負載均衡,還有一個非常重要的屬性,可以做Inbound NAT Rule,就是做Port Mapping端口翻譯。如下圖:



相同的TCP 22端口通過VIP的翻譯成22122和22222。通過這個功能,可以把一些Well Known的端口保護起來,特別是管理端口。

具體的配置項在Azure門戶中:



根據(jù)上面的介紹,不同的網(wǎng)段應該采用不同的策略來配置DIP、VIP和PIP。

WEB網(wǎng)段

這個網(wǎng)段的VM需要對外部提供網(wǎng)絡服務。這個網(wǎng)段一般開啟VIP地址,實現(xiàn)負載均衡:



這個網(wǎng)段的VM一般不需要開啟PIP地址。

APP、DB網(wǎng)段

這個網(wǎng)段,一般不需要和外部網(wǎng)絡通訊,只需要和本VNet內(nèi)的虛擬機通訊,所以這種網(wǎng)段的VM只要配置DIP地址就OK:



這種配置下,只有通過內(nèi)部網(wǎng)段地址才能訪問這些虛擬機。

Mgmt網(wǎng)段

這個網(wǎng)段,需要接受外部網(wǎng)段來訪問VM的管理的端口,比如SSH或RDP。這種網(wǎng)段建議采用VIP的Inbound Nat Rule做Port Mapping來實現(xiàn)隱藏管理端口實現(xiàn)對外部提供服務的功能。



當然也可以采用PIP地址來實現(xiàn)對外提供管理功能的端口,但這樣的安全隱患比較大,不建議使用。

其他網(wǎng)段

對于一些特殊網(wǎng)段,這些網(wǎng)段內(nèi)的VM有一些特殊需求,比如:

要求開ICMP進行特殊工作

要求打開大量端口

突破SNAT(Source NAT)對Session數(shù)(每秒鐘160個)的限制

這時開PIP是非常有效的。另外,對一些測試機器,對安全性等沒有太多需求,開PIP是比較方便的。



三、 VNet中的安全功能-NSG

NSG是Network Security Group的縮寫,相當于網(wǎng)絡的ACL。它支持:

支持入向、出向的安全控制

支持應用到網(wǎng)段、VM上

針對我們前面提到的4種網(wǎng)段,NSG的設置如下:

WEB網(wǎng)段

允許80端口和VNet內(nèi)部的22端口訪問



APP、DB網(wǎng)段

這兩個網(wǎng)段除允許VNet內(nèi)部的互相訪問外,對外的訪問都要屏蔽



大家注意最后一條,雖然是Deny any,但前面允許的Inbound Rule的流量是可以出去的。所以NSG的工作類似于防火墻的基于狀態(tài)的過濾。

Mgmt網(wǎng)段

這個網(wǎng)段需要允許外部訪問管理端口,比如TCP 22,其他的不允許進入。出方向可以訪問any。



其他網(wǎng)段

由于開啟了PIP,相當于VM暴露在公網(wǎng)上,所以,對安全性要求非常高。此時的NSG要精細設置,防止出現(xiàn)安全隱患。



四 、VNet中的VM訪問PaaS的問題

目前Azure的PaaS服務大部分都還是基于公網(wǎng)地址的。只有部分PaaS服務是可以運行在VNet內(nèi)的。比如:Redis、Web APP和HDInsight。其他的服務目前還都需要通過域名的方式訪問。

當然還有其他一些應用,比如yum、apt-get、windows update等等各種更新服務,都需要訪問外部網(wǎng)絡。這時需要對VNet中的Subnet進行特殊的安全設置。目前有兩種方式:

1.采用NSG的方式

方法和前文相同,這里就不再詳細展開了。只是對Outbound進行精細的控制。明確指明哪些是可以訪問的,哪些是不能訪問的。

采用UDR(User Define Route)的方式

這種方式是定義路由表的方式,前文中描述的,一些地址是要求能夠訪問的,其他地址不能訪問,可以通過路由的方式實現(xiàn)。以APP層需要訪問Azure的MySQL PaaS為例:



APP層的VM需要訪問Azure China East的地址,除此之外的公網(wǎng)地址都不能訪問。

增加Route Table的配置,Azure China East的所有地址都加入Internet路由表,默認路由指向None。

具體Route Table的配置如下:



將此Route Table關聯(lián)到APP的Subnet就OK了。

圖中還畫了一個虛線的VIP負載均衡地址。這個地址的主要功能是給Azure的PaaS添加白名單使用。通過這個VIP固定公網(wǎng)IP地址,使得Azure PaaS的白名單容易部署。

兩種方式都可以實現(xiàn)對外訪問的精細控制。但在一種情況下,Route Table的模式比NSG的模式好:當VM開啟了PIP地址,由于NSG不能對ICMP進行控制,這時的表現(xiàn)是:可以Ping通外部網(wǎng)絡,但不能訪問。而用Route Table進行控制就可以阻止Ping通外網(wǎng)。

總結:在Azure的VNet中,每個VM都有DIP、PIP、VIP三種地址。另外對各個Subnet的安全控制,需要通過NSG、Route Table等功能實現(xiàn)。不同的Subnet有不同的策略和實現(xiàn)方式。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容