练习 - 创建 NVA 和虚拟机

已完成

在安全实现的下一个阶段,将部署一个网络虚拟设备 (NVA) 来保护和监视前端公共服务器和内部专用服务器之间的流量。

首先,配置设备以转发 IP 流量。 如果未启用 IP 转发,则预期的目标服务器永远不会收到已通过设备路由的流量。

在本练习中,将 nva 网络设备部署到 dmzsubnet 子网。 然后启用 IP 转发,以便将来自 * 的流量和使用自定义路由的流量发送到 privatesubnet 子网。

启用了 IP 转发的网络虚拟设备的示意图。

在以下步骤中,你将部署 NVA。 然后,需要更新 Azure 虚拟 NIC 和设备中的网络设置,以启用 IP 转发。

部署网络虚拟设备

若要构建 NVA,请部署 Ubuntu LTS 实例。

  1. 在 Cloud Shell 中运行以下命令,以部署设备。 将 <password> 替换为所选 azureuser 管理员帐户的合适密码。

    az vm create \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name nva \
        --vnet-name vnet \
        --subnet dmzsubnet \
        --image Ubuntu2204 \
        --admin-username azureuser \
        --admin-password <password>
    

启用 Azure 网络接口的 IP 转发

在接下来的步骤中,你将启用 nva 网络设备的 IP 转发。 当流量流向 NVA(但本应流向其他目标)时,NVA 会将该流量路由到正确的目标。

  1. 运行以下命令以获取 NVA 网络接口的 ID:

    NICID=$(az vm nic list \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --vm-name nva \
        --query "[].{id:id}" --output tsv)
    
    echo $NICID
    
  2. 运行以下命令以获取 NVA 网络接口的命令:

    NICNAME=$(az vm nic show \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --vm-name nva \
        --nic $NICID \
        --query "{name:name}" --output tsv)
    
    echo $NICNAME
    
  3. 运行以下命令以启用网络接口的 IP 转发:

    az network nic update --name $NICNAME \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --ip-forwarding true
    

在设备中启用 IP 转发

  1. 运行以下命令,将 NVA 虚拟机的公共 IP 地址保存到 NVAIP 变量:

    NVAIP="$(az vm list-ip-addresses \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name nva \
        --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
        --output tsv)"
    
    echo $NVAIP
    
  2. 运行以下命令以启用 NVA 中的 IP 转发:

    ssh -t -o StrictHostKeyChecking=no azureuser@$NVAIP 'sudo sysctl -w net.ipv4.ip_forward=1; exit;'
    

    出现提示时,输入创建虚拟机时所用的密码。