如何開放 Azure 虛擬機 Ping 功能


前言

文章《使用 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 包傳遞的限制。

ilpip-layout

ASM 中的虛擬機設置 ILPIP 的途徑有兩種。

您可以使用 Powershell 命令,為虛擬機添加 ILPIP。具體步驟請參考:實例級公共 IP(經典)概述

您也可以在 Azure 門戶中,通過頁面中的選項來開啟虛擬機的 ILPIP 功能。大致步驟是在 Azure 門戶中選擇 虛擬機(經典),緊接着選擇要設置 ILPIP 的虛擬機,然后再選擇 IP 地址 選項,最后在實例 IP 地址 功能中點擊 開,並保存。具體位置見下圖。

ilpip-portal

保存並更新需要2~3分鍾。完成后重新點擊 IP 地址 選項,即可在右邊看到新設置的實例 IP 地址。

instance-ip-address

這樣設置雖然簡便,但是虛擬機的所有端口通過 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。

create-vm-with-public-ip-address

如果虛擬機創建時沒有配置公共 IP,那么在虛擬機的概述頁面中,公共 IP 地址會顯示 " - ",如下圖:

no-public-ip-address

此時,我們可以為其添加公共 IP。
在虛擬機視圖中,選擇 網絡接口,並在右側選擇要配置公共 IP 的接口。

network-interface

在網絡接口視圖中,選擇 IP配置,並在右側選擇要求改的 IP 配置。此時在 IP 配置的修改頁面就能看到 公共 IP 地址設置 了。

public-ip-settings

在 公共 IP 地址設置 中,點擊 已啟用,隨后的步驟就與創建虛擬機同時創建公共 IP 一樣了。您可以新建公共 IP,或者選擇已有並且可用的公共 IP。如果是新建,還可以選擇公共 IP 的 分配 方式,動態 或 靜態。

new-public-ip-address

最后點擊 確定,並 保存,配置公共 IP 的任務就在 Azure 的任務隊列中運行了。
任務完成后,就能在 IP 配置中看見獲取到的公共 IP 地址了。

public-ip-settings-2

在虛擬機的概述中,也能看到 公共 IP 地址/DNS 名稱標簽 的值了。

public-ip-settings-3

配置 NSG 規則

NSG 規則同樣可以在創建虛擬機時配置,也可以為已經部署的虛擬機配置。這里用為已部署的虛擬機配置 NSG 規則為例。
在虛擬機網絡接口視圖中,選擇 網絡安全組,並點擊要配置的網絡安全組。

network-security-group

在網絡安全組視圖中,點擊 入站安全規則,並點擊右側的 添加。

inbound-security-rules

此處添加了一個名為 AllowAll,優先級為 4096(最低優先級),源和協議都是 Any,端口范圍是" * ",操作為 允許 的 NSG 規則, 完成后點擊 確定。

inbound-security-rules-2

Azure 后台任務完成后,我們就能看到這條新添加的規則了。

inbound-security-rules-3

此時,我們就可以用 Ping 來測試這台虛擬機了。

test-ping-with-cmd

Note

這樣配置 NSG 雖然開放了 ICMP 協議的通信,但是實際上這台虛擬機所有 TCP、UDP 的端口也都暴露在了公網上,有安全隱患。

更安全的 NSG 配置

更安全的做法是,分別配置兩條針對 TCP 和 UDP 的 DenyAll 的規則,優先級采用 4094 和 4095 ,然后為虛擬網絡和 Azure 負載均衡器分別添加兩條 AllowAll 的規則,優先級采用 4092 和 4093。最后為需要開放的端口配置更高優先級的規則。
這樣既開放了需要的端口和 ICMP 規則,也又避免了其他端口被攻擊的危險。如下圖所示,我開放了 TCP-22 端口和 ICMP,同時允許虛擬網絡和 Azure 負載均衡器與虛擬機的內部通信,其他所有訪問都被 NSG 規則拒絕。如果還要添加新的端口,新建優先級高於 4092 的規則就可以了。

inbound-security-rules-4

其實虛擬網絡和 Azure 負載均衡器的規則已經在默認規則(點擊 默認規則 可以查看)里自動創建了,只不過優先級很低,分別為 65000 和 65001。所以我們需要再為它們創建優先級高於 DenyAllTCP 和 DenyAllUDP 的規則。

inbound-security-rules-5

以上介紹的是為虛擬機添加 NSG 規則。其實虛擬網絡子網也可以添加 NSG 規則,這里不贅述。如果您測試時發現在虛擬機的NSG中配置的規則沒有生效,您可以檢查一下虛擬網絡子網對應的 NSG 規則是否對其有影響。當然,虛擬機內部通常也有防火牆。例如 Windows Server 虛擬機,默認入站的 ICMP 包也是被禁止的,所以在 Ping 測試虛擬機時,也要檢查一下虛擬機內部的防火牆有沒有創建對應的規則。

立即訪問http://market.azure.cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM