Azure ARM 网络注意事项

魏衡,微软云资深架构师,国内Azure最早的架构师之一

虚拟网络的配置是所有公有云中非常重要的环节。把虚拟网络配置好,对整个系统的管理、维护,以及安全性都非常重要。

本文将介绍Azure在ARM模式下VNet配置中需要特别注意的几点。

一 、Azure的VNet架构

Azure的虚拟网络叫做VNet,VNet内部有多个Subnet和一个Gateway Subnet。

Subnet是VM所在的子网,类似于企业网络中的VLAN;Gateway Subnet是VPN网关和ER网关所在的网段。

只有Internet接入时VNet的架构

对于一般的企业应用,如下的架构就可以满足需求:



在这种拓扑结构中,有多个生产网段:Web、APP和DB,以及一个管理网段Mgmt。这四个网段都可以通过Internet Gateway连接到Internet。

有IPSec VPN接入的架构



在这种架构中,有4个Subnet外,还有一个Gateway Subnet。在这个Subnet中,有两台VPN Gateway(Azure的Gateway总是成对出现的)。这个VPN GW负责和企业内部的VPN GW打通IPSec VPN。此时,企业的内部网络和Azure的VNet就打通了。两边可以通过内部网络互相访问。但由于IPSec VPN是通过Internet连接的。企业重要的应用,IPSec VPN在可靠性和安全性上都满足不了企业的需求。

有ER接入的架构



这种架构有些类似于上种架构,只是连接企业的方式改成了MSTP的Express Route模式。由于MSTP是基于SDH的网络,可靠性和安全性都有了大大的提升。

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和企业间的路由是通过BGP打通的。但这种情况下,目前IPSec VPN只能作为Express Route的备份。Express Route出现故障时,只能手动把流量导到IPSec VPN,还不能实现自动的IPSec VPN自动切换。

二 、VNet中的地址问题

在如上的架构中有一个需要解决的问题,就是企业一般会要求APP、DB等内部网络不能连接Internet。而对生产网段,即Web、APP和DB网段的SSH、RDP等管理协议的端口都不能对外网开放,而应该通过管理网段中的堡垒机或跳板机接入这些网段中的VM。

为满足这些需求,我们先来讨论一下Azure VM的地址,比如对Web Subnet中的两台VM:



每台VM都有三种地址:

在VM内部能够看到的DIP地址

每个VM对应的PIP地址(这个地址就是ASM模式中的Public IP地址)

每个VM对应负载均衡(SLB)的地址VIP(这个地址在ASM模式中是cloud service的地址)

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

PIP地址只能给一台机器使用;而VIP地址可以给一台,也可以给多台使用,实现负载均衡

PIP地址不需要做NAT的规则,PIP地址和DIP地址之间NAT是全开的,从外网可以通过PIP地址对VM进行扫描;VIP地址需要做NAT规则,需要开放的端口才做NAT规则,不需要开放的端口不开放,从外网扫描不到。比如,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协议,所以,如果VM配置了PIP地址,这台VM是可以ping的;而VIP地址没有开放ICMP协议,是不能ping的。

VIP地址除了做负载均衡,还有一个非常重要的属性,可以做Inbound NAT Rule,就是做Port Mapping端口翻译。如下图:



相同的TCP 22端口通过VIP的翻译成22122和22222。通过这个功能,可以把一些Well Known的端口保护起来,特别是管理端口。

具体的配置项在Azure门户中:



根据上面的介绍,不同的网段应该采用不同的策略来配置DIP、VIP和PIP。

WEB网段

这个网段的VM需要对外部提供网络服务。这个网段一般开启VIP地址,实现负载均衡:



这个网段的VM一般不需要开启PIP地址。

APP、DB网段

这个网段,一般不需要和外部网络通讯,只需要和本VNet内的虚拟机通讯,所以这种网段的VM只要配置DIP地址就OK:



这种配置下,只有通过内部网段地址才能访问这些虚拟机。

Mgmt网段

这个网段,需要接受外部网段来访问VM的管理的端口,比如SSH或RDP。这种网段建议采用VIP的Inbound Nat Rule做Port Mapping来实现隐藏管理端口实现对外部提供服务的功能。



当然也可以采用PIP地址来实现对外提供管理功能的端口,但这样的安全隐患比较大,不建议使用。

其他网段

对于一些特殊网段,这些网段内的VM有一些特殊需求,比如:

要求开ICMP进行特殊工作

要求打开大量端口

突破SNAT(Source NAT)对Session数(每秒钟160个)的限制

这时开PIP是非常有效的。另外,对一些测试机器,对安全性等没有太多需求,开PIP是比较方便的。



三、 VNet中的安全功能-NSG

NSG是Network Security Group的缩写,相当于网络的ACL。它支持:

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

支持应用到网段、VM上

针对我们前面提到的4种网段,NSG的设置如下:

WEB网段

允许80端口和VNet内部的22端口访问



APP、DB网段

这两个网段除允许VNet内部的互相访问外,对外的访问都要屏蔽



大家注意最后一条,虽然是Deny any,但前面允许的Inbound Rule的流量是可以出去的。所以NSG的工作类似于防火墙的基于状态的过滤。

Mgmt网段

这个网段需要允许外部访问管理端口,比如TCP 22,其他的不允许进入。出方向可以访问any。



其他网段

由于开启了PIP,相当于VM暴露在公网上,所以,对安全性要求非常高。此时的NSG要精细设置,防止出现安全隐患。



四 、VNet中的VM访问PaaS的问题

目前Azure的PaaS服务大部分都还是基于公网地址的。只有部分PaaS服务是可以运行在VNet内的。比如:Redis、Web APP和HDInsight。其他的服务目前还都需要通过域名的方式访问。

当然还有其他一些应用,比如yum、apt-get、windows update等等各种更新服务,都需要访问外部网络。这时需要对VNet中的Subnet进行特殊的安全设置。目前有两种方式:

1.采用NSG的方式

方法和前文相同,这里就不再详细展开了。只是对Outbound进行精细的控制。明确指明哪些是可以访问的,哪些是不能访问的。

采用UDR(User Define Route)的方式

这种方式是定义路由表的方式,前文中描述的,一些地址是要求能够访问的,其他地址不能访问,可以通过路由的方式实现。以APP层需要访问Azure的MySQL PaaS为例:



APP层的VM需要访问Azure China East的地址,除此之外的公网地址都不能访问。

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

具体Route Table的配置如下:



将此Route Table关联到APP的Subnet就OK了。

图中还画了一个虚线的VIP负载均衡地址。这个地址的主要功能是给Azure的PaaS添加白名单使用。通过这个VIP固定公网IP地址,使得Azure PaaS的白名单容易部署。

两种方式都可以实现对外访问的精细控制。但在一种情况下,Route Table的模式比NSG的模式好:当VM开启了PIP地址,由于NSG不能对ICMP进行控制,这时的表现是:可以Ping通外部网络,但不能访问。而用Route Table进行控制就可以阻止Ping通外网。

总结:在Azure的VNet中,每个VM都有DIP、PIP、VIP三种地址。另外对各个Subnet的安全控制,需要通过NSG、Route Table等功能实现。不同的Subnet有不同的策略和实现方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容