练习 - 使用网络观察程序监视和诊断工具排查网络问题
Azure 网络观察程序有助于你诊断使虚拟机 (VM) 无法通信的配置错误。
假设你有两个无法通信的 VM。 你需要诊断问题并尽快解决问题。 你想要使用网络观察程序来解决问题。
在本单元中,你将排查不同子网中两个 VM 之间的连接问题。
重要说明
需要自己的 Azure 订阅才能完成本练习,并且可能会产生费用。 如果还没有 Azure 订阅,请在开始前创建一个免费帐户。
配置虚拟网络和 VM
让我们从创建基础结构开始。 我们还将有意创建配置错误:
- 在浏览器中,打开 Azure Cloud Shell 会话。 
- 打开要在其中创建资源的目录。 
- 选择“Cloud Shell”菜单栏左上角的“Bash”。 
- 列出订阅的受支持区域。 - az account list-locations
- 创建资源组并将其分配给变量名称 RG,方法是运行以下代码,将 替换为资源组的名称,将 - <resource group name>替换为先前输出的区域名称- <name>。- az group create --name <resource group name> --location <name> RG=<resource group name>
- 通过运行以下命令,创建名为 MyVNet1 的虚拟网络,其中包含名为 FrontendSubnet 的子网。 - az network vnet create \ --resource-group $RG \ --name MyVNet1 \ --address-prefixes 10.10.0.0/16 \ --subnet-name FrontendSubnet \ --subnet-prefixes 10.10.1.0/24
- 通过运行以下命令创建名为 BackendSubnet 的另一个子网。 - az network vnet subnet create \ --address-prefixes 10.10.2.0/24 \ --name BackendSubnet \ --resource-group $RG \ --vnet-name MyVNet1
- 通过运行以下命令在 FrontendSubnet 中部署 VM,并将 替换为所选的复杂密码 - <password>。- az vm create \ --resource-group $RG \ --name FrontendVM \ --vnet-name MyVNet1 \ --subnet FrontendSubnet \ --image Win2019Datacenter \ --admin-username azureuser \ --admin-password <password>- 注意 - 如果收到消息 partofthepassword:找不到事件的错误,请使用允许的字符创建新密码。 
- 通过运行以下代码在 FrontendVM 上安装 Internet Information Services (IIS)。 - az vm extension set \ --publisher Microsoft.Compute \ --name CustomScriptExtension \ --vm-name FrontendVM \ --resource-group $RG \ --settings '{"commandToExecute":"powershell.exe Install-WindowsFeature -Name Web-Server"}' \ --no-wait
- 运行以下命令在 BackendSubnet 中部署虚拟机,并将 替换为所选的复杂密码 - <password>。- az vm create \ --resource-group $RG \ --name BackendVM \ --vnet-name MyVNet1 \ --subnet BackendSubnet \ --image Win2019Datacenter \ --admin-username azureuser \ --admin-password <password>
- 运行以下命令,在 BackendVM 上安装 IIS。 - az vm extension set \ --publisher Microsoft.Compute \ --name CustomScriptExtension \ --vm-name BackendVM \ --resource-group $RG \ --settings '{"commandToExecute":"powershell.exe Install-WindowsFeature -Name Web-Server"}' \ --no-wait
- 输入以下命令创建网络安全组 (NSG) MyNsg。 - az network nsg create \ --name MyNsg \ --resource-group $RG
- 创建阻止 VM 之间通信的配置错误。 - az network nsg rule create \ --resource-group $RG \ --name MyNSGRule \ --nsg-name MyNsg \ --priority 4096 \ --source-address-prefixes '*' \ --source-port-ranges '*' \ --destination-address-prefixes '*' \ --destination-port-ranges 80 443 3389 \ --access Deny \ --protocol TCP \ --direction Inbound \ --description "Deny from specific IP address ranges on 80, 443 and 3389."
- 运行以下命令将网络安全组与子网关联。 - az network vnet subnet update \ --resource-group $RG \ --name BackendSubnet \ --vnet-name MyVNet1 \ --network-security-group MyNsg
为区域启用网络观察程序
现在,使用 Azure CLI 在与该基础结构相同的区域中设置网络观察程序。
- 通过运行以下命令启用网络观察程序,并将 <location>替换为在此会话开始时创建资源组时使用的 Azure 区域。
az network watcher configure \
    --enabled true \
    --resource-group $RG \
    --locations <location>
使用网络观察程序显示拓扑
现在,可以使用 Azure 门户中的网络观察程序来排查不同子网中两个 VM 之间的连接问题。 同事报告了两个 VM 之间的 HTTP/HTTPS 连接问题。 首先,调查网络拓扑。
- 登录到 Azure 门户。 
- 在全局搜索中,输入“网络观察程序”并选择该服务。 此时会显示网络观察程序“概述”窗格,其中列出了活动的网络观察程序。 
- 在“网络观察程序”菜单的“监视”下,选择“拓扑”。 此时,“网络观察程序 | 拓扑”窗格显示。 
- 在下拉列表字段中,选择要用于本练习的订阅和资源组。 MyVNet1 的网络拓扑显示前端和后端 VM 接口。 此虚拟网络是在本练习开始时创建的。 
使用连接监视器从后端到前端运行测试
拓扑似乎是正确的。 若要获取详细信息,请在连接监视器中设置一些测试。 首先,创建一个从后端 VM 到前端 VM 的测试。
- 在“网络观察程序”菜单的“监视”下,选择“连接监视器”。 此时将显示“网络观察程序 | 连接监视器”的“概述”窗格。 
- 在命令栏中,选择“创建”。 此时会显示“创建连接监视器”页。 
- 在“基本信息”选项卡上,为每个设置输入以下值。 - 设置 - 值 - 连接监视器名称 - 从后到前的 HTTP 测试 - 订阅 - 从下拉列表中选择你的订阅 - 区域 - 选择你部署了资源的 Azure 区域 - 工作区配置 - 勾选“使用由连接监视器创建的工作区(默认)” 
- 选择“下一步: 测试组”。 此时,“添加测试组详细信息”窗格显示。 
- 对于测试组名称,请输入 Back-to-front-HTTP-test-group。 
- 在“源”框中,选择“添加源”。 此时,“添加源”窗格显示。 
- 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“BackendSubnet”。   
- 选择“添加终结点”。 在将 BackendSubnet 标识为源的“源”框中。 选择此终结点,选择“编辑”,将其重命名为“BackendSubnet”,然后选择“保存”。   
- 在“测试配置”框中,选择“添加测试配置”。 此时,“添加测试配置”窗格显示。 
- 在“新配置”选项卡上,为每个设置输入以下值。 - 设置 - 值 - 测试配置名称 - 前后端-HTTP-测试-配置 - 协议 - HTTP - 目标端口 - 80 - 测试频率 - 每 30 秒 - 使其他设置保留默认值 
- 选择“添加测试配置”将此测试配置添加到测试组。 此时会再次显示“添加测试配置详细信息”面板,并标识了你的测试配置。 
- 在“目标”框中,选择“添加目标”。 此时,“添加目标”窗格显示。 
- 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“FrontendSubnet”。 
- 选择“添加终结点”。 此时会再次显示“添加测试组详细信息”,并将 FrontendSubnet 标识为目标。 
- 在窗格底部,选择“添加测试组”。 此时会显示“创建连接监视器”窗格。 
- 请注意,在“测试组”选项卡上,以源作为后端,目标作为前端,列出了你的测试组。 
- 依次选择“审阅 + 创建”和“创建”。 
如果测试未显示在“连接监视器”窗格中,请选择“刷新”按钮。 Back-to-front-HTTP-test 的结果应会显示,由于 NSG 与后端子网关联,因此流量从后端 VM 流到前端 VM 且不出现任何问题。
使用连接监视器从前端到后端运行测试
反方向运行相同的测试。 让我们在连接监视器中设置另一个测试。 首先,创建一个从前端 VM 到后端 VM 的测试。
- 在“连接监视器”窗格中,选择“创建”。 
- 在“基本信息”选项卡上,为每个设置输入以下值。 - 设置 - 值 - 连接监视器名称 - 从前到后 HTTP 测试 - 订阅 - 从下拉列表中选择你的订阅 - 区域 - 选择你部署了资源的 Azure 区域 
- 选择“下一步: 测试组”。 此时,“添加测试组详细信息”窗格显示。 
- 在“测试组名称”中,输入 Front-to-back-HTTP-test-group,然后在“源”框中选择“添加源”。 此时,“添加源”窗格显示。 
- 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“FrontSubnet”。 
- 选择“添加终结点”。 在将 BackendSubnet 标识为源的“源”框中。 选择此终结点,选择“编辑”,将其重命名为“FrontendSubnet”,然后选择“保存”。 
- 在“测试配置”框中,选择“添加测试配置”。 此时,“添加测试配置”窗格显示。 
- 在“新配置”选项卡上,为每个设置输入以下值。 - 设置 - 值 - 测试配置名称 - 前到后HTTP测试配置 - 协议 - HTTP - 目标端口 - 80 - 测试频率 - 每 30 秒 - 接受其他设置的默认值 
- 选择“添加测试配置”。 此时会再次显示“添加测试配置详细信息”面板,并标识了你的测试配置。 
- 在“目标”框中,选择“添加目标”。 此时,“添加目标”窗格显示。 
- 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“BackendSubnet”。 
- 选择“添加终结点”。 此时,“添加测试组详细信息”窗格再次显示,并将 BackendSubnet 标识为目标。 
- 在窗格底部,选择“添加测试组”。 此时,“创建连接监视器”窗格再次显示。 
- 在“测试组”选项卡上,注意你的 Front-to-back-HTTP-test-group 现在已列出。 
- 依次选择“审阅 + 创建”和“创建”。 
如果测试未显示在“连接监视器”窗格中,请选择“刷新”按钮。 Front-to-back-HTTP-test 的结果应会显示,由于 NSG 与后端子网关联,因此没有流量从前端 VM 流向后端 VM。
使用 IP 流验证测试连接
使用 IP 流验证工具获取详细信息。
- 选择“网络观察程序”,然后在资源菜单的“网络诊断工具”下,选择“IP 流验证”。 
- 通过为每个设置输入以下值来配置测试,然后选择“检查”。 - 设置 - 值 - 订阅 - 选择订阅 - 资源组 - 选择你的资源组 - 虚拟机 - BackendVM - 网络接口 - BackendVMVMNic - 协议 - TCP - 方向 - 入站 - 本地 IP 地址 - 10.10.2.4 - 本地端口 - 3389 - 远程 IP - 10.10.1.4 - 远程端口 - 3389   
- 结果表明访问因 NSG 和安全规则而被拒绝。 
在本练习中,你已成功使用网络观察程序工具来发现两个子网之间的连接问题。 由于 NSG 规则,允许以一种方式通信,但阻止了另一种方式的通信。
