前言

文章《使用 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

【虚拟机-网络IP】如何开放 Azure 虚拟机 Ping 功能的更多相关文章

  1. 如何开放 Azure 虚拟机 Ping 功能

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

  2. 【虚拟机-网络IP】使用 Powershell 设置 VNET 中的静态 IP

    本文包含以下内容 对已有虚机设置静态 Internal IP 取消对对已有虚机设置的静态 Internal IP 创建静态 Internal IP的虚机 使用中的注意点 请注意:以下操作需要下载最新版 ...

  3. 【虚拟机-网络IP】虚拟机配置静态 IP 以后无法连接的解决办法

    问题描述 将虚拟机内部 IP 地址从动态获取改成静态 IP 以后,远程连接失败. 问题分析 Azure 虚拟机的内部 IP 默认为动态分配, 由 DHCP 服务自动分配, 在虚拟机的生命周期内, 该 ...

  4. Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)

    <Windows Azure Platform 系列文章目录> 前提要求: 1.假设笔者捕获一个Azure虚拟机模板,命名为leistorage 关于Azure虚拟机模板,请参考下图: 2 ...

  5. 【虚拟机-网络IP】保留正在使用的 VIP

    本文包含以下内容 适用场景 操作步骤 保留IP的费用 适用场景 我们希望云服务有一个固定的 IP,即使虚拟机以 deallocated 的方式关闭. 用户忘记先保留 VIP 而直接完成了部署. 希望不 ...

  6. 虚拟机网络NAT模式配置静态IP

    虚拟机网络连接方式 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口. 虚拟机常见有三种网络连接方式 ...

  7. 【VMware Workstation】虚拟机静态IP NAT连接外部网络(局域网以及广域网)

    使用虚拟机时,为了减少后期的网络维护工作,配置网络IP时使用了NAT连接.静态IP的方式.这里把我的配置步骤顺序罗列出来. 一.配置虚拟网络编辑器 1.在VMware 的编辑菜单选择虚拟网络编辑器 2 ...

  8. Windows Azure Virtual Machine (31) 迁移Azure虚拟机

    <Windows Azure Platform 系列文章目录> 为什么要写这篇Blog? 之前遇到过很多客户提问: (1)我之前创建的虚拟机,没有加入虚拟网络.现在需要重新加入虚拟机网络, ...

  9. VMware虚拟机网络设置

    背景介绍 在用 VMware workstation 安装好虚拟机后,需要给虚拟机配置网络,配置网络的方法有桥接.NAT.    采用桥接的方法需要占据物理机网段的ip地址,可能会与物理机同一网段的其 ...

随机推荐

  1. session和cookie(2)

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  2. 2、R-reshape2-melt

    1.melt:         短数据转长数据 (1).融合的数据为数组.表以及矩阵,melt的表达式为: melt(data, varnames = names(dimnames(data)), . ...

  3. 《Java多线程编程核心技术》读后感(十六)

    线程组 线程组的作用是,可以批量的管理线程或线程组对象,有效地对线程或线程组对象进行组织 线程对象关联线程组:1级关联 package Seven; public class ThreadA exte ...

  4. JQuery中查找父元素,子元素,追加元素,插入元素和删除元素 及其他常用方法

    Jquery之所以强大,和其在获取对象时使用与css选择器兼容的语法有很大关系.而且它还兼容了CSS3的选择器,而且多出了不少. 所以jQuery的选择器也就变得很多很强大.就最基本的有以下四个: $ ...

  5. 用VisualSVN Server创建版本库,以及TortoiseSVN的使用

    介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化. SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. ...

  6. C++类型起别名的方式

    C++给类型起别名的方式: #include <iostream> using namespace std; #define DString std::string //! 不建议使用!t ...

  7. MySQL8.0.16新特性:The Communication Protocol In Group Replication

    MGR优雅升级到MySQL8.0.16 传统的升级手段之一,5.7 MGR集群与8.0 MGR集群进行数据传输,程序切换新集群后测试是否正常. 如果不正常,要么将新集群的新增数据同步回旧集群,要么就舍 ...

  8. Git 时光穿梭鸡 管理修改

    Git跟踪并管理的是修改,而非文件. 什么是修改? 比如你新增了一行,这就是一个修改, 删除了一行,也是一个修改, 更改了某些字符,也是一个修改, 删了一些又加了一些,也是一个修改, 甚至创建一个新文 ...

  9. ue4 官网IK流程记录

    基本流程 角色蓝图构造 角色蓝图 角色蓝图中新建的函数IK Foot Trace AnimGraph事件 这里注意下Make Vector时把z方向的偏移量设置到了X上 猜测原因是效应器的x方向跟世界 ...

  10. Hyperledger Fabric java chaincode 中文乱码问题

    开发java chaincode过程中遇到一个中文乱码的问题.都是官方的demo,请求的sdk是用java写的,部署的chaincode有两种选择(不考虑node),一种go语言写的chaincode ...