使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机

Azure 虚拟机使用 Azure 网络进行内部和外部网络通信。 本教程将指导读者部署两个虚拟机,并为这些 VM 配置 Azure 网络。 本教程中的示例假设 VM 将要托管包含数据库后端的 Web 应用程序,但本教程并不介绍如何部署应用程序。 本教程介绍如何执行下列操作:

部署虚拟网络

在虚拟网络中创建子网

将虚拟机附加到子网

管理虚拟机公共 IP 地址

保护传入的 Internet 流量

保护 VM 到 VM 的流量

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行az cloud set -n AzureChinaCloud来改变云环境。如果想切回国际版 Azure,请再次运行az cloud set -n AzureCloud。

如果选择在本地安装并使用 CLI,本教程要求运行 Azure CLI 2.0.4 或更高版本。 运行az --version即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI 2.0

VM 网络概述

Azure 虚拟网络在虚拟机、Internet 与其他 Azure 服务(例如 Azure SQL 数据库)之间实现安全网络连接。 虚拟网络分解为称作“子网”的逻辑段。 子网用于控制网络流,并充当安全边界。 部署 VM 时,该 VM 通常包含一个附加到子网的虚拟网络接口。

部署虚拟网络

本教程将创建包含两个子网的单个虚拟网络。 一个前端子网用于托管 Web 应用程序,一个后端子网用于托管数据库服务器。

在创建虚拟网络之前,请先使用az group create创建一个资源组。 以下示例在“chinaeast”位置创建名为 myRGNetwork 的资源组。

Azure CLI复制

azgroupcreate--namemyRGNetwork--locationchinaeast

创建虚拟网络

使用az network vnet create命令创建虚拟网络。 在本示例中,为名为mvVnet的网络分配了前缀为10.0.0.0/16的地址。 另外,还创建了名为mySubnetFrontEnd、前缀为10.0.1.0/24的子网。 本教程稍后会将前端 VM 连接到此子网。

Azure CLI复制

aznetworkvnetcreate\--resource-groupmyRGNetwork \--namemyVnet \--address-prefix10.0.0.0/16\--subnet-namemySubnetFrontEnd \--subnet-prefix10.0.1.0/24

创建子网

使用az network vnet subnet create命令将新子网添加到虚拟网络。 在本示例中,为名为mySubnetBackEnd的子网分配了前缀为10.0.2.0/24的地址。 此子网用于所有后端服务。

Azure CLI复制

aznetworkvnetsubnetcreate\--resource-groupmyRGNetwork \--vnet-namemyVnet \--namemySubnetBackEnd \--address-prefix10.0.2.0/24

此时,已创建一个网络并将其分段为两个子网,其中一个子网用于前端服务,另一个用于后端服务。 下一部分将创建虚拟机并将其连接到这些子网。

了解公共 IP 地址

使用公共 IP 地址可在 Internet 上访问 Azure 资源。 本教程的此部分将创建一个 VM,用于演示如何使用公共 IP 地址。

分配方法

可以分配动态或静态公共 IP 地址。 默认情况下,将动态分配公共 IP 地址。 解除分配 VM 时,将释放动态 IP 地址。 在执行涉及到 VM 解除分配的任何操作期间,此行为会导致 IP 地址发生更改。

可将分配方法设置为静态,这可确保分配给 VM 的 IP 地址保持不变,即使该 VM 处于解除分配状态。 使用静态分配的 IP 地址时,无法指定 IP 地址本身。 该地址是从可用地址池中分配的。

动态分配

使用az vm create命令创建 VM 时,默认的公共 IP 地址分配方法为动态。 在以下示例中,已创建一个具有动态 IP 地址的 VM。

Azure CLI复制

azvmcreate\--resource-groupmyRGNetwork \--namemyFrontEndVM \--vnet-namemyVnet \--subnetmySubnetFrontEnd \--nsgmyNSGFrontEnd \--public-ip-addressmyFrontEndIP \--imageUbuntuLTS \--generate-ssh-keys

静态分配

使用az vm create命令创建虚拟机时,包含--public-ip-address-allocation static参数可以分配静态公共 IP 地址。 本教程不会演示此操作,但是,下一部分介绍了如何将动态分配的 IP 地址更改为静态分配的地址。

更改分配方法

可以使用az network public-ip update命令更改 IP 地址分配方法。 在本示例中,前端 VM 的 IP 地址分配方法已更改为静态。

首先,请解除分配 VM。

Azure CLI复制

azvmdeallocate--resource-groupmyRGNetwork--namemyFrontEndVM

使用az network public-ip update命令更新分配方法。 在本例中,--allocation-method将设置为static

Azure CLI复制

aznetworkpublic-ipupdate--resource-groupmyRGNetwork--namemyFrontEndIP--allocation-methodstatic

启动 VM。

Azure CLI复制

azvmstart--resource-groupmyRGNetwork--namemyFrontEndVM--no-wait

无公共 IP 地址

通常,不需要通过 Internet 访问 VM。 若要创建一个不带公共 IP 地址的 VM,请使用--public-ip-address ""参数和一组空双引号。 本教程稍后将演示此配置

安全的网络流量

网络安全组 (NSG) 包含一系列安全规则,这些规则可以允许或拒绝流向连接到 Azure 虚拟网络 (VNet) 的资源的网络流量。 NSG 可以关联到子网或单个网络接口。 当 NSG 与网络接口关联时,NSG 只会应用到关联的 VM。 将 NSG 关联到子网时,规则适用于连接到该子网的所有资源。

网络安全组规则

NSG 规则定义要允许或拒绝哪些网络端口上的流量。 这些规则可以包括源和目标 IP 地址范围,以便控制特定系统或子网之间的流量。 NSG 规则还包括优先级(介于 1 和 4096 之间)。 将按优先级顺序来评估规则。 优先级为 100 的规则将在优先级为 200 的规则之前评估。

所有 NSG 都包含一组默认规则。 默认规则无法删除,但由于给它们分配的优先级最低,可以用创建的规则来重写它们。

虚拟网络- 从方向上来说,在虚拟网络中发起和结束的通信可以是入站通信,也可以是出站通信。

Internet- 允许出站通信,但阻止入站通信。

负载均衡器- 允许 Azure 的负载均衡器探测 VM 和角色实例的运行状况。 如果不使用负载均衡集,则可覆盖此规则。

创建网络安全组

可以在创建 VM 时使用az vm create命令创建网络安全组。 执行此操作时,会将 NSG 与 VM 网络接口相关联,并自动创建一个 NSG 规则来允许22端口上来自任何源的流量。 在本教程的前面部分中,已在前端 VM 上自动创建了前端 NSG。 也会为端口 22 自动创建 NSG 规则。

在某些情况下,预先创建 NSG 可能会有帮助,例如,在不应创建默认 SSH 规则时,或者应该将 NSG 附加到子网时。

使用az network nsg create命令创建网络安全组。

Azure CLI复制

aznetworknsgcreate--resource-groupmyRGNetwork--namemyNSGBackEnd

NSG 不会关联到网络接口,而是关联到子网。 在此配置中,附加到子网的任何 VM 将继承 NSG 规则。

使用新 NSG 更新名为mySubnetBackEnd的现有子网。

Azure CLI复制

aznetworkvnetsubnetupdate\--resource-groupmyRGNetwork \--vnet-namemyVnet \--namemySubnetBackEnd \--network-security-groupmyNSGBackEnd

现在,请创建附加到mySubnetBackEnd的虚拟机。 请注意,--nsg参数的值为空双引号。 不需要在 VM 中创建 NSG。 VM 将附加到后端子网,该子网受预先创建的后端 NSG 的保护。 此 NSG 将应用到 VM。 另请注意,此处的--public-ip-address参数的值为空双引号。 此配置将创建一个不带公共 IP 地址的 VM。

Azure CLI复制

azvmcreate\--resource-groupmyRGNetwork \--namemyBackEndVM \--vnet-namemyVnet \--subnetmySubnetBackEnd \--public-ip-address""\--nsg""\--imageUbuntuLTS \--generate-ssh-keys

保护传入的流量

创建前端 VM 时,会创建一个 NSG 规则来允许端口 22 上的传入流量。 此规则允许与 VM 建立 SSH 连接。 对于本示例,也应该允许端口80上的流量。 此配置允许在 VM 上访问某个 Web 应用程序。

使用az network nsg rule create命令为端口80创建规则。

Azure CLI复制

aznetworknsgrulecreate\--resource-groupmyRGNetwork \--nsg-namemyNSGFrontEnd \--namehttp \--accessallow \--protocolTcp \--directionInbound \--priority200\--source-address-prefix"*"\--source-port-range"*"\--destination-address-prefix"*"\--destination-port-range80

现在,只能在端口22和端口80上访问前端 VM。 其他所有传入流量将在网络安全组中被阻止。 可视化 NSG 规则配置可能很有帮助。 使用az network rule list命令返回 NSG 规则配置。

Azure CLI复制

aznetworknsgrulelist--resource-groupmyRGNetwork--nsg-namemyNSGFrontEnd--outputtable

输出:

Azure CLI复制

Access    DestinationAddressPrefix      DestinationPortRange  Direction    Name                Priority  Protocol    ProvisioningState    ResourceGroup    SourceAddressPrefix    SourcePortRange--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Allow    *22Inbound      default-allow-ssh1000Tcp        Succeeded            myRGNetwork      *                      *Allow    *80Inbound      http200Tcp        Succeeded            myRGNetwork      *                      *

保护 VM 到 VM 的流量

也可以在 VM 之间应用网络安全组规则。 对于本示例,前端 VM 需要通过端口223306与后端 VM 端口通信。 此配置允许从前端 VM 建立 SSH 连接,并允许前端 VM 上的应用程序与后端 MySQL 数据库通信。 前端与后端虚拟机之间的其他所有流量应被阻止。

使用az network nsg rule create命令为端口 22 创建规则。 请注意,--source-address-prefix参数指定了值10.0.1.0/24。 此配置确保只允许来自前端子网的流量通过 NSG。

Azure CLI复制

aznetworknsgrulecreate\--resource-groupmyRGNetwork \--nsg-namemyNSGBackEnd \--nameSSH \--accessAllow \--protocolTcp \--directionInbound \--priority100\--source-address-prefix10.0.1.0/24\--source-port-range"*"\--destination-address-prefix"*"\--destination-port-range"22"

现在,请为端口 3306 上的 MySQL 流量添加规则。

Azure CLI复制

aznetworknsgrulecreate\--resource-groupmyRGNetwork \--nsg-namemyNSGBackEnd \--nameMySQL \--accessAllow \--protocolTcp \--directionInbound \--priority200\--source-address-prefix10.0.1.0/24\--source-port-range"*"\--destination-address-prefix"*"\--destination-port-range"3306"

最后,由于 NSG 包含的默认规则允许同一 VNet 中 VM 之间的所有流量,因此,可为后端 NSG 创建一个规则来阻止所有流量。 此处请注意,为--priority指定了值300,此优先级低于 NSG 和 MySQL 规则的优先级。 此配置可确保仍允许 SSH 和 MySQL 流量通过 NSG。

Azure CLI复制

aznetworknsgrulecreate\--resource-groupmyRGNetwork \--nsg-namemyNSGBackEnd \--namedenyAll \--accessDeny \--protocolTcp \--directionInbound \--priority300\--source-address-prefix"*"\--source-port-range"*"\--destination-address-prefix"*"\--destination-port-range"*"

现在,只能通过前端子网在端口22和端口3306上访问后端 VM。 其他所有传入流量将在网络安全组中被阻止。 可视化 NSG 规则配置可能很有帮助。 使用az network rule list命令返回 NSG 规则配置。

Azure CLI复制

aznetworknsgrulelist--resource-groupmyRGNetwork--nsg-namemyNSGBackEnd--outputtable

输出:

Azure CLI复制

Access    DestinationAddressPrefix    DestinationPortRange    Direction    Name      Priority  Protocol    ProvisioningState    ResourceGroup    SourceAddressPrefix    SourcePortRange----------------------------------------------------------------------------------------------------------------------------------------------------------------------Allow    *22Inbound      SSH100Tcp        Succeeded            myRGNetwork10.0.1.0/24*Allow    *3306Inbound      MySQL200Tcp        Succeeded            myRGNetwork10.0.1.0/24*Deny      *                          *                      Inbound      denyAll300Tcp        Succeeded            myRGNetwork      *                      *

后续步骤

本教程介绍了如何创建和保护与虚拟机相关的 Azure 网络。 你已了解如何:

部署虚拟网络

在虚拟网络中创建子网

将虚拟机附加到子网

管理虚拟机公共 IP 地址

保护传入的 Internet 流量

保护 VM 到 VM 的流量

请继续学习下一教程,了解如何使用 Azure 备份保护虚拟机上的数据。

在 Azure 中备份 Linux 虚拟机

立即访问http://market.azure.cn

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

推荐阅读更多精彩内容