Azure RM NSG端口转发不起作用

我有一个Debian 6.x框,我需要移动到Azure。 在移动之前,我确定SSH在任何端口上都在监听,Apache也一样。 我的NSG拥有所有正确的端口(现在是22,443)。 我上传了VHD,然后使用了下面的PowerShell命令来创build基于VHD的VM:

$vnet = get-AzureRmVirtualNetwork -Name $VnetName -ResourceGroupName $VnetRG $subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "$SubnetName" -VirtualNetwork $vnet $pip = Get-AzureRmPublicIpAddress -Name "$pipName" -ResourceGroupName $resourceGroupName $NSG = Get-AzureRmNetworkSecurityGroup -Name "$NSGName" -ResourceGroupName $resourceGroupName $nic = New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name $nicName -Subnet $subnet -Location $location -PrivateIpAddress $newVMIP -DnsServer $dnsServer1,$dnsServer2 -PublicIpAddress $pip -NetworkSecurityGroup $NSG $newVM = New-AzureRmVMConfig -VMName $newVMName -VMSize $newVMSize | Add-AzureRmVMNetworkInterface -Id $nic.Id | Set-AzureRmVMOSDisk -VhdUri $vhdPath -Name $diskname -CreateOption attach -Linux -Caching ReadWrite New-AzureRMVM -ResourceGroupName $resourceGroupName -Location $location -VM $newVM -DisableBginfoExtension 

我可以看到机器正在运行,因为我可以在启动诊断中查看自动login的桌面。 但是,当我尝试SSH或当我尝试访问超过22和443的网站,它不会返回任何响应。 Telnet超时,它的行为就像端口根本没有转发。

我明白,因为它是Debian 6.x,所以不支持waagent。 但我不应该需要waagent端口转发,我应该吗? 从我对networking的理解以及我在MSDN论坛上看到的内容来看,“端口转发对于最终机器应该是不可见的,因为公众访问了公共端口,并且您的VM在内部端口上接收到了。 (https://social.msdn.microsoft.com/Forums/en-US/bd93f5cb-a674-4b9c-aa5a-9f6e7b364f2c/port-forwarding-still-broken?forum=WAVirtualMachinesforWindows)

我是否在我的PowerShell脚本中input错误或错过了某些内容? 有任何想法吗?

我已经尝试删除并重新创build虚拟机,我已经尝试重新上传VHD文件。 我不得不把它从VHDX转换到VHD,但是这不应该因为它实际上启动,我看到屏幕上的启动诊断。

我使用的NSG可以通过门户或者PowerShell为其他新创build的机器工作,而不是这个上传的机器,这让我觉得我已经在脚本中弄了一些东西。 一切都表明,它是22和443端口。 以下是“有效安全规则”刀片的截屏 : 规则截图

本地机器上的iptables是空的,如图所示。

奇怪的是,我无法从同一个虚拟networking上的另一台计算机进行SSH连接。 我尝试通过https://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-linux-debian-create-upload-vhd?toc=%2Fazure%2Fvirtual-machines% 2Flinux%2Ftoc.json,但是因为它是Debian 6,所以waagent不会安装。 但是,我不应该需要一台机器上的代理端口转发工作。 没有其他虚拟化技术需要NAT的代理工作。

编辑 – 这是build议作为StackOverflow的副本。 我最初在那里问了这个问题,但是每个人都build议我在这里发表我的问题。 所以我这样做,标记StackOverflow答案作为答案。

Debian 6不能在Azure中运行。 您必须在Hyper-V中使用“传统networking适配器”,而这在Azure中不起作用。 或者,您将不得不重新编译内核以支持NIC的Hyper-V驱动程序,这也不被推荐。 看起来我必须尝试将数据迁移到新的服务器。

根据您的描述,请确保虚拟机中没有防火墙来访问您的虚拟机。 另外,您可以检查是否将NGS规则关联到Vnet的子网。

注意:NSG可以关联到VM和子网。

有关如何pipe理NSG的更多信息请参阅本文 。

此外,你可以检查你准备好的VHD作为链接 。