首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure:无法通过RDP访问另一个辐式虚拟网络中的VM

Azure:无法通过RDP访问另一个辐式虚拟网络中的VM
EN

Stack Overflow用户
提问于 2022-09-15 23:13:13
回答 3查看 252关注 0票数 2

我有下面的Vnets

vnet-hub-poc-hubspoke是集线器Vnet

它有以下子网

有一个firewall

然后用Prod & Dev Vnets观察

Prod Vnet配置如下所示

Dev Vnet配置如下所示

我已经创建了以下VMs --每个Vnet中有一个

有以下规则

我有下面的Route tables

使用以下配置

我可以从这两个am到防火墙,但是我不能使用RDP。

我遗漏了什么?

更新::我猜请求是去防火墙(10.11.253.4),但是超时了。

C:\Users\kavija>tracert 10.13.2.4 追踪路线至10.13.2.4,最多30跳

Update#2:我使用了下面的脚本

代码语言:javascript
复制
# Define Variable
rgName=SpokeToSpoke
location=eastus
hubVNetName=vnet-hub
prodVnetName=vnet-prod
devVnetName=vnet-dev
myFirewallPublicIPName="firewallPublicIP"
azFirewallName="azFirewallName"
azureworkloadRG="AzureProdWorkLoad"
azureDevWorkloadRG="AzureDevWorkLoad"
VmUser="demouserXXX"
VmName1="ProdSever"
VmName2="DevSever"
fwRouteTableProdName=prod-route-table
fwRouteTableDevName=dev-route-table
bastionName="MyBastion"
bastionPIPName="bastionpip"
rdpRuleName=AllowRDP
priority=200
rgroup=prod-ukw-core-rg
access=Allow
description="Allow RDP from office IP address"
destPort=3389
direction=Inbound
protocol=TCP

# Create Resource Group
az group create --name $rgName --location $location

# Create Azure Hub VNET
az network vnet create -g $rgName --name $hubVNetName --address-prefixes 10.11.0.0/16 --location $location
az network vnet subnet create -g $rgName --vnet-name $hubVNetName --name Management --address-prefix 10.11.1.0/24
az network vnet subnet create -g $rgName --vnet-name $hubVNetName --name AppGatewaySubnet --address-prefix 10.11.252.0/26
az network vnet subnet create -g $rgName --vnet-name $hubVNetName --name AzureBastionSubnet --address-prefix 10.11.252.64/27
az network vnet subnet create -g $rgName --vnet-name $hubVNetName --name AzureFirewallSubnet --address-prefix 10.11.253.0/26
az network vnet subnet create -g $rgName --vnet-name $hubVNetName --name GatewaySubnet --address-prefix 10.11.254.0/27

# Create Azure Dev VNET
az network vnet create -g $rgName --name $devVnetName --address-prefixes 10.12.0.0/16  --location $location
az network vnet subnet create -g $rgName --vnet-name $devVnetName --name Management --address-prefix 10.12.1.0/24
az network vnet subnet create -g $rgName --vnet-name $devVnetName --name Workload1 --address-prefix 10.12.2.0/24

# Create Azure Prod VNET
az network vnet create -g $rgName --name $prodVnetName --address-prefixes 10.13.0.0/16  --location $location
az network vnet subnet create -g $rgName --vnet-name $prodVnetName --name Management --address-prefix 10.13.1.0/24
az network vnet subnet create -g $rgName --vnet-name $prodVnetName --name Workload1 --address-prefix 10.13.2.0/24

# Dev Subnet NSG 
az network nsg create -g $rgName -n Dev-Management-subnet -l $location -o table
az network nsg create -g $rgName -n Dev-Workload1-subnet -l $location -o table
az network vnet subnet update -g $rgName --vnet-name $devVnetName --name Management --network-security-group Dev-Management-subnet
az network vnet subnet update -g $rgName --vnet-name $devVnetName --name Workload1 --network-security-group Dev-Workload1-subnet

# Prod Subnet NSG 
az network nsg create -g $rgName -n Prod-Management-subnet -l $location -o table
az network nsg create -g $rgName -n Prod-Workload1-subnet -l $location -o table
az network vnet subnet update -g $rgName --vnet-name $prodVnetName --name Management --network-security-group Prod-Management-subnet
az network vnet subnet update -g $rgName --vnet-name $prodVnetName --name Workload1 --network-security-group Prod-Workload1-subnet

# Enable RDP at NSG Level for Dev Workload
az network nsg rule create --name $rdpRuleName --nsg-name Dev-Workload1-subnet --priority $priority --resource-group $rgName --access $access --description "$description" --destination-port-ranges $destPort --direction $direction --protocol $protocol --source-address-prefixes "*"

# Enable RDP at NSG Level for Prod Workload
az network nsg rule create --name $rdpRuleName --nsg-name Prod-Workload1-subnet --priority $priority --resource-group $rgName --access $access --description "$description" --destination-port-ranges $destPort --direction $direction --protocol $protocol --source-address-prefixes "*"

# Create Firewall
az network public-ip create --name $myFirewallPublicIPName --resource-group $rgName --sku Standard --allocation-method Static
az network firewall create -g $rgName -n $azFirewallName --vnet-name $hubVNetName --sku AZFW_VNet --tier Standard
az network firewall ip-config create   --firewall-name $azFirewallName   --name FW-config1 --public-ip-address $myFirewallPublicIPName  --resource-group $rgName   --vnet-name $hubVNetName
az network firewall update --name $azFirewallName --resource-group $rgName
fwprivaddr="$(az network firewall ip-config list -g $rgName -f $azFirewallName --query "[?name=='FW-config1'].privateIpAddress" --output tsv)"

# Hub-Spoke-Hub Peering
az network vnet peering create -g $rgName --name HUBtoProd --vnet-name $hubVNetName --remote-vnet $prodVnetName --allow-vnet-access --allow-forwarded-traffic --allow-gateway-transit

az network vnet peering create -g $rgName --name HUBtoDEV --vnet-name $hubVNetName --remote-vnet $devVnetName --allow-vnet-access --allow-forwarded-traffic  --allow-gateway-transit

az network vnet peering create -g $rgName --name ProdtoHUB --vnet-name $prodVnetName --remote-vnet $hubVNetName --allow-vnet-access --allow-forwarded-traffic --allow-gateway-transit 

az network vnet peering create -g $rgName --name DEVtoHUB --vnet-name $devVnetName --remote-vnet $hubVNetName --allow-vnet-access --allow-forwarded-traffic --allow-gateway-transit 

# Create Route table from Dev to Hub
az network route-table create --name $fwRouteTableDevName -g $rgName -l $location --disable-bgp-route-propagation true
az network route-table route create -g $rgName --name DevToProdSubnet-Route --route-table-name $fwRouteTableDevName --address-prefix 10.13.0.0/16  --next-hop-type VirtualAppliance --next-hop-ip-address $fwprivaddr
az network vnet subnet update -g $rgName --vnet-name $devVnetName -n Workload1 --address-prefixes 10.12.2.0/24 --route-table $fwRouteTableDevName

# Create Route table from Prod to Hub
az network route-table create --name $fwRouteTableProdName -g $rgName -l $location --disable-bgp-route-propagation true
az network route-table route create -g $rgName --name ProdToHubSubnet-Route --route-table-name $fwRouteTableProdName --address-prefix 10.12.0.0/16  --next-hop-type VirtualAppliance --next-hop-ip-address $fwprivaddr
az network vnet subnet update -g $rgName --vnet-name $prodVnetName -n Workload1 --address-prefixes 10.13.2.0/24 --route-table $fwRouteTableProdName

# Create Azure Bastion for Azure
az network public-ip create --resource-group $rgName --name $bastionPIPName --sku Standard --location $location
az network bastion create --name $bastionName --public-ip-address $bastionPIPName --resource-group $rgName --vnet-name $hubVNetName --location $location

# Create VM in Dev Vnet - Workload1 Subnet to test Spoke-to-Spoke communication
az group create --name $azureDevWorkloadRG --location $location
devWorkLoadSubNetID=$(az network vnet subnet show --resource-group $rgName --name "Workload1" --vnet-name $devVnetName --query id -o tsv)
az vm create --resource-group $azureDevWorkloadRG --name $VmName --image win2016datacenter --admin-username $VmUser --admin-password $AdminPassword --size Standard_B1s --use-unmanaged-disk --storage-sku Standard_LRS --subnet $devWorkLoadSubNetID --nsg "" --public-ip-address ""

# Create VM in Prod VNet - Workload1 Subnet
az group create --name $azureworkloadRG --location $location
prodWorkLoadSubNetID=$(az network vnet subnet show --resource-group $rgName --name "Workload1" --vnet-name $prodVnetName --query id -o tsv)
az vm create --resource-group $azureworkloadRG --name $VmName1 --image win2016datacenter --admin-username $VmUser --admin-password $AdminPassword --size Standard_B1s --use-unmanaged-disk --storage-sku Standard_LRS --subnet $prodWorkLoadSubNetID --nsg "" --public-ip-address ""

Update#3: --我也尝试过创建网关

代码语言:javascript
复制
# Azure VNET Gateway
az network public-ip create -g $rgName --name pip-hub-gateway --allocation-method dynamic --dns-name $hubVNetName 
az network vnet-gateway create -g $rgName --name vgw --vnet $hubVNetName --public-ip-address pip-hub-gateway --gateway-type vpn --client-protocol SSTP --sku Basic

az network vnet peering create -g $rgName --name ProdtoHUB --vnet-name $prodVnetName --remote-vnet $hubVNetName --allow-vnet-access --allow-forwarded-traffic --allow-gateway-transit  --use-remote-gateways

az network vnet peering create -g $rgName --name DEVtoHUB --vnet-name $devVnetName --remote-vnet $hubVNetName --allow-vnet-access --allow-forwarded-traffic --allow-gateway-transit  --use-remote-gateways

az network route-table route create -g $rgName --name DevToProdSubnet-Route --route-table-name $fwRouteTableDevName --address-prefix 10.13.0.0/16   --next-hop-type VirtualNetworkGateway

az network route-table route create -g $rgName --name ProdToHubSubnet-Route --route-table-name $fwRouteTableProdName --address-prefix 10.12.0.0/16   --next-hop-type VirtualNetworkGateway
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-23 13:43:36

使用下面的脚本,我能够在辐射网络之间建立通信。

参考: https://github.com/jillesca/azure/tree/main/hub%20%26%20spoke

代码语言:javascript
复制
az group create --name techTalk --location eastus

az network vnet create \
  --name hub-vnet \
  --resource-group techTalk \
  --subnet-name hub-subnet \
  --address-prefixes 10.0.0.0/16 \
  --subnet-prefixes 10.0.1.0/24

az network vnet create \
  --name spoke1-vnet \
  --resource-group techTalk \
  --subnet-name spoke1-subnet \
  --address-prefixes 10.1.0.0/16 \
  --subnet-prefixes 10.1.1.0/24 

az network vnet create \
  --name spoke2-vnet \
  --resource-group techTalk \
  --subnet-name spoke2-subnet \
  --address-prefixes 10.2.0.0/16 \
  --subnet-prefixes 10.2.1.0/24 

az network vnet subnet create \
  --vnet-name hub-vnet \
  --name GatewaySubnet \
  --resource-group techTalk \
  --address-prefix 10.0.255.0/27

az network public-ip create \
  --name gateway-ip-address \
  --resource-group techTalk \
  --allocation-method Dynamic \
  --sku Basic

az network vnet-gateway create \
  --name vnet-Gateway \
  --location eastus \
  --public-ip-address gateway-ip-address \
  --resource-group techTalk \
  --vnet hub-vnet \
  --gateway-type Vpn \
  --sku Standard \
  --vpn-type RouteBased \
  --no-wait

az network route-table create \
  --resource-group techTalk \
  --name spoke1RouteTable

az network route-table route create \
 --name spoke1ToSpoke2 \
 --resource-group techTalk \
 --route-table-name spoke1RouteTable \
 --address-prefix 10.2.1.0/24  \
 --next-hop-type VirtualNetworkGateway

az network vnet subnet update \
  --vnet-name spoke1-vnet \
  --name spoke1-subnet \
  --resource-group techTalk \
  --route-table spoke1RouteTable

az network route-table create \
  --resource-group techTalk \
  --name spoke2RouteTable

az network route-table route create \
 --name spoke2ToSpoke1 \
 --resource-group techTalk \
 --route-table-name spoke2RouteTable \
 --address-prefix 10.1.1.0/24  \
 --next-hop-type VirtualNetworkGateway 

az network vnet subnet update \
  --vnet-name spoke2-vnet \
  --name spoke2-subnet \
  --resource-group techTalk \
  --route-table spoke2RouteTable

az network vnet peering create \
    --resource-group techTalk \
    --name spoke1-Peering \
    --vnet-name hub-vnet \
    --remote-vnet spoke1-vnet \
    --allow-vnet-access \
    --allow-gateway-transit \
    --allow-forwarded-traffic

az network vnet peering create \
    --resource-group techTalk \
    --name spoke1-hub-Peering \
    --vnet-name spoke1-vnet \
    --remote-vnet hub-vnet \
    --allow-vnet-access \
    --use-remote-gateways

az network vnet peering create \
    --resource-group techTalk \
    --name spoke2-Peering \
    --vnet-name hub-vnet \
    --remote-vnet spoke2-vnet \
    --allow-vnet-access \
    --allow-gateway-transit \
    --allow-forwarded-traffic

az network vnet peering create \
    --resource-group techTalk \
    --name spoke2-hub-Peering \
    --vnet-name spoke2-vnet \
    --remote-vnet hub-vnet \
    --allow-vnet-access \
    --use-remote-gateways
    
az network nsg create -g techTalk -n spoke1-subnet-ng -l eastus
az network nsg create -g techTalk -n spoke2-subnet-ng -l eastus

az network vnet subnet update \
  --vnet-name spoke1-vnet \
  --name spoke1-subnet \
  --resource-group techTalk \
  --route-table spoke1RouteTable \
  --network-security-group spoke1-subnet-ng

az network vnet subnet update \
  --vnet-name spoke2-vnet \
  --name spoke2-subnet \
  --resource-group techTalk \
  --route-table spoke2RouteTable \
  --network-security-group spoke2-subnet-ng

az network nsg rule create --name rdpRule --nsg-name spoke1-subnet-ng --priority 200 --resource-group techTalk --access Allow --description "Allow RDP" --destination-port-ranges 3389 --direction Inbound --protocol TCP --source-address-prefixes "*"

az network nsg rule create --name rdpRule --nsg-name spoke2-subnet-ng --priority 200 --resource-group techTalk --access Allow --description "Allow RDP" --destination-port-ranges 3389 --direction Inbound --protocol TCP --source-address-prefixes "*" 

az network vnet subnet create -g techTalk --vnet-name hub-vnet --name AzureBastionSubnet --address-prefix 10.0.252.64/27

az network public-ip create --resource-group techTalk  --name bastionpip  --sku Standard --location eastus
az network bastion create --name MyBastion --public-ip-address bastionpip --resource-group techTalk  --vnet-name hub-vnet --location eastus --no-wait

# Create VM in Dev Vnet - Workload1 Subnet to test Spoke-to-Spoke communication
devWorkLoadSubNetID=$(az network vnet subnet show --resource-group techTalk  --name spoke1-subnet  --vnet-name spoke1-vnet  --query id -o tsv)
az vm create --resource-group techTalk  --name VM1 --image win2016datacenter --admin-username $VmUser --admin-password $AdminPassword --size Standard_B1s --use-unmanaged-disk --storage-sku Standard_LRS --subnet $devWorkLoadSubNetID --nsg "" --public-ip-address ""   --no-wait

# Create VM in Prod VNet - Workload1 Subnet
prodWorkLoadSubNetID=$(az network vnet subnet show --resource-group techTalk  --name spoke2-subnet  --vnet-name spoke2-vnet  --query id -o tsv)
az vm create --resource-group techTalk  --name VM2 --image win2016datacenter --admin-username $VmUser --admin-password $AdminPassword --size Standard_B1s --use-unmanaged-disk --storage-sku Standard_LRS --subnet $prodWorkLoadSubNetID --nsg "" --public-ip-address ""   --no-wait
票数 0
EN

Stack Overflow用户

发布于 2022-09-16 11:52:41

由于以下原因之一,远程桌面无法连接到远程计算机:

  1. 未启用对服务的远程访问。
  2. 通过Azure Portal关闭远程计算机,因为Start已褪色,而重新启动和停止未启用
  3. 远程计算机在网络上不可用。

要解决这个问题,请检查您的vm 资源健康状况处于健康状态,这可能会影响到Vm在蔚蓝平台上的连接。如果它不健康,你可以诊断和解决问题。

  1. 尝试重置密码配置--只有--这将有助于防止远程连接被禁用或RDP被Windows规则阻塞时的RDP配置。并尝试访问RDP

  1. 确保您已经配置了引导诊断尝试启用诊断,您可以看到引导诊断的屏幕截图,下载串行日志的屏幕快照,调查控制台日志的问题,并验证附加信息的控制台日志以确定为什么RDP在您的情况下无法运行。
  1. 尝试重置您的用户凭据,并提供用户名、密码和更新。它重置本地管理员密码并尝试访问RDP。

  1. Orelse,在虚拟机->网络中设置->,点击您的网络接口作为(web服务器) ->在网络接口上-> ip配置点击私有ip地址。

尝试将赋值更改为静态的,并提供不同的静态ip地址,并在连接到动态后保存和尝试通过RDP访问VM。

假设您无法访问RDP,请尝试按以下方式重新部署。如果通过重新部署任何底层问题或网络问题,我们可以解决这个问题,那么它将重新部署中的另一个主机中的虚拟机,并将丢失短暂的磁盘数据,并更新与VM相关的动态IP地址。

票数 2
EN

Stack Overflow用户

发布于 2022-09-21 10:41:19

你有什么样的防火墙规则?

我还有三个建议:

1)检查是否将NSG附加到VM

  • 不建议同时使用子网附加和NIC附加NSG规则。从屏幕截图中不确定是否子网附加NSG是唯一的NSG
  • 默认规则65000应该允许来自对等VNet的访问。
  • Unless you have a specific reason to, we recommend that you associate a network security group to a subnet, or a network interface, but not both. Since rules in a network security group associated to a subnet can conflict with rules in a network security group associated to a network interface, you can have unexpected communication problems that require troubleshooting.参考文献:https://learn.microsoft.com/en-us/azure/virtual-network/network-security-group-how-it-works

2)检查RDP设置

  • 为了使RDP正常工作,我个人不得不在串行控制台上运行reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v MaxOutstandingConnectionsx /t REG_DWORD /d 10000

3)捕获网络流量

  • 捕获目标子网上的网络流量以查看
    • 如果流量通过防火墙
    • 并查看目标VM是否为初始SYN段发送ACK数据包

  • 然后将捕获的流量与防火墙规则、统计数据和日志进行比较,以确定防火墙是否阻塞了访问。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73738270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档