练习 - 使用网络观察程序监视和诊断工具排查网络问题

已完成

Azure 网络观察程序有助于你诊断使虚拟机 (VM) 无法通信的配置错误。

假设你有两个无法通信的 VM。 你需要诊断问题并尽快解决问题。 你想要使用网络观察程序来解决问题。

此处,对不同子网中两个 VM 之间的连接性进行故障排除。

重要

需要自己的 Azure 订阅才能运行此练习,这可能会产生费用。 如果还没有 Azure 订阅,请在开始前创建一个免费帐户

配置虚拟网络和 VM

让我们从创建基础结构开始。 我们还将有意创建一个配置错误:

  1. 在浏览器中,打开 Azure Cloud Shell 会话。

  2. 打开要在其中创建资源的目录。

  3. 选择“Cloud Shell”菜单栏左上角的“Bash”。

  4. 列出订阅的受支持区域。

    az account list-locations
    
  5. 创建资源组并将其分配给变量名称 RG,方法是运行以下代码,将 <resource group name> 替换为资源组的名称,将 <name> 替换为先前输出的区域名称。

    az group create --name <resource group name> --location <name>
    RG=<resource group name>
    
  6. 通过运行以下命令,创建名为 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
    
  7. 通过运行以下命令创建名为 BackendSubnet 的另一个子网。

    az network vnet subnet create \
    --address-prefixes 10.10.2.0/24 \
    --name BackendSubnet \
    --resource-group $RG \
    --vnet-name MyVNet1
    
  8. 通过运行以下命令在 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: event not found”,请使用允许的字符创建新密码。

  9. 运行以下代码,在 FrontendVM 上安装 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
    
  10. 运行以下命令在 BackendSubnet 中部署虚拟机,并将 <password> 替换为所选的复杂密码。

    az vm create \
        --resource-group $RG \
        --name BackendVM \
        --vnet-name MyVNet1 \
        --subnet BackendSubnet \
        --image Win2019Datacenter \
        --admin-username azureuser \
        --admin-password <password>
    
  11. 运行以下命令,在 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
    
  12. 输入以下命令创建网络安全组 (NSG) MyNsg。

    az network nsg create \
        --name MyNsg \
        --resource-group $RG
    
  13. 创建阻止 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."
    
  14. 运行以下命令将网络安全组与子网关联。

    az network vnet subnet update \
        --resource-group $RG \
        --name BackendSubnet \
        --vnet-name MyVNet1 \
        --network-security-group MyNsg
    

为区域启用网络观察程序

现在,使用 Azure CLI 在与该基础结构相同的区域中设置网络观察程序。

  1. 通过运行以下命令启用网络观察程序,并将 <location> 替换为在此会话开始时创建资源组时使用的 Azure 区域。
az network watcher configure \
    --enabled true \
    --resource-group $RG \
    --locations <location>

使用网络观察程序显示拓扑

现在,可以使用 Azure 门户中的网络观察程序来排查不同子网中两个 VM 之间的连接问题。 你的同事报告了两个 VM 之间存在 HTTP/HTTPS 连接问题。 首先,调查网络拓扑。

  1. 登录 Azure 门户

  2. 在全局搜索中,输入“网络观察程序”并选择该服务。 此时会显示网络观察程序“概述”窗格,其中列出了活动的网络观察程序。

  3. 在“网络观察程序”菜单的“监视”下,选择“拓扑”。 此时,“网络观察程序 | 拓扑”窗格显示。

  4. 在下拉列表字段中,选择要用于本练习的订阅和资源组。 MyVNet1 的网络拓扑显示前端和后端 VM 接口。 这是你在本练习开头创建的虚拟网络。

    Screenshot showing the exercise network topology.

使用连接监视器从后端到前端运行测试

拓扑似乎是正确的。 若要获取详细信息,请在连接监视器中设置一些测试。 首先,创建一个从后端 VM 到前端 VM 的测试。

  1. 在“网络观察程序”菜单的“监视”下,选择“连接监视器”。 此时将显示“网络观察程序 | 连接监视器”的“概述”窗格。

  2. 在命令栏中,选择“创建”。 此时会显示“创建连接监视器”页。

  3. 在“基本信息”选项卡上,为每个设置输入以下值。

    设置
    连接监视器名称 从后到前的 HTTP 测试
    订阅 从下拉列表中选择你的订阅
    区域 选择你部署了资源的 Azure 区域
    工作区配置 勾选“使用由连接监视器创建的工作区(默认)”
  4. 选择“下一页:测试组”。 此时,“添加测试组详细信息”窗格显示。

  5. 对于测试组名称,请输入 Back-to-front-HTTP-test-group。

  6. 在“源”框中,选择“添加源”。 此时,“添加源”窗格显示。

  7. 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“BackendSubnet”。

    Screenshot that shows enabling of Network Watcher backend subnet.

  8. 选择“添加终结点”。 在将 BackendSubnet 标识为源的“源”框中。 选择此终结点,选择“编辑”,将其重命名为“BackendSubnet”,然后选择“保存”。

    Screenshot that shows editing endpoint name.

  9. 在“测试配置”框中,选择“添加测试配置”。 此时,“添加测试配置”窗格显示。

  10. 在“新配置”选项卡上,为每个设置输入以下值。

    设置
    测试配置名称 Back-to-front-HTTP-test-configuration
    协议 HTTP
    目标端口 80
    测试频率 每 30 秒
    使其他设置保留默认值
  11. 选择“添加测试配置”将此测试配置添加到测试组。 此时会再次显示“添加测试配置详细信息”面板,并标识了你的测试配置。

  12. 在“目标”框中,选择“添加目标”。 此时,“添加目标”窗格显示。

  13. 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“FrontendSubnet”。

  14. 选择“添加终结点”。 此时会再次显示“添加测试组详细信息”,并将 FrontendSubnet 标识为目标。

  15. 在窗格底部,选择“添加测试组”。 此时会显示“创建连接监视器”窗格。

  16. 请注意,在“测试组”选项卡上,以源作为后端,目标作为前端,列出了你的测试组。

  17. 依次选择“审阅 + 创建”和“创建”。

如果测试未显示在“连接监视器”窗格中,请选择“刷新”按钮。 Back-to-front-HTTP-test 的结果应会显示,由于 NSG 与后端子网关联,因此流量从后端 VM 流到前端 VM 且不出现任何问题。

使用连接监视器从前端到后端运行测试

反方向运行相同的测试。 让我们在连接监视器中设置另一个测试。 首先,创建一个从前端 VM 到后端 VM 的测试。

  1. 在“连接监视器”窗格中,选择“创建”。

  2. 在“基本信息”选项卡上,为每个设置输入以下值。

    设置
    连接监视器名称 从前到后 HTTP 测试
    订阅 从下拉列表中选择你的订阅
    区域 选择你部署了资源的 Azure 区域
  3. 选择“下一页:测试组”。 此时,“添加测试组详细信息”窗格显示。

  4. 在“测试组名称”中,输入 Front-to-back-HTTP-test-group,然后在“源”框中选择“添加源”。 此时,“添加源”窗格显示。

  5. 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“FrontSubnet”。

  6. 选择“添加终结点”。 在将 BackendSubnet 标识为源的“源”框中。 选择此终结点,选择“编辑”,将其重命名为“FrontendSubnet”,然后选择“保存”。

  7. 在“测试配置”框中,选择“添加测试配置”。 此时,“添加测试配置”窗格显示。

  8. 在“新配置”选项卡上,为每个设置输入以下值。

    设置
    测试配置名称 Front-to-back-HTTP-test-configuration
    协议 HTTP
    目标端口 80
    测试频率 每 30 秒
    接受其他设置的默认值
  9. 选择“添加测试配置”。 此时会再次显示“添加测试配置详细信息”面板,并标识了你的测试配置。

  10. 在“目标”框中,选择“添加目标”。 此时,“添加目标”窗格显示。

  11. 在“Azure 终结点”选项卡上,选择“子网”,确保已选择你的订阅,然后在列表中选择“BackendSubnet”。

  12. 选择“添加终结点”。 此时,“添加测试组详细信息”窗格再次显示,并将 BackendSubnet 标识为目标。

  13. 在窗格底部,选择“添加测试组”。 此时,“创建连接监视器”窗格再次显示。

  14. 在“测试组”选项卡上,注意你的 Front-to-back-HTTP-test-group 现在已列出。

  15. 依次选择“审阅 + 创建”和“创建”。

如果测试未显示在“连接监视器”窗格中,请选择“刷新”按钮。 Front-to-back-HTTP-test 的结果应会显示,由于 NSG 与后端子网关联,因此没有流量从前端 VM 流向后端 VM。

使用 IP 流验证测试连接

使用 IP 流验证工具获取详细信息。

  1. 选择“网络观察程序”,然后在资源菜单的“网络诊断工具”下,选择“IP 流验证”。

  2. 通过为每个设置输入以下值来配置测试,然后选择“检查”。

    设置
    订阅 选择订阅
    资源组 选择你的资源组
    虚拟机 BackendVM
    网络接口 BackendVMVMNic
    协议 TCP
    方向 入站
    本地 IP 地址 10.10.2.4
    本地端口 3389
    远程 IP 10.10.1.4
    远程端口 3389

    Screenshot showing an IP flow test.

  3. 结果表明访问因 NSG 和安全规则而被拒绝。

在此练习中,你成功地使用了网络观察程序工具来发现两个子网之间的连接性问题。 由于 NSG 规则,允许以一种方式通信,但阻止了另一种方式的通信。