Могу ли я установить целевую виртуальную машину в Azure PowerShell при добавлении правила nat для входящего трафика?

В балансировщике нагрузки Azure RM я могу создать FTP-правило nat с помощью PowerShell, но также хотел бы установить целевую виртуальную машину с помощью PowerShell. Единственный способ, которым я знаю, как установить цель, - это портал.

У меня две виртуальные машины в балансировщике нагрузки. Я попытался использовать Add-AzLoadBalancerInboundNatRuleConfig, но не вижу параметра для целевой виртуальной машины.

Мой сценарий: $ lb | Add-AzLoadBalancerInboundNatRuleConfig -Name $ EndpointName -FrontendIPConfiguration $ feip -Protocol Tcp -FrontendPort $ i -BackendPort $ i

Если невозможно установить цель в PowerShell, какие есть альтернативы, кроме портала?


Я нашел ответ. С помощью можно добавить LoadBalancerInboundNatRuleId в конфигурацию IP.

Вот функция для получения LoadBalancerInboundNatRuleId, которую я создал для этой цели:

Function natRuleID ($sourcePortName) {
return  "/subscriptions/$subscriptionID/resourceGroups/$rgName/providers/Microsoft.Network/loadBalancers/$lbName/InboundNatRules/$sourcePortName"
}

А вот мой пример сценария, который добавляет два nat-правила балансировщика нагрузки, а затем устанавливает целевой сетевой интерфейс для виртуальной машины:

# Add Load Balancer Nat Rules:
$lb = Get-AzLoadBalancer -Name $lbName -ResourceGroupName $rgName
$feip = Get-AzLoadBalancerFrontendIpConfig -Name $feipName -LoadBalancer $lb
$lb | Add-AzLoadBalancerInboundNatRuleConfig -Name $natRuleRdpName-FrontendIpConfiguration $feip -Protocol tcp -FrontendPort $rdpPortNumber -BackendPort 3389
$lb | Add-AzLoadBalancerInboundNatRuleConfig -Name $natRuleFtpName -FrontendIPConfiguration $feip -Protocol "Tcp" -FrontendPort $ftpPublicPortForImplicit990  -BackendPort 990
$lb | Set-AzLoadBalancer  #save the new LB rules

# Set nat rule targets:
Function natRuleID ($sourcePortName) {
    return  "/subscriptions/$subscriptionID/resourceGroups/$rgName/providers/Microsoft.Network/loadBalancers/$lbName/InboundNatRules/$sourcePortName"
    }
$rules = @()
$rules = $rules += natRuleID($natRuleFtpName)
$rules = $rules += natRuleID($natRuleRdpName)
$nic = Get-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName
$nic | Set-AzNetworkInterfaceIpConfig -Name $ipConfigName  -LoadBalancerInboundNatRuleId $rules
$nic | Set-AzNetworkInterface #save the new ipConfig rules

person Gary S    schedule 29.05.2019    source источник
comment
@CharlesXu Ваш ответ не ответил: цель, указанная в сообщении, может быть установлена ​​на портале, и вопрос был в следующем: можно ли установить цель виртуальной машины с помощью PowerShell.   -  person Gary S    schedule 02.06.2019
comment
Вы внимательно читаете мой ответ? Я сказал, что вам нужна команда PowerShell, чтобы добавить правило Nat, связанное с виртуальной машиной, также на портале вы можете сделать это только за один шаг.   -  person Charles Xu    schedule 03.06.2019
comment
@CharlesXu Я не вижу параметра для целевой виртуальной машины в Add-AzNetworkInterfaceIpConfig. У вас есть пример того, как установить цель в PowerShell?   -  person Gary S    schedule 06.06.2019
comment
Интерфейс уже связан с виртуальной машиной. Почему вы нашли параметр для виртуальной машины?   -  person Charles Xu    schedule 06.06.2019
comment
Тем не менее, мой интерфейс уже настроен и связан с правилами балансировщика нагрузки, поэтому создание интерфейса не вариант. Мой пост связан с правилом nat, нацеленным на виртуальную машину.   -  person Gary S    schedule 06.06.2019
comment
Ты не понимаешь меня. Я имею в виду интерфейс, связанный с виртуальной машиной, а не создание нового, хорошо? Вся сетевая конфигурация виртуальной машины означает конфигурацию интерфейса, связанного с виртуальной машиной.   -  person Charles Xu    schedule 06.06.2019


Ответы (3)


Для правил Load Balancer Nat это описывается следующим образом:

Стандартные внутренние пулы балансировщика нагрузки расширяются до любого ресурса виртуальной машины в виртуальной сети. Он может содержать до 1000 серверных экземпляров. Экземпляр серверной части - это конфигурация IP, которая является свойством ресурса сетевой карты.

Итак, есть два шага для создания виртуальной машины:

  1. создайте правило nat в балансировщике нагрузки, команда PowerShell имеет вид Add-AzLoadBalancerInboundNatRuleConfig, команда Azure CLI - az network lb inbound-nat-rule create.
  2. свяжите правило nat с виртуальной машиной nic, команда PowerShell имеет вид Add-AzNetworkInterfaceIpConfig, команда Azure CLI - az network nic ip-config inbound-nat -правило добавить.

Вы можете добавить правило Nat за один шаг на портале, но вам нужно сделать два шага с помощью команды. Также нужно обратить внимание на то, что правило NSG также необходимо для разрешения трафика на порт.

person Charles Xu    schedule 30.05.2019

Гэри, я понимаю проблему, с которой вы столкнулись, я также пытаюсь настроить целевую виртуальную машину и конфигурацию сетевого IP (если виртуальная машина связана с двумя сетевыми адаптерами) через PS. Однако я не могу это сделать, поскольку командлет «Add-AzLoadBalancerInboundNatRuleConfig» не поставляется с параметром целевой виртуальной машины.

Мне удалось получить FrontendIPs и правила NAT для входящего трафика. Однако установить целевую виртуальную машину и сетевой адаптер, связанные с этими входящими правилами nat, является сложной задачей.

«Add-AzLoadBalancerInboundNatRuleConfig» не показывает правило входящего nat в разделе настроек LB.

Сценарий ниже поможет вам получить существующее имя целевой виртуальной машины и сетевой адаптер.

$ lb = Get-AzLoadBalancer -ResourceGroupName $ rgname -Name $ lbname $ lbinboudnatrule = Get-AzLoadBalancerInboundNatRuleConfig -LoadBalancer $ lb foreach ($ lbrule в $ lbinboudnatsupport. ------------- / Microsoft.Network/networkInterfaces/ '$ info = $ bip -split' ----------- / ipConfigurations / '$ wrapper = New-Object PSObject -Property @ {NATRuleName = $ lbrule.Name; TargetVirtualMachine = $ info [1]; NetworkIPConfiguration = $ info [2]} $ оболочка | Export-csv -Path C: /Temp/lb.csv -Append -NoTypeInformation}

person Garima Goyal    schedule 25.06.2019

Вам необходимо настроить его в NSG, ниже приведен образец фрагмента сценария, который я создал, чтобы сделать то же самое для порта RDP.

Add-AzureRmNetworkSecurityRuleConfig -Name $ruleName -NetworkSecurityGroup $nsg -Access Allow -Description "Allowing RDP connection from current location" -DestinationAddressPrefix * -DestinationPortRange $port -Direction Inbound -Priority $priorityNew -Protocol * -SourceAddressPrefix $current_IP -SourcePortRange *
$hout = Set-AzureRmNetworkSecurityGroup -NetworkSecurityGroup $nsg
person Hannel    schedule 29.05.2019