前言

文章《使用 PsPing & PaPing 进行 TCP 端口连通性测试》中提到,ICMP 协议的数据包无法通过 Azure 的防火墙和负载均衡器,所以不能直接使用 Ping 来测试 Azure 中的虚拟机和服务的连通性。实际上,我们仍然能够通过一些特殊设置,使 ICMP 协议的数据包能够进出 Azure 中的虚拟机,来完成 Ping 测试。针对 Azure 云服务管理器 (ASM) 和 Azure 资源管理器 (ARM) 中的部署,设置方法有所不同,下文将分别进行介绍。

ASM 虚拟机的设置方法

ASM 中的虚拟机开放 Ping 功能的方法就是为其添加 ILPIP(Instance-Level Public IP,实例级公共 IP)。开启 ILPIP 后,访问虚拟机的流量不经过云服务和负载均衡器。虚拟机所有的端口都是直接暴露在公网上的,因此也就解开了对 ICMP 包传递的限制。

ASM 中的虚拟机设置 ILPIP 的途径有两种。

您可以使用 Powershell 命令,为虚拟机添加 ILPIP。具体步骤请参考:实例级公共 IP(经典)概述

您也可以在 Azure 门户中,通过页面中的选项来开启虚拟机的 ILPIP 功能。大致步骤是在 Azure 门户中选择 虚拟机(经典),紧接着选择要设置 ILPIP 的虚拟机,然后再选择 IP 地址 选项,最后在实例 IP 地址 功能中点击 开,并保存。具体位置见下图。

保存并更新需要2~3分钟。完成后重新点击 IP 地址 选项,即可在右边看到新设置的实例 IP 地址。

这样设置虽然简便,但是虚拟机的所有端口通过 ILPIP 直接面向公网,所以有一定的安全隐患。您需要在虚拟机中配置相应的防火墙规则,来增强对虚拟机的安全防护。您也可以参考后文对 NSG 的相关介绍来配置安全规则。

在默认情况下,每个订阅能够设置 5 个 ILPIP。如果需要更多,您可以与支持人员联系,请求增加 ILPIP 的配额。当然,我们更推荐部署 ARM 模式下的虚拟机。ARM 模式下每个订阅的每个区域的能获得的公共 IP 数量更多。详见:Azure 订阅和服务限制、配额和约束, 网络限制 - Azure Resource Manager。

ARM 虚拟机的设置方法

ARM 中的虚拟机开放 Ping 功能有两个配置步骤。其一是虚拟机配有公共 IP。如果只是从 Azure 中的虚拟机向外 Ping,那么只配置这一步即可。如果需要从外部网络来 Ping Azure 中的虚拟机,则需要配置虚拟机对应的 NSG 规则,使其允许 ICMP 协议包传输。

配置公共 IP

公共 IP 可以在 Azure 门户中创建虚拟机时,同时创建。如果创建虚拟机时没有配置公共 IP,您也可以在虚拟机创建好以后,再为其添加。 在创建虚拟机的第 3 步,配置可选功能中,可以新建公共 IP,或者选择已有并且可用的公共 IP。

如果虚拟机创建时没有配置公共 IP,那么在虚拟机的概述页面中,公共 IP 地址会显示 " - ",如下图:

此时,我们可以为其添加公共 IP。
在虚拟机视图中,选择 网络接口,并在右侧选择要配置公共 IP 的接口。

在网络接口视图中,选择 IP配置,并在右侧选择要求改的 IP 配置。此时在 IP 配置的修改页面就能看到 公共 IP 地址设置 了。

在 公共 IP 地址设置 中,点击 已启用,随后的步骤就与创建虚拟机同时创建公共 IP 一样了。您可以新建公共 IP,或者选择已有并且可用的公共 IP。如果是新建,还可以选择公共 IP 的 分配 方式,动态 或 静态。

最后点击 确定,并 保存,配置公共 IP 的任务就在 Azure 的任务队列中运行了。
任务完成后,就能在 IP 配置中看见获取到的公共 IP 地址了。

在虚拟机的概述中,也能看到 公共 IP 地址/DNS 名称标签 的值了。

配置 NSG 规则

NSG 规则同样可以在创建虚拟机时配置,也可以为已经部署的虚拟机配置。这里用为已部署的虚拟机配置 NSG 规则为例。
在虚拟机网络接口视图中,选择 网络安全组,并点击要配置的网络安全组。

在网络安全组视图中,点击 入站安全规则,并点击右侧的 添加。

此处添加了一个名为 AllowAll,优先级为 4096(最低优先级),源和协议都是 Any,端口范围是" * ",操作为 允许 的 NSG 规则, 完成后点击 确定。

Azure 后台任务完成后,我们就能看到这条新添加的规则了。

此时,我们就可以用 Ping 来测试这台虚拟机了。

Note

这样配置 NSG 虽然开放了 ICMP 协议的通信,但是实际上这台虚拟机所有 TCP、UDP 的端口也都暴露在了公网上,有安全隐患。

更安全的 NSG 配置

更安全的做法是,分别配置两条针对 TCP 和 UDP 的 DenyAll 的规则,优先级采用 4094 和 4095 ,然后为虚拟网络和 Azure 负载均衡器分别添加两条 AllowAll 的规则,优先级采用 4092 和 4093。最后为需要开放的端口配置更高优先级的规则。
这样既开放了需要的端口和 ICMP 规则,也又避免了其他端口被攻击的危险。如下图所示,我开放了 TCP-22 端口和 ICMP,同时允许虚拟网络和 Azure 负载均衡器与虚拟机的内部通信,其他所有访问都被 NSG 规则拒绝。如果还要添加新的端口,新建优先级高于 4092 的规则就可以了。

其实虚拟网络和 Azure 负载均衡器的规则已经在默认规则(点击 默认规则 可以查看)里自动创建了,只不过优先级很低,分别为 65000 和 65001。所以我们需要再为它们创建优先级高于 DenyAllTCP 和 DenyAllUDP 的规则。

以上介绍的是为虚拟机添加 NSG 规则。其实虚拟网络子网也可以添加 NSG 规则,这里不赘述。如果您测试时发现在虚拟机的NSG中配置的规则没有生效,您可以检查一下虚拟网络子网对应的 NSG 规则是否对其有影响。当然,虚拟机内部通常也有防火墙。例如 Windows Server 虚拟机,默认入站的 ICMP 包也是被禁止的,所以在 Ping 测试虚拟机时,也要检查一下虚拟机内部的防火墙有没有创建对应的规则。

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

如何开放 Azure 虚拟机 Ping 功能的更多相关文章

  1. 【虚拟机-网络IP】如何开放 Azure 虚拟机 Ping 功能

    前言 文章<使用 PsPing & PaPing 进行 TCP 端口连通性测试>中提到,ICMP 协议的数据包无法通过 Azure 的防火墙和负载均衡器,所以不能直接使用 Ping ...

  2. 利用Azure backup备份和恢复Azure虚拟机(1)

    中国区Azure最近发布了关于使用Azure Backup来备份VM服务,于3月1日正式上线,该功能对于需要对关键工作负载进行备份的用户来讲,极大的降低了操作复杂度.以前我们所使用Powershell ...

  3. 在 Windows Azure 虚拟机中使用 Microsoft SQL Server 安全功能

    编辑人员注释:本文章由 SQL Server 团队高级项目经理 Sung Hsueh 撰写. SQL Server 的最新用法之一是利用 Microsoft 的 Windows Azure 基础结构服 ...

  4. Python 加持,给你更有趣的 Azure 虚拟机开关重启方法!

    在程序员的世界里,有关编程语言孰优孰劣的争论从来就没有消停过,不管你更粉哪种语言,毫无疑问,每种语言都有自己擅长的领域,而一些语言因为上手简单.扩展性强.功能强大等因素,往往会比较多地出现在我们面前, ...

  5. Windows Azure 虚拟机备份

    如果我们要在Windows Azure的虚拟机上进行一些“重要且高危”的操作,我们通常会想到使用快照或者备份功能.但是在Windows Azure上是没有虚拟机快照功能的,尽管我们可以对虚拟机的磁盘文 ...

  6. 使用Windows Azure PowerShell远程管理Windows Azure虚拟机

    对于Windows Azure,如果你还在使用windowsazure.com门户来管理虚拟机,那就显得不怎么高上大了.Windows Azure PowerShell 是一个功能强大的脚本环境,可用 ...

  7. Windows Azure 不能ping通的解决方案

    Windows Azure 不能ping通如何解决? 为了避免Ping Flood攻击,Windows Azure不开放对外ICMP通讯协定,所以使用ping命令我们是无法ping通的.在微软资料中心 ...

  8. Azure Site Recovery 通过一键式流程将虚拟机故障转移至 Azure虚拟机

    Ruturaj Dhekane 云 + Enterprise 项目经理  现在,AzureSite Recovery可以通过其"灾难恢复至 Azure"功能保护您的工作负荷,并 ...

  9. Azure 虚拟机常见问题-上

    在 Azure 虚拟机上可以运行什么? 所有订户均可在 Azure 虚拟机上运行服务器软件.此外,MSDN 订户还可以访问由 Azure 提供的特定 Windows 客户端映像. 就服务器软件来说,你 ...

随机推荐

  1. bzoj 1189 二分+最大流

    题目传送门 思路: 先预处理出每个人到每扇门的时间,用门作为起点进行bfs处理. 然后二分时间,假设时间为x,将每扇门拆成1到x,x个时间点,表示这扇门有几个时间点是可以出去的.对于一扇门,每个时间点 ...

  2. WPF 一 概述

    创建一个项目吧 菜单>文件>新建>项目 看一看目录结构 WPF应用程序”会在“引用”里面自动添加下图中所示的 PresentationCore.PresentationFramewo ...

  3. 补档 Codeblocks下的文件标题栏(标签)显示方法

    可能在以下链接也能看到这篇文档 我知道很多人都不知道这个到底叫啥,还不如直接一点: 文件标题栏 就是如下的效果. 解决办法: 在左上角第三个view下,打开后取消Hide editor tabs 选项 ...

  4. c# 实现无符号右移

    /// <summary> /// 无符号右移, 相当于java里的 value>>>pos /// </summary> /// <param nam ...

  5. [转] Java @interface 自定义注解

    [From] http://blog.csdn.net/afterlife_qiye/article/details/53748973 1. 注解的好处 注解可以替代配置文件完成对某些功能的描述,减少 ...

  6. [转] Nook Glowlight Plus入门指南(Root及相关软件设置)

    [From] http://www.dakang.info/nook-glowlight-plus-root/ 本文仅仅是对大神 xukong及众多热心Hper帖子的一个汇总,稍作个人补充,方便查询, ...

  7. Spring中如何向 Bean注入系统属性或环境变量

    [转自] http://unmi.cc/spring-injection-system-properties-env/ 在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的, ...

  8. 关于抓取js加载出来的内容抓取

    一.抓取页面 url=https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.ht ...

  9. <?>与<T>的区别

    ?是通配符(占位符),可以表示任意一个,T只是一种替代,只能表示其中一个 假设有A,B,C三个类 <?>可以是A,B,C任意一个,每一个<?>之间没有关联 <T>如 ...

  10. IOS下去掉input submit圆角和

    在iOS系统下input submit会有圆角,如果添加有背景色,背景色出错,在安卓系统是没有这些问题,可以在input样式加上这段样式 input{ -webkit-appearance: none ...