Tính subnet cho VPC/VNet
🎯 Mục tiêu: Tính toán và phân bổ CIDR subnet cho VNet 3-tier, tạo VNet + subnets bằng Azure CLI, kiểm chứng địa chỉ usable.
🧰 Công cụ / nền tảng: Azure CLI (az), Bash hoặc PowerShell, tài khoản Azure (Free Tier đủ dùng).
📦 Chuẩn bị: Cài Azure CLI: docs.microsoft.com/cli/azure. Đăng nhập: az login.
▶️ Phần 1: Tính subnet trên CLI (không cần Azure):
# === Tính subnet thủ công bằng ipcalc (Linux) ===
# Cài ipcalc nếu chưa có
sudo apt install -y ipcalc
# Bài toán: VNet 10.10.0.0/16, chia thành 4 subnet:
# - GatewaySubnet: 10.10.0.0/27 (VPN Gateway, cần ≥ /27)
# - snet-web: 10.10.1.0/24 (Web tier — public-facing)
# - snet-app: 10.10.2.0/24 (App tier — private)
# - snet-db: 10.10.3.0/24 (DB tier — private, most restricted)
# Kiểm tra từng subnet
ipcalc 10.10.0.0/27
ipcalc 10.10.1.0/24
ipcalc 10.10.2.0/24
ipcalc 10.10.3.0/24
# Kiểm tra không overlap: các range phải tách biệt
# GatewaySubnet: 10.10.0.0 – 10.10.0.31
# snet-web: 10.10.1.0 – 10.10.1.255 -> OK, không overlap
▶️ Phần 2: Tạo VNet và subnets bằng Azure CLI (Bash):
# 1. Đăng nhập và chọn subscription
az login
az account show --query "{name:name, id:id}" -o table
# 2. Tạo Resource Group
az group create \
--name rg-networking-lab \
--location southeastasia
# 3. Tạo VNet với address space 10.10.0.0/16
az network vnet create \
--resource-group rg-networking-lab \
--name vnet-lab-prod \
--address-prefixes 10.10.0.0/16 \
--location southeastasia
# 4. Tạo 4 subnets
az network vnet subnet create \
--resource-group rg-networking-lab \
--vnet-name vnet-lab-prod \
--name GatewaySubnet \
--address-prefixes 10.10.0.0/27
az network vnet subnet create \
--resource-group rg-networking-lab \
--vnet-name vnet-lab-prod \
--name snet-web \
--address-prefixes 10.10.1.0/24
az network vnet subnet create \
--resource-group rg-networking-lab \
--vnet-name vnet-lab-prod \
--name snet-app \
--address-prefixes 10.10.2.0/24
az network vnet subnet create \
--resource-group rg-networking-lab \
--vnet-name vnet-lab-prod \
--name snet-db \
--address-prefixes 10.10.3.0/24
# 5. Xem kết quả
az network vnet subnet list \
--resource-group rg-networking-lab \
--vnet-name vnet-lab-prod \
--output table
🖥️ Đối chiếu PowerShell:
# Tương đương trên PowerShell (Az module)
$rg = "rg-networking-lab"
$vnet = New-AzVirtualNetwork -Name "vnet-lab-prod" -ResourceGroupName $rg `
-Location "southeastasia" -AddressPrefix "10.10.0.0/16"
Add-AzVirtualNetworkSubnetConfig -Name "snet-web" -VirtualNetwork $vnet `
-AddressPrefix "10.10.1.0/24" | Set-AzVirtualNetwork
# Kiểm tra
Get-AzVirtualNetworkSubnetConfig -VirtualNetwork (Get-AzVirtualNetwork -Name "vnet-lab-prod" -ResourceGroupName $rg)
✅ Kết quả mong đợi:
ipcalc 10.10.1.0/24in:Hosts/Net: 254,Network: 10.10.1.0,Broadcast: 10.10.1.255.az network vnet subnet list --output tablehiển thị 4 subnet, address range không overlap.- Azure Portal: VNet
vnet-lab-prodhiển thị 4 subnets đúng CIDR.
🧹 Cleanup:
# Xóa toàn bộ resource group (xóa hết tài nguyên bên trong)
az group delete --name rg-networking-lab --yes --no-wait