Azure虚拟网络设置指南 | AI生成和翻译

Home 2025.10

Azure 虚拟网络配置概述

为在 Azure 中搭建您描述的架构,我们将使用单个虚拟网络(VNet)以简化操作,并通过多个子网来隔离面向公众的资源(如 API 和管理服务)与内部资源(如 MQ/Redis 虚拟机)。这样既可通过私有 IP 实现安全的内部通信,又能通过网络安全性组(NSG)控制公共访问。我们还将配置仅限于您团队 IP 范围的 SSH 访问。

核心原则:

假设您使用 Azure 门户或 CLI;我将提供高级步骤及 CLI 示例以确保可重现性。VNet、虚拟机和公共 IP 均会产生费用。

步骤 1:创建虚拟网络和子网

创建一个包含两个子网的 VNet:

使用 Azure CLI(请先通过 az login 安装):

# 创建资源组
az group create --name myResourceGroup --location eastus

# 创建 VNet
az network vnet create \
  --resource-group myResourceGroup \
  --name myVNet \
  --address-prefixes 10.0.0.0/16 \
  --subnet-name PublicSubnet \
  --subnet-prefixes 10.0.1.0/24

# 添加私有子网
az network vnet subnet create \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name PrivateSubnet \
  --address-prefixes 10.0.2.0/24

步骤 2:创建虚拟机并配置网络

CLI 示例:

# 后端 API 虚拟机
az vm create \
  --resource-group myResourceGroup \
  --name backendVM \
  --image UbuntuLTS \
  --admin-username azureuser \
  --admin-password <strong-password> \
  --vnet-name myVNet \
  --subnet PublicSubnet \
  --public-ip-sku Standard

# 获取 API 的公共 IP
API_PUBLIC_IP=$(az vm show -d -g myResourceGroup -n backendVM --query publicIps -o tsv)

# MQ/Redis 虚拟机(无公共 IP)
az vm create \
  --resource-group myResourceGroup \
  --name mqVM \
  --image UbuntuLTS \
  --admin-username azureuser \
  --admin-password <strong-password> \
  --vnet-name myVNet \
  --subnet PrivateSubnet

# 获取内部通信所需的私有 IP
MQ_PRIVATE_IP=$(az vm show -g myResourceGroup -n mqVM --query privateIps -o tsv)

# 管理虚拟机
az vm create \
  --resource-group myResourceGroup \
  --name adminVM \
  --image UbuntuLTS \
  --admin-username azureuser \
  --admin-password <strong-password> \
  --vnet-name myVNet \
  --subnet PublicSubnet \
  --public-ip-sku Standard

# 获取管理服务的公共 IP
ADMIN_PUBLIC_IP=$(az vm show -d -g myResourceGroup -n adminVM --query publicIps -o tsv)

在虚拟机上:

步骤 3:配置网络安全性组(NSG)

NSG 充当防火墙。为每个子网关联一个 NSG(或为每个 NIC 关联以实现更精细控制)。创建规则以允许:

NSG 的 CLI 配置:

# 为公共子网创建 NSG
az network nsg create \
  --resource-group myResourceGroup \
  --name publicNSG

# 公共 NSG 的规则
az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name publicNSG \
  --name AllowHTTPS \
  --priority 100 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --source-address-prefixes '*' \
  --source-port-ranges '*' \
  --destination-address-prefixes '*' \
  --destination-port-ranges 443

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name publicNSG \
  --name AllowHTTPAdmin \
  --priority 101 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --source-address-prefixes 'TEAM_IPS' \
  --source-port-ranges '*' \
  --destination-address-prefixes '*' \
  --destination-port-ranges 80

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name publicNSG \
  --name AllowSSH \
  --priority 102 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --source-address-prefixes 'TEAM_IPS' \
  --source-port-ranges '*' \
  --destination-address-prefixes '*' \
  --destination-port-ranges 22

# 将公共 NSG 关联到 PublicSubnet
az network vnet subnet update \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name PublicSubnet \
  --network-security-group publicNSG

# 为私有子网创建 NSG
az network nsg create \
  --resource-group myResourceGroup \
  --name privateNSG

# 允许从后端到 MQ 的内部流量
az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name privateNSG \
  --name AllowFromBackend \
  --priority 100 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --source-address-prefixes '10.0.1.0/24'  # 公共子网 CIDR
  --source-port-ranges '*' \
  --destination-address-prefixes '*' \
  --destination-port-ranges 6379  # Redis 端口

# 如果需要,允许 SSH 访问私有虚拟机(来自团队,通过堡垒机或 VPN)
az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name privateNSG \
  --name AllowSSHPrivate \
  --priority 101 \
  --direction Inbound \
  --access Allow \
  --protocol Tcp \
  --source-address-prefixes 'TEAM_IPS' \
  --source-port-ranges '*' \
  --destination-address-prefixes '*' \
  --destination-port-ranges 22

# 关联私有 NSG
az network vnet subnet update \
  --resource-group myResourceGroup \
  --vnet-name myVNet \
  --name PrivateSubnet \
  --network-security-group privateNSG

步骤 4:团队的 SSH 访问

步骤 5:访问服务

其他最佳实践

完整文档请参考:Azure VNet 概述NSG 规则。如果您需要 Terraform/ARM 模板或具体细节(例如确切的团队 IP),请提供更多信息!


Back

x-ai/grok-4-fast

Donate