В этом руководстве описано, как интегрировать шлюз NAT с брандмауэром Azure в концентраторе и периферийной сети для повышения исходящего подключения и масштабируемости.
Брандмауэр Azure предоставляет 2496 портов SNAT на общедоступный IP-адрес, настроенный для каждого экземпляра масштабируемого набора виртуальных машин серверной части (не менее двух экземпляров). С Брандмауэр Azure можно связать до 250 общедоступных IP-адресов. В зависимости от требований к архитектуре и шаблонов трафика может потребоваться больше портов SNAT, чем у брандмауэра Azure. Кроме того, вам может потребоваться использовать меньше общедоступных IP-адресов, а также требуется больше портов SNAT. Лучший способ исходящего подключения — использовать шлюз NAT. Шлюз NAT предоставляет 64512 портов SNAT на общедоступный IP-адрес и может использоваться до 16 общедоступных IP-адресов.
Шлюз NAT можно интегрировать с брандмауэром Azure, настроив шлюз NAT непосредственно в подсети брандмауэра Azure. Эта связь предоставляет более масштабируемый метод исходящего подключения. Для рабочих развертываний рекомендуется сеть концентратора и периферийной сети, где брандмауэр находится в собственной виртуальной сети. Серверы рабочей нагрузки являются пиринговых виртуальных сетей в том же регионе, что и виртуальная сеть концентратора, где находится брандмауэр. В этой архитектуре шлюз NAT может обеспечить исходящее подключение из центральной виртуальной сети для всех периферийных виртуальных сетей, пиринговых.
Примечание.
Шлюз NAT Azure в настоящее время не поддерживается в защищенных архитектурах виртуальной сети (vWAN). Необходимо развернуть архитектуру виртуальной сети концентратора, как описано в этом руководстве. Дополнительные сведения о параметрах архитектуры Брандмауэра Azure см. в разделе Параметры архитектуры Диспетчера брандмауэра Azure.
В этом руководстве описано следующее:
- Создание виртуальной сети концентратора и развертывание Брандмауэр Azure и Бастиона Azure во время развертывания
- Создайте шлюз NAT и свяжите его с подсетью брандмауэра в виртуальной сети концентратора
- Создание периферийной виртуальной сети
- Создание пиринга виртуальных сетей
- Создание таблицы маршрутов для периферийной виртуальной сети
- Создание политики брандмауэра для виртуальной сети концентратора
- Создание виртуальной машины для проверки исходящего подключения через шлюз NAT
Необходимые компоненты
Azure Cloud Shell
Azure размещает Azure Cloud Shell, интерактивную среду оболочки, которую можно использовать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для выполнения кода в этой статье можно использовать предустановленные команды Cloud Shell, не устанавливая ничего в локальной среде.
Чтобы запустить Azure Cloud Shell, выполните приведенные действия.
Вариант |
Пример/ссылка |
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. |
|
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. |
|
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. |
|
Чтобы использовать Azure Cloud Shell, выполните следующие действия:
Запустите Cloud Shell.
Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.
Вставьте код или команду в сеанс Cloud Shell, выбрав CTRL+SHIFT+V в Windows и Linux или выбрав Cmd+Shift+V в macOS.
Нажмите Enter, чтобы запустить код или команду.
Чтобы установить и использовать PowerShell локально для работы с этой статьей, вам понадобится модуль Azure PowerShell 1.0.0 или более поздней версии. Выполните команду Get-Module -ListAvailable Az
, чтобы узнать установленную версию. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Connect-AzAccount
, чтобы создать подключение к Azure.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
- Для работы с этой статьей требуется Azure CLI версии 2.0.28 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Создание виртуальной сети концентратора
Виртуальная сеть концентратора содержит подсеть брандмауэра, связанную с шлюзом Брандмауэр Azure и NAT. Используйте следующий пример, чтобы создать виртуальную сеть концентратора.
Войдите на портал Azure.
В поле поиска в верхней части портала введите виртуальные сети. В результатах поиска выберите Виртуальные сети.
Выберите + Создать.
На вкладке "Основные сведения" для создания виртуальной сети введите или выберите следующие сведения:
Параметр |
Значение |
Сведения о проекте |
|
Отток подписок |
Выберите свою подписку. |
Группа ресурсов |
Выберите Создать.
Введите test-rg.
Нажмите кнопку ОК. |
Сведения об экземпляре |
|
Имя. |
Введите vnet-hub. |
Область/регион |
Выберите регион (США) Центрально-южная часть США. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку "Безопасность ".
Выберите "Включить бастион Azure" в разделе "Бастион Azure" на вкладке "Безопасность".
Бастион Azure использует браузер для подключения к виртуальным машинам в виртуальной сети через безопасную оболочку (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе Azure см. в статье "Бастион Azure"
Примечание.
Почасовая цена начинается с момента развертывания Бастиона независимо от использования исходящих данных. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
Введите или выберите следующие сведения в Бастионе Azure:
Параметр |
Значение |
Имя узла Бастиона Azure |
Введите бастион. |
Общедоступный IP-адрес Бастиона Azure |
Выберите " Создать общедоступный IP-адрес".
Введите public-ip-бастион в поле "Имя".
Нажмите кнопку ОК. |
Выберите "Включить Брандмауэр Azure" в разделе Брандмауэр Azure вкладки "Безопасность".
Брандмауэр Azure — это управляемая облачная служба сетевой безопасности, которая защищает ресурсы виртуальной сети Azure. Это высокодоступная служба с полным отслеживанием состояния и неограниченными возможностями облачного масштабирования. Дополнительные сведения о Брандмауэр Azure см. в Брандмауэр Azure.
Введите или выберите следующие сведения в Брандмауэр Azure:
Параметр |
Значение |
Имя брандмауэра Azure |
Введите брандмауэр. |
Уровень |
Выберите Стандартное. |
Политика |
Выберите Создать.
Введите политику брандмауэра в имени.
Нажмите кнопку ОК. |
общедоступный IP-адрес Брандмауэр Azure |
Выберите " Создать общедоступный IP-адрес".
Введите имя общедоступного ip-брандмауэра .
Нажмите кнопку ОК. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку IP-адресов .
Выберите Review + create (Просмотреть и создать).
Нажмите кнопку создания.
Развертывание узла бастиона и брандмауэра занимает несколько минут. При создании виртуальной сети в рамках развертывания можно перейти к следующим шагам.
Создайте группу ресурсов с помощью New-AzResourceGroup .
# Create resource group
$rgParams = @{
Name = 'test-rg'
Location = 'South Central US'
}
New-AzResourceGroup @rgParams
Создайте виртуальную сеть концентратора с помощью New-AzVirtualNetwork .
# Create hub virtual network
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'vnet-hub'
AddressPrefix = '10.0.0.0/16'
}
$hubVnet = New-AzVirtualNetwork @vnetParams
Используйте Add-AzVirtualNetworkSubnetConfig , чтобы создать подсеть для брандмауэра Azure и Бастиона Azure.
# Create default subnet
$subnetParams = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
# Create subnet for Azure Firewall
$subnetParams = @{
Name = 'AzureFirewallSubnet'
AddressPrefix = '10.0.1.64/26'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
# Create subnet for Azure Bastion
$subnetParams = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.0.1.0/26'
VirtualNetwork = $hubVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Для обновления виртуальной сети используйте командлет Set-AzVirtualNetwork.
# Create the virtual network
$hubVnet | Set-AzVirtualNetwork
Используйте New-AzPublicIpAddress для создания общедоступного IP-адреса для Бастиона Azure.
# Create public IP for Azure Bastion
$publicIpBastionParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'public-ip-bastion'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1, 2, 3
}
$publicIpBastion = New-AzPublicIpAddress @publicIpBastionParams
Используйте New-AzBastion для создания Бастиона Azure.
# Create Azure Bastion
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-hub"
PublicIpAddressName = "public-ip-bastion"
PublicIPAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
}
New-AzBastion @bastionParams
Используйте New-AzPublicIpAddress для создания общедоступного IP-адреса для брандмауэра Azure.
# Create public IP for Azure Firewall
$publicIpFirewallParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'public-ip-firewall'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1, 2, 3
}
$publicIpFirewall = New-AzPublicIpAddress @publicIpFirewallParams
Используйте New-AzFirewallPolicy для создания политики брандмауэра.
# Create firewall policy
$firewallPolicyParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall-policy'
}
$firewallPolicy = New-AzFirewallPolicy @firewallPolicyParams
Используйте New-AzFirewall для создания брандмауэра Azure.
# Create Azure Firewall
$firewallParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'firewall'
VirtualNetworkName = 'vnet-hub'
PublicIpName = 'public-ip-firewall'
FirewallPolicyId = $firewallPolicy.Id
}
$firewall = New-AzFirewall @firewallParams
Используйте az group create для создания группы ресурсов.
# Variables
RESOURCE_GROUP="test-rg"
LOCATION="southcentralus"
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Используйте az network vnet create для создания виртуальной сети концентратора.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
VNET_HUB_ADDRESS_PREFIX="10.0.0.0/16"
SUBNET_1_NAME="subnet-1"
SUBNET_1_PREFIX="10.0.0.0/24"
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_HUB_NAME \
--address-prefix $VNET_HUB_ADDRESS_PREFIX \
--subnet-name $SUBNET_1_NAME \
--subnet-prefix $SUBNET_1_PREFIX
Используйте az network vnet subnet create для создания подсети для Бастиона Azure.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
BASTION_SUBNET_NAME="AzureBastionSubnet"
BASTION_SUBNET_PREFIX="10.0.1.0/26"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $BASTION_SUBNET_NAME \
--address-prefix $BASTION_SUBNET_PREFIX
Используйте az network vnet subnet create для создания подсети для брандмауэра Azure.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
FIREWALL_SUBNET_NAME="AzureFirewallSubnet"
FIREWALL_SUBNET_PREFIX="10.0.1.64/26"
az network vnet subnet create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $FIREWALL_SUBNET_NAME \
--address-prefix $FIREWALL_SUBNET_PREFIX
Используйте az network public-ip create для создания общедоступного IP-адреса для Бастиона Azure.
# Variables
RESOURCE_GROUP="test-rg"
BASTION_PUBLIC_IP_NAME="public-ip-bastion"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $BASTION_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
Используйте az network bastion create для создания Azure Bastion.
# Variables
RESOURCE_GROUP="test-rg"
BASTION_NAME="bastion"
BASTION_PUBLIC_IP_NAME="public-ip-bastion"
VNET_HUB_NAME="vnet-hub"
az network bastion create \
--resource-group $RESOURCE_GROUP \
--name $BASTION_NAME \
--public-ip-address $BASTION_PUBLIC_IP_NAME \
--vnet-name $VNET_HUB_NAME
Используйте az network public-ip create для создания общедоступного IP-адреса для брандмауэра Azure.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_PUBLIC_IP_NAME="public-ip-firewall"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
Используйте az network firewall policy create для создания политики брандмауэра.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_POLICY_NAME="firewall-policy"
az network firewall policy create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_POLICY_NAME
Используйте az network firewall create для создания брандмауэра Azure.
# Variables
RESOURCE_GROUP="test-rg"
FIREWALL_NAME="firewall"
VNET_HUB_NAME="vnet-hub"
FIREWALL_POLICY_NAME="firewall-policy"
FIREWALL_PUBLIC_IP_NAME="public-ip-firewall"
az network firewall create \
--resource-group $RESOURCE_GROUP \
--name $FIREWALL_NAME \
--vnet-name $VNET_HUB_NAME \
--firewall-policy $FIREWALL_POLICY_NAME \
--public-ip $FIREWALL_PUBLIC_IP_NAME
Создание шлюза NAT
Весь исходящий интернет-трафик проходит через шлюз NAT к Интернету. Используйте следующий пример, чтобы создать шлюз NAT для концентратора и периферийной сети и связать его с AzureFirewallSubnet.
В поле поиска в верхней части портала введите сетевой шлюз NAT. В результатах поиска выберите NAT-шлюзы.
Выберите + Создать.
На вкладке "Основы" шлюза создания сетевых адресов (NAT) введите или выберите следующие сведения:
Параметр |
Значение |
Сведения о проекте |
|
Отток подписок |
Выберите свою подписку. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Имя шлюза NAT |
Введите nat-gateway. |
Область/регион |
Выберите Центрально-южная часть США. |
Зона доступности |
Выберите зону или зону "Нет". |
Время ожидания простоя TCP (минуты) |
Сохраните значение по умолчанию 4. |
Дополнительные сведения о зонах доступности см. в разделе шлюза NAT и зон доступности.
Выберите Далее: Исходящий IP-адрес внизу страницы.
В исходящих IP-адресах в общедоступных IP-адресах выберите "Создать новый общедоступный IP-адрес".
Введите public-ip-nat в name.
Нажмите ОК.
Выберите Далее: Подсеть.
В виртуальная сеть выберите vnet-hub.
Выберите AzureFirewallSubnet в имени подсети.
Выберите Review + create (Просмотреть и создать).
Нажмите кнопку создания.
Используйте New-AzPublicIpAddress , чтобы создать общедоступный IP-адрес для шлюза NAT.
# Create public IP for NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Location = 'southcentralus'
Name = 'public-ip-nat'
AllocationMethod = 'Static'
Sku = 'Standard'
}
$publicIpNat = New-AzPublicIpAddress @publicIpNatParams
Создайте шлюз NAT с помощью New-AzNatGateway .
$natGatewayParams = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
PublicIpAddress = $publicIpNat
Sku = 'Standard'
IdleTimeoutInMinutes = 4
Location = 'South Central US'
}
$natGateway = New-AzNatGateway @natGatewayParams
Используйте Set-AzVirtualNetworkSubnetConfig , чтобы связать шлюз NAT с AzureFirewallSubnet.
# Get the AzureFirewallSubnet from the hub virtual network
$subnetParams = @{
VirtualNetwork = $hubVnet
Name = 'AzureFirewallSubnet'
}
$subnet = Get-AzVirtualNetworkSubnetConfig @subnetParams
$subnet.NatGateway = $natGateway
# Associate NAT gateway with AzureFirewallSubnet
$subnetParams = @{
VirtualNetwork = $hubVnet
Name = 'AzureFirewallSubnet'
AddressPrefix = '10.0.1.64/26'
NatGateway = $natGateway
}
Set-AzVirtualNetworkSubnetConfig @subnetParams
Для обновления виртуальной сети используйте командлет Set-AzVirtualNetwork.
# Update the virtual network
$hubVnet | Set-AzVirtualNetwork
Используйте az network public-ip create для создания общедоступного IP-адреса для шлюза NAT.
# Variables
RESOURCE_GROUP="test-rg"
NAT_PUBLIC_IP_NAME="public-ip-nat"
ALLOCATION_METHOD="Static"
SKU="Standard"
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--name $NAT_PUBLIC_IP_NAME \
--allocation-method $ALLOCATION_METHOD \
--sku $SKU
Используйте az network nat gateway create для создания шлюза NAT.
# Variables
RESOURCE_GROUP="test-rg"
NAT_GATEWAY_NAME="nat-gateway"
NAT_PUBLIC_IP_NAME="public-ip-nat"
IDLE_TIMEOUT="4"
az network nat gateway create \
--resource-group $RESOURCE_GROUP \
--name $NAT_GATEWAY_NAME \
--public-ip-address $NAT_PUBLIC_IP_NAME \
--idle-timeout $IDLE_TIMEOUT
Используйте az network vnet subnet update , чтобы связать шлюз NAT с AzureFirewallSubnet.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
FIREWALL_SUBNET_NAME="AzureFirewallSubnet"
NAT_GATEWAY_NAME="nat-gateway"
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $FIREWALL_SUBNET_NAME \
--nat-gateway $NAT_GATEWAY_NAME
Создание периферийной виртуальной сети
Периферийная виртуальная сеть содержит тестовую виртуальную машину, используемую для проверки маршрутизации интернет-трафика в шлюз NAT. Используйте следующий пример для создания периферийной сети.
В поле поиска в верхней части портала введите виртуальные сети. В результатах поиска выберите Виртуальные сети.
Выберите + Создать.
На вкладке "Основные сведения" для создания виртуальной сети введите или выберите следующие сведения:
Параметр |
Значение |
Сведения о проекте |
|
Отток подписок |
Выберите свою подписку. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Имя. |
Введите виртуальную сеть. |
Область/регион |
Выберите Центрально-южная часть США. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку "Безопасность ".
Нажмите кнопку "Далее ", чтобы перейти на вкладку IP-адресов .
На вкладке IP-адресов в адресном пространстве IPv4 выберите удалить адресное пространство, чтобы удалить адресное пространство , заполненное автоматически.
Выберите +Добавить адресное пространство IPv4.
В адресном пространстве IPv4 введите 10.1.0.0. Оставьте значение по умолчанию /16 (65 536 адресов) в выборе маски.
Выберите +Добавить подсеть.
В поле "Добавить подсеть " введите или выберите следующие сведения:
Параметр |
Значение |
Назначение подсети |
Оставьте значение по умолчанию по умолчанию. |
Имя. |
Введите подсеть-private. |
IРv4 |
|
Диапазон адресов IPv4 |
Оставьте значение по умолчанию 10.1.0.0/16. |
Начальный адрес |
Оставьте значение по умолчанию 10.1.0.0. |
Размер |
Оставьте значение по умолчанию /24(256 адресов). |
Выберите Добавить.
Выберите Review + create (Просмотреть и создать).
Нажмите кнопку создания.
Используйте New-AzVirtualNetwork для создания лепестковой виртуальной сети.
# Create spoke virtual network
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'vnet-spoke'
AddressPrefix = '10.1.0.0/16'
}
$spokeVnet = New-AzVirtualNetwork @vnetParams
Используйте Add-AzVirtualNetworkSubnetConfig, чтобы создать подсеть для спицевой виртуальной сети.
# Create subnet in spoke virtual network
$subnetParams = @{
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
VirtualNetwork = $spokeVnet
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Используйте Set-AzVirtualNetwork для обновления виртуальной сети spoke.
# Create the virtual network
$spokeVnet | Set-AzVirtualNetwork
Используйте az network vnet create, чтобы создать виртуальную сеть типа "spoke".
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
VNET_SPOKE_ADDRESS_PREFIX="10.1.0.0/16"
SPOKE_SUBNET_NAME="subnet-private"
SPOKE_SUBNET_PREFIX="10.1.0.0/24"
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name $VNET_SPOKE_NAME \
--address-prefix $VNET_SPOKE_ADDRESS_PREFIX \
--subnet-name $SPOKE_SUBNET_NAME \
--subnet-prefix $SPOKE_SUBNET_PREFIX
Создание пиринга между концентратором и периферийным устройствами
Пиринг виртуальной сети используется для подключения концентратора к периферийной и периферийной сети к концентратору. Используйте следующий пример, чтобы создать двусторонняя пиринговая связь между концентратором и периферийным устройством.
В поле поиска в верхней части портала введите виртуальные сети. В результатах поиска выберите Виртуальные сети.
Выберите виртуальный концентратор.
Выберите пиринги в параметрах.
Выберите Добавить.
Введите или выберите следующие сведения в разделе "Добавление пиринга".
Параметр |
Значение |
Сводка по удаленной виртуальной сети |
|
Имя пиринговой связи |
Введите vnet-spoke-to-vnet-hub. |
Модель развертывания виртуальной сети |
Оставьте значение по умолчанию resource manager. |
Отток подписок |
Выберите свою подписку. |
Виртуальная сеть |
Выберите виртуальную сеть-периферийный (test-rg). |
Параметры пиринга удаленной виртуальной сети |
|
Разрешить "виртуальной сети", чтобы получить доступ к "vnet-hub" |
Оставьте значение по умолчанию "Выбрано". |
Разрешить "виртуальной сети" получать переадресованный трафик из "vnet-hub" |
Установите флажок. |
Разрешить шлюзу или серверу маршрутизации в виртуальной сети перенаправить трафик в "vnet-hub" |
Оставьте значение по умолчанию unselected. |
Включение "виртуальной сети- периферийный" для использования удаленного шлюза или сервера маршрутов "vnet-hub" |
Оставьте значение по умолчанию unselected. |
Сводка по локальной виртуальной сети |
|
Имя пиринговой связи |
Введите vnet-hub-to-vnet-spoke. |
Параметры пиринга локальной виртуальной сети |
|
Разрешить "vnet-hub" получить доступ к "vnet-spoke" |
Оставьте значение по умолчанию "Выбрано". |
Разрешить "vnet-hub" получать переадресованный трафик из "виртуальной сети-периферийный" |
Установите флажок. |
Разрешить шлюзу или серверу маршрутизации в "vnet-hub" перенаправить трафик в "виртуальную сеть- периферийный" |
Оставьте значение по умолчанию unselected. |
Включите "vnet-hub" для использования удаленного шлюза или сервера маршрутизации виртуальной сети |
Оставьте значение по умолчанию unselected. |
Выберите Добавить.
Выберите "Обновить" и убедитесь, что состояние пиринга подключено.
Используйте Add-AzVirtualNetworkPeering, чтобы создать пиринг из концентратора в спицевую сеть.
# Create peering from hub to spoke
$peeringParams = @{
Name = 'vnet-hub-to-vnet-spoke'
VirtualNetwork = $hubVnet
RemoteVirtualNetworkId = $spokeVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Используйте Add-AzVirtualNetworkPeering для создания пиринга из спицевой сети в хаб.
# Create peering from spoke to hub
$peeringParams = @{
Name = 'vnet-spoke-to-vnet-hub'
VirtualNetwork = $spokeVnet
RemoteVirtualNetworkId = $hubVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @peeringParams
Используйте az network vnet peering create, чтобы создать соединение от концентратора к конечному узлу.
# Variables
RESOURCE_GROUP="test-rg"
VNET_HUB_NAME="vnet-hub"
HUB_TO_SPOKE_PEERING_NAME="vnet-hub-to-vnet-spoke"
VNET_SPOKE_NAME="vnet-spoke"
az network vnet peering create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_HUB_NAME \
--name $HUB_TO_SPOKE_PEERING_NAME \
--remote-vnet $VNET_SPOKE_NAME \
--allow-forwarded-traffic
Используйте az network vnet peering create, чтобы установить пиринг с периферийного узла в концентратор.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_TO_HUB_PEERING_NAME="vnet-spoke-to-vnet-hub"
VNET_HUB_NAME="vnet-hub"
az network vnet peering create \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_SPOKE_NAME \
--name $SPOKE_TO_HUB_PEERING_NAME \
--remote-vnet $VNET_HUB_NAME \
--allow-forwarded-traffic
Создание таблицы маршрутов для периферийной сети
Таблица маршрутов заставляет весь трафик покидать периферийную виртуальную сеть в виртуальную сеть концентратора. Таблица маршрутов настраивается с частным IP-адресом Брандмауэр Azure в качестве виртуального устройства.
Получение частного IP-адреса брандмауэра
Частный IP-адрес брандмауэра необходим для таблицы маршрутов, созданной далее в этой статье. Используйте следующий пример, чтобы получить частный IP-адрес брандмауэра.
В поле поиска в верхней части портала введите Брандмауэр. Выберите брандмауэры в результатах поиска.
Выберите брандмауэр.
В обзоребрандмауэра обратите внимание на IP-адрес в частном IP-адресе брандмауэра поля. IP-адрес в этом примере — 10.0.1.68.
Используйте Get-AzFirewall , чтобы получить частный IP-адрес брандмауэра.
# Get the private IP address of the firewall
$firewallParams = @{
ResourceGroupName = 'test-rg'
Name = 'firewall'
}
$firewall = Get-AzFirewall @firewallParams
$firewall.IpConfigurations[0].PrivateIpAddress
# Get the private IP address of the firewall
az network firewall show \
--resource-group test-rg \
--name firewall \
--query "ipConfigurations[0].privateIpAddress" \
--output tsv
Создание таблицы маршрутов
Создайте таблицу маршрутов для принудительной принудительной передачи трафика через брандмауэр в виртуальной сети концентратора.
В поле поиска в верхней части портала введите таблицу Route. Выберите таблицы route в результатах поиска.
Выберите + Создать.
В таблице "Создать маршрут " введите или выберите следующие сведения:
Параметр |
Значение |
Сведения о проекте |
|
Отток подписок |
Выберите свою подписку. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Область/регион |
Выберите Центрально-южная часть США. |
Имя. |
Введите маршрутизацию-таблицу-периферийный. |
Распространение маршрутов шлюза |
Выберите Нет. |
Выберите Review + create (Просмотреть и создать).
Нажмите кнопку создания.
В поле поиска в верхней части портала введите таблицу Route. Выберите таблицы route в результатах поиска.
Выберите route-table-spoke.
В разделе "Параметры" выберите "Маршруты".
Выберите + Добавить в маршруты.
Введите или выберите следующие сведения в поле "Добавить маршрут".
Параметр |
Значение |
Имя маршрута |
Введите маршрут к концентратору. |
Тип назначения |
Выберите IP-адреса. |
Диапазоны IP-адресов назначения или CIDR |
Введите 0.0.0.0/0. |
Тип следующего прыжка |
Выберите Виртуальный модуль. |
Адрес следующего прыжка |
Введите 10.0.1.68. |
Выберите Добавить.
В разделе Параметры выберите Подсети.
Нажмите + Связать.
Введите или выберите следующие сведения в подсети "Связать".
Параметр |
Значение |
Виртуальная сеть |
Выберите виртуальную сеть-периферийный (test-rg). |
Подсеть |
Выберите подсеть частной. |
Нажмите ОК.
Создайте таблицу маршрутов с помощью New-AzRouteTable .
# Create route table
$routeTableParams = @{
ResourceGroupName = 'test-rg'
Location = 'South Central US'
Name = 'route-table-spoke'
}
$routeTable = New-AzRouteTable @routeTableParams
Используйте Add-AzRouteConfig для создания маршрута в таблице маршрутов.
# Create route
$routeConfigParams = @{
Name = 'route-to-hub'
AddressPrefix = '0.0.0.0/0'
NextHopType = 'VirtualAppliance'
NextHopIpAddress = $firewall.IpConfigurations[0].PrivateIpAddress
RouteTable = $routeTable
}
Add-AzRouteConfig @routeConfigParams
Используйте Set-AzRouteTable для обновления таблицы маршрутов.
# Update the route table
$routeTable | Set-AzRouteTable
Используйте Set-AzVirtualNetworkSubnetConfig, чтобы связать таблицу маршрутов с подключаемой подсетью.
# Associate route table with subnet
$subnetConfigParams = @{
VirtualNetwork = $spokeVnet
Name = 'subnet-private'
AddressPrefix = '10.1.0.0/24'
RouteTable = $routeTable
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
Используйте Set-AzVirtualNetwork для обновления виртуальной сети spoke.
# Update the virtual network
$spokeVnet | Set-AzVirtualNetwork
Используйте az network route-table create для создания таблицы маршрутов.
# Variables
RESOURCE_GROUP="test-rg"
ROUTE_TABLE_NAME="route-table-spoke"
LOCATION="southcentralus"
az network route-table create \
--resource-group $RESOURCE_GROUP \
--name $ROUTE_TABLE_NAME \
--location $LOCATION
Используйте az network route-table route create для создания маршрута.
# Variables
RESOURCE_GROUP="test-rg"
ROUTE_TABLE_NAME="route-table-spoke"
ROUTE_NAME="route-to-hub"
ADDRESS_PREFIX="0.0.0.0/0"
NEXT_HOP_TYPE="VirtualAppliance"
NEXT_HOP_IP="10.0.1.68"
az network route-table route create \
--resource-group $RESOURCE_GROUP \
--route-table-name $ROUTE_TABLE_NAME \
--name $ROUTE_NAME \
--address-prefix $ADDRESS_PREFIX \
--next-hop-type $NEXT_HOP_TYPE \
--next-hop-ip-address $NEXT_HOP_IP
Используйте az network vnet subnet update , чтобы связать таблицу маршрутов с подсетью.
# Variables
RESOURCE_GROUP="test-rg"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_SUBNET_NAME="subnet-private"
ROUTE_TABLE_NAME="route-table-spoke"
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_SPOKE_NAME \
--name $SPOKE_SUBNET_NAME \
--route-table $ROUTE_TABLE_NAME
Трафик из периферийной сети через концентратор должен быть разрешен через политику брандмауэра и сетевое правило. Используйте следующий пример, чтобы создать политику брандмауэра и правило сети.
В поле поиска в верхней части портала введите Брандмауэр. Выберите политики брандмауэра в результатах поиска.
Выберите политику брандмауэра.
Разверните раздел "Параметры" , а затем выберите правила сети.
Выберите + Добавить коллекцию правил.
В поле "Добавить коллекцию правил" введите или выберите следующие сведения:
Параметр |
Значение |
Имя. |
Введите периферийные подключения к Интернету. |
Тип коллекции правил |
Выберите Сеть. |
Приоритет |
Введите 100. |
Действие коллекции правил |
Выберите Разрешить. |
Группа коллекции правил |
Выберите DefaultNetworkRuleCollectionGroup. |
Правила |
|
Имя. |
Введите allow-web. |
Тип источника |
IP-адрес. |
Исходный код |
Введите 10.1.0.0/24. |
Протокол |
Выберите TCP. |
Порты назначения |
Введите 80 443. |
Тип назначения |
Выберите IP-адрес. |
Назначение |
Входить* |
Выберите Добавить.
Используйте Get-AzFirewallPolicy , чтобы получить существующую политику брандмауэра.
# Get the existing firewall policy
$firewallPolicyParams = @{
Name = 'firewall-policy'
ResourceGroupName = 'test-rg'
}
$firewallPolicy = Get-AzFirewallPolicy @firewallPolicyParams
Чтобы создать сетевое правило, используйте New-AzFirewallPolicyNetworkRule .
# Create a network rule for web traffic
$networkRuleParams = @{
Name = 'allow-internet'
SourceAddress = '10.1.0.0/24'
Protocol = 'TCP'
DestinationAddress = '*'
DestinationPort = '*'
}
$networkRule = New-AzFirewallPolicyNetworkRule @networkRuleParams
Используйте New-AzFirewallPolicyFilterRuleCollection , чтобы создать коллекцию правил для сетевого правила.
# Create a rule collection for the network rule
$ruleCollectionParams = @{
Name = 'spoke-to-internet'
Priority = 100
Rule = $networkRule
ActionType = 'Allow'
}
$ruleCollection = New-AzFirewallPolicyFilterRuleCollection @ruleCollectionParams
Используйте New-AzFirewallPolicyRuleCollectionGroup для создания группы коллекций правил.
$newRuleCollectionGroupParams = @{
Name = 'DefaultNetworkRuleCollectionGroup'
Priority = 200
FirewallPolicyObject = $firewallPolicy
RuleCollection = $ruleCollection
}
New-AzFirewallPolicyRuleCollectionGroup @newRuleCollectionGroupParams
Используйте az network firewall policy rule-collection-group create для создания группы коллекций правил.
# Variables
RULE_COLLECTION_GROUP_NAME="DefaultNetworkRuleCollectionGroup"
FIREWALL_POLICY_NAME="firewall-policy"
RESOURCE_GROUP="test-rg"
PRIORITY="200"
az network firewall policy rule-collection-group create \
--name $RULE_COLLECTION_GROUP_NAME \
--policy-name $FIREWALL_POLICY_NAME \
--resource-group $RESOURCE_GROUP \
--priority $PRIORITY
Используйте az network firewall policy rule-collection-group collection add-filter-collection чтобы создать коллекцию правил сети.
# Variables
COLLECTION_NAME="spoke-to-internet"
ACTION="Allow"
RULE_NAME="allow-web"
RULE_TYPE="NetworkRule"
SOURCE_ADDRESSES="10.1.0.0/24"
IP_PROTOCOLS="TCP"
DESTINATION_ADDRESSES="*"
DESTINATION_PORTS="*"
COLLECTION_PRIORITY="100"
FIREWALL_POLICY_NAME="firewall-policy"
RESOURCE_GROUP="test-rg"
RULE_COLLECTION_GROUP_NAME="DefaultNetworkRuleCollectionGroup"
az network firewall policy rule-collection-group collection add-filter-collection \
--name $COLLECTION_NAME \
--action $ACTION \
--rule-name $RULE_NAME \
--rule-type $RULE_TYPE \
--source-addresses $SOURCE_ADDRESSES \
--ip-protocols $IP_PROTOCOLS \
--destination-addresses $DESTINATION_ADDRESSES \
--destination-ports $DESTINATION_PORTS \
--collection-priority $COLLECTION_PRIORITY \
--policy-name $FIREWALL_POLICY_NAME \
--resource-group $RESOURCE_GROUP \
--rule-collection-group-name $RULE_COLLECTION_GROUP_NAME
Создание тестовой виртуальной машины
Виртуальная машина Ubuntu используется для тестирования исходящего интернет-трафика через шлюз NAT. Используйте следующий пример для создания виртуальной машины Ubuntu.
На портале найдите и выберите "Виртуальные машины".
На виртуальных машинах нажмите кнопку +Создать, а затем виртуальную машину Azure.
На вкладке Основные сведения в разделе Создание виртуальной машины введите или выберите следующие сведения:
Параметр |
Значение |
Сведения о проекте |
|
Отток подписок |
Выберите свою подписку. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Название виртуальной машины |
Введите виртуальную машину. |
Область/регион |
Выберите регион (США) Центрально-южная часть США. |
Параметры доступности |
Выберите Избыточность инфраструктуры не требуется. |
Тип безопасности |
Оставьте значение по умолчанию Стандартный. |
Изображения |
Выберите Ubuntu Server 24.04 LTS — x64-го поколения 2-го поколения. |
Архитектура виртуальной машины |
Оставьте значение по умолчанию x64. |
Размер |
Выберите размер. |
Учетная запись администратора |
|
Тип аутентификации |
выберите Пароль. |
Имя пользователя |
Введите azureuser. |
Пароль |
Введите пароль. |
Подтверждение пароля |
Повторно введите пароль. |
Правила входящего порта |
|
Общедоступные входящие порты |
Выберите Отсутствует. |
Выберите вкладку "Сеть" в верхней части страницы или нажмите кнопку "Далее:Диски", а затем "Далее:Сеть".
На вкладке Сеть введите или выберите следующие значения параметров:
Параметр |
Значение |
Сетевой интерфейс |
|
Виртуальная сеть |
Выберите виртуальную сеть. |
Подсеть |
Выберите подсеть -private (10.1.0.0/24). |
Общедоступный IP-адрес |
Выберите Отсутствует. |
Группа безопасности сети сетевого адаптера |
Выберите Дополнительно. |
Настройка группы безопасности сети |
Выберите Создать.
Введите nsg-1 для имени.
Оставьте остальные значения по умолчанию и нажмите кнопку "ОК". |
Оставьте остальные параметры по умолчанию и нажмите кнопку "Просмотр и создание".
Проверьте параметры и выберите Создать.
Дождитесь завершения развертывания виртуальной машины, прежде чем перейти к следующим шагам.
Примечание.
Виртуальные машины в виртуальной сети с узлом бастиона не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Вы можете удалить общедоступные IP-адреса из любых виртуальных машин в размещенных виртуальных сетях бастиона. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Создайте группу безопасности сети с помощью New-AzNetworkSecurityGroup .
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-1"
Location = "southcentralus"
}
New-AzNetworkSecurityGroup @nsgParams
Используйте New-AzNetworkInterface для создания сетевого интерфейса.
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-spoke").Subnets[0].Id
NetworkSecurityGroupId = (Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-1").Id
Location = "southcentralus"
}
New-AzNetworkInterface @nicParams
Используйте get-Credential , чтобы задать имя пользователя и пароль для виртуальной машины и сохранить их в переменной $cred
.
$cred = Get-Credential
Примечание.
Для виртуальной машины требуется имя пользователя. Пароль является необязательным и не используется, если задано. Для виртуальных машин Linux рекомендуется настроить ключ SSH.
Используйте New-AzVMConfig для определения виртуальной машины.
$vmConfigParams = @{
VMName = "vm-spoke"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
Используйте Set-AzVMOperatingSystem и Set-AzVMSourceImage для создания остальной части конфигурации виртуальной машины. В следующем примере создается виртуальная машина Ubuntu Server:
$osParams = @{
VM = $vmConfig
ComputerName = "vm-spoke"
Credential = $cred
}
$vmConfig = Set-AzVMOperatingSystem @osParams -Linux -DisablePasswordAuthentication
$imageParams = @{
VM = $vmConfig
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$vmConfig = Set-AzVMSourceImage @imageParams
Используйте Add-AzVMNetworkInterface , чтобы подключить сетевой адаптер, созданный ранее, к виртуальной машине.
# Get the network interface object
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
}
$nic = Get-AzNetworkInterface @nicParams
$vmConfigParams = @{
VM = $vmConfig
Id = $nic.Id
}
$vmConfig = Add-AzVMNetworkInterface @vmConfigParams
Создайте виртуальную машину с помощью New-AzVM . Команда создает ключи SSH для виртуальной машины для входа. Запишите расположение закрытого ключа. Закрытый ключ необходим в последующих шагах для подключения к виртуальной машине с помощью Бастиона Azure.
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "southcentralus"
SshKeyName = "ssh-key"
}
New-AzVM @vmParams -GenerateSshKey
Используйте az network nsg create для создания группы безопасности сети.
# Variables
RESOURCE_GROUP="test-rg"
NSG_NAME="nsg-1"
LOCATION="southcentralus"
az network nsg create \
--resource-group $RESOURCE_GROUP \
--name $NSG_NAME \
--location $LOCATION
Используйте az network nic create для создания сетевого интерфейса.
# Variables
RESOURCE_GROUP="test-rg"
NIC_NAME="vm-spoke-nic"
VNET_SPOKE_NAME="vnet-spoke"
SPOKE_SUBNET_NAME="subnet-private"
NSG_NAME="nsg-1"
az network nic create \
--resource-group $RESOURCE_GROUP \
--name $NIC_NAME \
--vnet-name $VNET_SPOKE_NAME \
--subnet $SPOKE_SUBNET_NAME \
--network-security-group $NSG_NAME
Используйте az vm create, чтобы создать виртуальную машину.
# Variables
RESOURCE_GROUP="test-rg"
VM_NAME="vm-spoke"
LOCATION="southcentralus"
NIC_NAME="vm-spoke-nic"
VM_IMAGE="Ubuntu2204"
ADMIN_USERNAME="azureuser"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--location $LOCATION \
--nics $NIC_NAME \
--image $VM_IMAGE \
--admin-username $ADMIN_USERNAME \
--generate-ssh-keys
Тестирование шлюза NAT
Вы подключаетесь к виртуальным машинам Ubuntu, созданным на предыдущих шагах, чтобы убедиться, что исходящий интернет-трафик покидает шлюз NAT.
Получение общедоступного IP-адреса шлюза NAT
Получите общедоступный IP-адрес шлюза NAT для проверки действий далее в статье.
В поле поиска в верхней части портала введите Общедоступный IP-адрес. В результатах поиска выберите элемент Общедоступный IP-адрес.
Выберите public-ip-nat.
Запишите значение в IP-адресе. Пример, используемый в этой статье, — 203.0.113.0.25.
Используйте Get-AzPublicIpAddress , чтобы получить общедоступный IP-адрес шлюза NAT.
# Get the public IP address of the NAT gateway
$publicIpNatParams = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip-nat'
}
$publicIpNat = Get-AzPublicIpAddress @publicIpNatParams
$publicIpNat.IpAddress
Используйте az network public-ip show , чтобы получить общедоступный IP-адрес шлюза NAT.
# Variables
RESOURCE_GROUP="test-rg"
NAT_PUBLIC_IP_NAME="public-ip-nat"
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $NAT_PUBLIC_IP_NAME \
--query "ipAddress" \
--output tsv
Тестирование шлюза NAT из периферийной сети
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
Выберите виртуальную машину.
В разделе "Обзор" выберите "Подключиться" и "Подключиться через бастион".
Выберите SSH в качестве типа подключения. Отправьте файл закрытого ключа SSH. Нажмите Подключиться.
В командной строке bash введите следующую команду:
curl ifconfig.me
Убедитесь, что IP-адрес, возвращенный командой, соответствует общедоступному IP-адресу шлюза NAT.
azureuser@vm-1:~$ curl ifconfig.me
203.0.113.0.25
Закройте подключение Бастиона к виртуальной машине.
Завершив использование созданных ресурсов, можно удалить группу ресурсов и все ее ресурсы.
Войдите на портал Azure; найдите в поиске и выберите Группы ресурсов.
На странице групп ресурсов выберите группу ресурсов test-rg.
На странице test-rg выберите "Удалить группу ресурсов".
Введите test-rg в поле Ввод имени группы ресурсов, чтобы подтвердить удаление, а затем нажмите кнопку "Удалить".
Удалите группу ресурсов с помощью Remove-AzResourceGroup .
# Remove resource group
$rgParams = @{
Name = 'test-rg'
}
Remove-AzResourceGroup @rgParams
Используйте az group delete , чтобы удалить группу ресурсов.
# Variables
RESOURCE_GROUP="test-rg"
az group delete \
--name $RESOURCE_GROUP \
--yes \
--no-wait
Следующие шаги
Перейдите к следующей статье, чтобы узнать, как интегрировать шлюз NAT с Azure Load Balancer: